<---google adsense---> <---/google adsense---> 랜드마크 분류 AI 경진대회 참여 후기 :: noti note
반응형

주최

데이콘, 크라우드웍스, 피씨엔

대회 개요

  • 국내 인공지능 기반 Large-Scale 이미지 분류 알고리즘 개발 저변 확대 모색
  • 고성능 딥러닝 알고리즘의 확보를 통한 개발기간의 단축과 개발비용 감소
  • 불균형 데이터셋을 해결하기 위한 집단지성 활용

개발 목표

대용량 이미지에서 랜드마크 이미지를 분류하는 인공지능 알고리즘 개발

분야

컴퓨터 비전 | 이미지 분류 | GAP

링크

dacon.io/competitions/official/235585/overview/prize#prize-info

 

랜드마크 분류 AI 경진대회

출처 : DACON - Data Science Competition

dacon.io

 

후기

이 대회는 정말 무지막지한 리소스가 필요했던 것으로 기억이 난다. 당시에 2080ti라는 좋은 리소스를 가지고 있었음에도 불구하고 2~3일을 학습해야만 어느정도 결과를 볼 수 있었었다.(물론 대회하면서 회사 업무를 병행하는 것이 쉽지도 않았다.)

 

랜드마크 분류대회는 Computer Vision분야에 몸을 담고 있거나, Kaggle을 좀 해보신 분이라면 다들 알고 계실거라 생각한다. Kaggle에서 매년 진행하는 대회이기 때문이기도 하고 크고 많은 이미지를 학습해야 할 때 참고할만한 code와 discussion이 많기 때문이다.

 

이 대회를 참가했던 이유는 간단하다.

1. 2080ti 구매

2. 늘 kaggle landmark clf 대회 참가하고 싶었다.

3. 데이콘대회에 캐글 수상자 솔루션을 적용 시킨다면 어떨까? 라는 생각이 들었다.

 

위 2가지 이유 때문인데 사실 2번이 1번에 종속되어 있다. 로컬gpu가 없었기 때문에 2번을 하지 못했었다. 물론 코랩을 사용해서 할 수도 있긴 하겠지만, 코랩 프로를 써본 사람으로써 중간에 자꾸 끊기는 것도 짜증이 났었고 24시간 제한 시간도 불편했었다.(그럼에도 불구하고 코랩을 이용해서 딥러닝 하시는 분들은 리스펙합니다)

 

이 대회를 처음으로 pytorch-lighting을 사용해봤는데, multi-gpu를 사용하시는 분들에게 유용할 것 같다는 생각이 들었는데 gpu할당이 쉬웠기 때문이다. 나중에 2개 이상의 gpu를 사용하시는 분들이라면 pytorch-lighting을 추천한다.

 

참고로 데이콘의 랜드마크 대회와 캐글의 랜드마크 대회는 성격이 꽤 다르므로 참고하길 바란다.(캐글의 경우 라벨이 없는 데이터도 있었기 때문에, 이를 극복하려는 trial and error가 많이 있었던 것으로 안다. 나의 경우에는 이러한 부분을 제거하고 모델 아키텍처, 학습/검정 방법, 앙상블 기법 등을 많이 사용했다.

 

솔루션

늘 그렇듯이 베이스라인 모델을 먼저 구축하고 다양한 실험을 하는 것으로 목표를 세웠다.

 

단, 이번에는 캐글 솔루션을 이해해야 했기 때문에 이 부분에서 상당한 시간이 소요되었다. 대회를 참가했었도 아니여서 대회 자체에 대한 이해도도 낮았었고 이는 늘 "why?"라는 의문부호가 따라다녔다.

 

 

데이터가 매우 많았고 large image 특성 상 256x256으로 resize을 한 뒤 학습을 하여도 gradient exploding현상이 발생하였다. 이 현상에 대한 원인을 정확히 진단을 하진 못하였지만 조사해본 결과 high lr, large scale image 등이 있었다. 최대한 방지하기 위해서 batch size와 start lr을 컨트롤 했었다.

 

 

 

 

'CV Strategy'

Multi-Stratified KFold를 이용하여 각 랜드마크 클래스당 추출하여 진행했다. 

아쉬운 점은 5fold를 하지 못한점이다.(학습이 느렸기 때문에)

 

 

'Model'

Efficientnet b1~b3를 사용하였다. (앙상블)

 

 

'Model Architecture'

차후에 마저 작성

 

 

'Augmentation'

이 대회의 핵심은 이미지 사이즈였다. 후에 상위권에 들은 팀에게 들은 이야기인데 이미지 사이즈를 크게 해서 학습을 한 후 낮은 lr로 깊은 학습을 진행했다고 했다. 점수차이가 오밀조밀했기 때문에 이러한 테크닉이 유효했던 것 같다.

 

 

'Learning Technique'

차후에 마저 작성

 

 

'Ensemble'

simple average ensemble을 하였다.(b1~b3)

 

최종 결과

8/436

결과는 생각보다 아쉬웠지만 그래도 만족한다.

내가 가진 리소스를 최대한 활용했다고 생각하기 때문에...

 

 

참고

solution github

github.com/hyeonho1028/landmark-classification

 

hyeonho1028/landmark-classification

랜드마크 분류 AI경진대회에서 캐글 1~3등 솔루션을 적용했습니다. Contribute to hyeonho1028/landmark-classification development by creating an account on GitHub.

github.com

kaggle solution

https://www.kaggle.com/c/landmark-recognition-2020/discussion/187821
https://www.kaggle.com/c/landmark-recognition-2020/discussion/190983

 

Google Landmark Recognition 2020

Label famous (and not-so-famous) landmarks in images

www.kaggle.com

 

Google Landmark Recognition 2020

Label famous (and not-so-famous) landmarks in images

www.kaggle.com

 

반응형

+ Recent posts