분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
월간 데이콘 Computer Vision 이상치 탐지 알고리즘 경진대회
소소한 대회 후기 Public: 0.74977
우선 저는 업로드하는 기준으로 Public LB 0.74977입니다
tfhub.dev 에서 Pertained efficientnet V2-L or XL 을 기준으로 Classification Task를 진행했습니다
이런 과제를 하다보면 마지막 제출물로 test하기보단 train 데이터를 통해 염두한 이론을 확인하는 Trian-Valid split을 하는게 좋습니다
데이터에 대한 접근은 우선 가장 적은 갯수의 label을 고려하여 4 folds 로 나눠서 진행했습니다
이 대회의 Metric은 F1-Macro인데, 간단히 얘기하자면 F1 Micro는 많이 나오는 데이터를 잘 신경쓸 수록 결과값이 좋지만
Macro같은 경우는 모든 데이터에 대해 동등하게 결과가 잘 나와야합니다
그렇기 때문에 어떻게 모든 데이터를 동등하게 처리하냐가 중요한 관건입니다
Imbalance를 해결하는 방벙은 Undersampling, Oversampling, label weight, SMOTE 몇가지 방법이 있지만 이미지 데이터 셋이고
Undersampling을 하기엔 데이터의 양이 적다고 생각했습니다.
그런데 label weight를 통해 처리를 한다면 마치 batch가 구성되는 것에 다라서 learning rate가 달라지는 현상과 동일할 것 같기도하고
주어진 train 은 몇천개이긴하지만 oversampling을 해서 몇만개 정도가 되더라도 학습하는데 큰 지장이 없기 떄문에 Oversampling을 진행했습니다
(TFRecord 상의 oversampling에 대한 참고자료 https://stackoverflow.com/a/47236466/17382999 )
이미지 clasification을 하다보면 항상 Augmentation을 통해 주어진 데이터보다 좀 더 풍성하게 학습하고 generalization과 regularization이 중요합니다
하지만 주어진 task는 일반 classification과는 다르게 신중하게 적용해야하는 이유가
metal_nut 같은 경우는 image를 flip한다고하면 label이 달라지지만 다른 경우는 그렇지 않고 또 이미지 배경이 밝거나 어둡기도하기 때문에
class에 따라 최적의 augmentation이 다를 수 있습니다
그래서 결국 문제를 2가지 단계로 나누어 해결했습니다
Taks 1 이미지가 어떤 Class인지 구분하는 Classification
Task 2 Class별로 최적의 hyperparameter(augmentation 유형을 찾고,) 이를 통해 Classification하는 방식
Task 1에선 GridMask와 imagenet preprocessing만 했더니 cross validation에서 충분히 좋은 결과가 나왔고
Taks 2에선 hue saturation brightness, contrast값 조정 뿐만 아니라 정도를 몇개 단계로 나눠 rotation, scaling, translation, flip 등을 진행한뒤 GridMask와 imagenet preprocessing만 진행했습니다 ( https://www.kaggle.com/code/saife245/cutmix-vs-mixup-vs-gridmask-vs-cutout#GridMask-data-augmentation )
그랬더니 학습에 사용되지 않은 Validation set에선, Macro F1 Score가 0.91~0.95 정도가 나왔습니다
(* Carpet, Capsule, Transistor 의 경우는 평균을 꽤 깎아먹던데 좋은 접근 소개해주시면 감사합니다)
그래서 급하게 최종 재학습을 하면서 결과를 제출하면서 test 이미지를 처음 봤는데
test 이미지는 train 데이터와는 다르게 shear 등 augmentation이 적용된 이미지들이 많았습니다
배운 것
건의하고 싶은 것
급하게 횡설수설하게 작성했는데 궁금한점 댓글 남겨주시면 여유될 떄 답변 드리겠습니다
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
멋진 후기네요~