Skip to content

Naver Boostcamp AI Tech 7기 (CV 트랙) - level1 프로젝트 : Sketch data multi-class classification (1st🥇)

Notifications You must be signed in to change notification settings

Batwan01/level1-imageclassification-cv-18

 
 

Repository files navigation

딥하조

대회 타이틀

Leaderboard

리더보드

팀원 소개

임찬혁 서동환 🦇박지완 김태한 🐈임정아 🐡이은아

대회 소개

image

Sketch 이미지 분류 경진대회는 주어진 데이터를 활용하여 모델을 제작하고 어떤 객체를 나타내는지 분류하는 대회입니다.

Computer Vision에서는 다양한 형태의 이미지 데이터가 활용되고 있습니다. 이 중, 비정형 데이터의 정확한 인식과 분류는 여전히 해결해야 할 주요 과제로 자리잡고 있습니다. 특히 사진과 같은 일반 이미지 데이터에 기반하여 발전을 이루어나아가고 있습니다.

하지만 일상의 사진과 다르게 스케치는 인간의 상상력과 개념 이해를 반영하는 추상적이고 단순화된 형태의 이미지입니다. 이러한 스케치 데이터는 색상, 질감, 세부적인 형태가 비교적 결여되어 있으며, 대신에 기본적인 형태와 구조에 초점을 맞춥니다. 이는 스케치가 실제 객체의 본질적 특징을 간결하게 표현하는데에 중점을 두고 있다는 점을 보여줍니다.

이러한 스케치 데이터의 특성을 이해하고 스케치 이미지를 통해 모델이 객체의 기본적인 형태와 구조를 학습하고 인식하도록 함으로써, 일반적인 이미지 데이터와의 차이점을 이해하고 또 다른 관점에 대한 모델 개발 역량을 높이는데에 초점을 두었습니다. 이를 통해 실제 세계의 복잡하고 다양한 이미지 데이터에 대한 창의적인 접근방법과 처리 능력을 높일 수 있습니다. 또한, 스케치 데이터를 활용하는 인공지능 모델은 디지털 예술, 게임 개발, 교육 콘텐츠 생성 등 다양한 분야에서 응용될 수 있습니다.

사용된 데이터셋 정보

데이터셋 설명

원본 ImageNet Sketch 데이터셋은 50,889개의 이미지 데이터로 구성되어 있으며, 1,000개의 객체에 대해 각각 대략 50개의 이미지를 포함하고 있습니다. 이 데이터셋은 일반적인 객체들의 핸드 드로잉 이미지로 구성되어 있으며, 실제 객체를 대표하는 다양한 스타일과 특징을 보여줍니다.

이번 Sketch 이미지 분류 경진대회에서 제공되는 데이터셋은 네이버 커넥트재단 부스트캠프 AI Tech에서 원본 데이터를 직접 검수하고 정제한 것입니다. 1,000개의 클래스 중 이미지 수량이 많은 상위 500개의 객체를 선정하였으며, 총 25,035개의 이미지 데이터가 포함되어 있습니다. 해당 이미지 데이터는 다음과 같이 구성됩니다.

  • 학습 데이터: 15,021개
  • Private & Public 평가 데이터: 10,014개
data/
│
├── sample_submission.csv
├── test.csv
├── train.csv
│
├── test/
│   ├── 0.JPEG
│   ├── 1.JPEG
│   ├── 2.JPEG
│   ├── ...
│
├── train/
│   ├── n01443537/
│   │   ├── sketch_0.JPEG
│   │   ├── sketch_1.JPEG
│   │   ├── sketch_2.JPEG    
│   │   ├── ...
│   │
│   ├── n01484850/
│   │   ├── sketch_0.JPEG
│   │   ├── sketch_1.JPEG
│   │   ├── sketch_2.JPEG    
│   │   ├── ...
│   │   
│   ├── ... 

License

이 데이터셋은 Creative Commons Attribution 4.0 International License (CC BY 4.0)에 따라 사용됩니다. 자세한 내용은 라이선스 링크에서 확인할 수 있습니다.

