본문 바로가기

VISION

[이미지 분류 프로젝트] 데이콘 도배 하자 (2) - 인코딩 해결,이미지 증강

이번 주는 인코딩 관련 문제 해결 & 이미지 증강을 통한 성능 향상에

초점을 맞춰서 진행 해 보았다.

 

우선 인코딩 이슈..

지난번에 점수 0 뜬거 보고

아무리 데이터의 질이 나쁘더라도 이럴 수 있나..?

뭐 클래스 불균형이 너무 심해서 그런갑다 했는데 무슨

파일 뜯어보니 인코딩이 엉망이었다.

 

 

 

무엇이 그렇겗?귱금하슇죣??

 

지난번 자모분리현상 부터 왜이런진 모르겠는데..

ANSI로 인코딩 하면 육안상 괜찮은데 데이콘에서 받아들이지 못해서 점수가 0으로 나오고,

utf-8은 위 사진처럼 미친듯이 깨지더라

 

그래서 혼자 터득해본 방법은

 

1. csv를 메모장으로 열기

 

2. utf-8(BOM) 으로 저장하기

그럼 이렇게 이쁜 결과를 얻을 수 있다.

 

나중에 알고보니 그냥 to_csv 할 때 

encoding = 'utf-8-sig' 옵션을 추가해주면 되더라.

 

utf-8-sig : 서명이 있는 utf-8, 즉 UTF-8 with BOM

BOM : Byte Order Mark. 

 


이미지 증강은 성능 향상을 위해 거의 필수적이었다. 

 

애초에 가구수정, 반점, 틈새과다 등의 항목들은

이미지가 20개도 되지 않았다.

여기서 item 별 유의미한 특징을 뽑아내는 건 사람도 힘들겠더라

 

그래서 우선 단순 증강들을 사용해

클래스별 개수의 전반적인 비율을 비슷하게끔 하고자 했다.

 

데이터 증강에 관해서는 따로 포스팅 하도록 하겠다.

 

 

가장 데이터가 많았던 훼손을 타 변수들로 나눈 결과이다.

 

목표는 다른 데이터들도 '훼손'과 비슷한 수를 갖게끔 이미지를 증강시키는 것. 

그래서 크게 세 그룹으로 나누어 각기 다른 개수의 증강을 적용했다.

 

기존 데이터에 이미지 변형을 시도할 수록 개수가 2의 지수로 증가한다.

ex) flip과 crop을 적용시키는 경우

      기존 데이터 -> 기존 데이터 + flip 데이터 -> 기존 데이터 + flip 데이터 + crop(기존 데이터 + flip 데이터)

 

그 다음 증강별 transform을 정리해주고

 

 

폴더 명과 증강 종류를 input시키면

기존 폴더에 증강된 이미지를 넣도록 함수를 만들어 주었다.

 

 

열심히 돌아가는 친구들

 

 

우선 이렇게 증강을 통해 성능 개선 -> 최적의 증강 세트 파악 -> 최적의 모델 파악

-> 하이퍼파라미터 튜닝의 과정을 거쳐보려는 원대한 꿈이 있었으나

증강된 데이터를 바탕으로 동일한 efficientnet_b0에 전이학습 해본 결과

 

 

오히려 점수가 낮아지는 기현상

 

마지막에 auto augmentation을 넣어서 그렇지 않을까 싶기도 하다

아니면 전체적으로 내가 한 증강이 도움이 되는 방향이 아닌건지..

 

이미지 특징별로 도움이 되는 증강방식이 존재할텐데

그냥 막 때려버려서 모델이 삼키길 거부하는 듯 하다

 

증강에 대한 제대로된 공부를 통해 보완시켜보겠다