이 라이선스 하에서, 여러분은 다음과 같은 권리를 가집니다:

  • 공유 — 어떤 매체나 형식으로도 데이터를 복사, 배포할 수 있습니다.
  • 변경 — 데이터를 리믹스, 변형, 수정하고 상업적 목적으로도 사용할 수 있습니다. 단, 다음의 조건을 준수해야 합니다:
  • 저작자 표시 — 적절한 출처를 제공하고, 라이선스 링크를 명시하며, 변경 여부를 표시해야 합니다. 자세한 내용은 Creative Commons Attribution 4.0 International License에서 확인할 수 있습니다.

Project Timeline

Model select

  • backbone 모델 탐색

image

  • Fine-tuning layers

    • MLP-3 : Linear(1024, 1024)-ReLU()-Linear(1024, 500)
    • Linear :(1024, 500)
  • Presiction method

    • train-validation split : train set을 한 번 나누어 성능을 평가하고 테스트 합니다.
    • 5-fold CV : 5-fold cross validation 방법을 통해 모델을 다섯 번 학습하고 voting 하여 테스트 합니다.
  • 모델 선정

    • EVA02-large
    • EVA-giant
  • 하이퍼파라미터 튜닝

하이퍼파라미터튜닝

문제 정의

  • 문제 1 : 수직으로 뒤집힌 Sketch 이미지 예측에 대한 취약점을 발견했습니다.

    -> 해결방법 1 : Augmentations

  • 문제 2 : Sketch 이미지 데이터의 특성에 따른 취약점을 발견했습니다.

    • 단순한 정보를 가지고 있지만, 같은 클래스라도 다양한 변형 발생해서 모델이 쉽게 혼란스러워집니다.

    • 초기 학습 단계에서 복잡한 변형이 포함된 데이터를 학습 시, 모델이 패턴을 제대로 학습하지 못합니다.

    • 데이터의 불규칙성과 디테일 부족으로 인해, 모델이 과적합 되거나, 다양한 변형에 잘 대응하지 못합니다.

      -> 해결방법 2 : Curriculum learning

Augmentations

증강 성능
  • HorizontalFlip
  • VerticalFlip
  • Rotate

- VerticalFlip (수직 뒤집기) 증강을 추가했을 때 성능이 좋아짐을 확인했습니다.

Curriculum learning

  • 데이터 증강 관점에서 Curriculum learning을 수행합니다.
Epoch Range 적용 증강
0 - 5 없음
5 - 10 수평/수직 뒤집기, 회전
10 - 15 수평/수직 뒤집기, 회전, Elastic 변형, Grid 왜곡
curri
  • (orange : train) (blue : test)
  • 증강이 복잡해질 때마다, 정확도가 떨어지고 다시 올라가는 과정에서 모델이 보다 복잡한 패턴 학습합니다.
  • 증강이 바뀌는 5 epoch 마다 Learning rate를 감소시켜 갑작스러운 변화로부터 학습을 안정화합니다.
  • 최종적으로 단일 모델 최고 성능을 달성했습니다. (Accuracy : 0.9370)

Voting & Ensemble

  • Soft Voting & Hard Voting

image

  • Ensemble

    • Soft-Soft
    Snipaste_2024-10-11_21-01-08
    • Soft-Hard
    Snipaste_2024-10-11_21-01-19
    • Hard-Hard
    Snipaste_2024-10-11_21-01-27
  • Ensemble 성능 측정

Snipaste_2024-10-11_21-02-35
  • Soft-Soft, Hard-Hard 앙상블 Method 모두 비슷하게 좋은 성능을 보입니다. (Accuracy : 0.939)

  • 다음 모델들을 Hard-Hard 앙상블한 모델이 가장 좋은 성능을 보입니다. (Accuracy : 0.94)

    • EVA02-large-Linear
    • EVA-giant-Linear
    • EVA02-large-curriculum-mlp-3

About

Naver Boostcamp AI Tech 7기 (CV 트랙) - level1 프로젝트 : Sketch data multi-class classification (1st🥇)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 95.7%
  • Shell 4.3%