Classification Wrap-up Reports
CV-04조 Cㅏ이Vㅓ즈
1. 프로젝트 개요
A. 개요
카메라로 촬영된 얼굴 이미지를 통해 이미지내의 사람의 성별, 연령 그리고 마스크 착용 여부를 분류하는 모델을 개발하는 것이 목표입니다. 4,500명의 사람들의 이미지 및 라벨링 값이 주어지며, 주어진 eval 데이터에 대해 이미지에 대한 분류 값 (18개 클래스)을 출력해야 합니다.
B. 환경
-
컴퓨팅 환경
5인 1팀, 인당 V100 서버를 VSCode와 SSH를 연결해 사용
-
개발 환경
VScode
-
협업 환경
Slack, Notion, Github, Weight and Bias
-
의사소통
Slack, Zoom
2. 팀 구성 및 역할
김찬우
- CLIP backbone 모델 설계, 1 head와 3 head 모델에 대한 실험 및 분석, pretrained heads를 활용한 모델 실험, 엑셀을 활용한 오류 라벨, 자주 틀리는 사진 분석 및 Hard voting 프로그램 개발
설훈
- EDA, TinyViT backbone모델 설계, 실험 및 하이퍼 파라미터 튜닝, K-fold 기법 제안 및 코드 작성
이도형
- EDA, stylegan을 활용한 데이터 증강, WeigtedRandomSampler 적용
이현지
- 오류 라벨링 조사, baseline 코드 제작, Davit/Beit-v2 모델 실험, 데이터 배경 삭제 실험
조민지
- WandB를 통한 실험 logging 코드 작성, cutmix augmentation 실험, backbone (EfficientNetB4, ViT L/14) 모델 실험, ensemble 코드 작성, validation에 대한 model prediction 분석 노트북 작성
조성혁
- 프로젝트 사전 분석 및 기본적인 팀의 프로젝트 방향성 정립, 프로젝트 템플릿 제안(pytorch template), EDA, SwinTransformer 모델 실험, Focal Loss의 weight 적용 제안 및 코드 배포, Ensemble 코드 작성
3. 프로젝트 수행 절차 및 방법
타임라인
4. 프로젝트 수행 결과
A. 데이터 분석
EDA

데이터 내 전체 class별 분포
- 데이터의 불균형
- 전체 클래스의 데이터 중 60대 이상 노인 연령대의 데이터가 평균데이터의 수준에서의 7~10% 수준이여서 데이터가 불균형합니다.
- 성별의 데이터도 61%, 48% 수준으로 불균형합니다.
- 부족한 클래스의 데이터로 인해 데이터셋의 증강이나 변환방식이 필요하다고 판단했습니다.
- 주어진 데이터셋의 본질
- 우리에게 주어진 데이터셋은 성별 데이터셋도, 연령대 데이터셋도 아니고 이미지 속 사람이 마스크를 썼는지, 안썼는지, 잘못된 마스크 착용(일명 코스크, 턱스크 등 마스크를 올바로 착용하지 않거나 마스크가 아닌 것을 착용)인지에 대한 데이터셋이므로 데이터가 수집된 목적이 성별과 연령대가 아니기 때문에 클래스 별 불균형이 충분히 있을 수 있고, 그렇기에 더욱 어려운 문제라는 생각이 듭니다.

학습 데이터 내 연령대별 분포

학습 데이터 내 성별 분포 (여:남≈1.6:1)
- 이미지 데이터셋의 변환

- 전체 클래스 데이터를 umap을 활용하여 plot을 확인한 결과, 군집없이 랜덤하게 뿌려지는 것을 확인했습니다. 특정 데이터의 클래스가 특징이 없고 데이터 축소 기법을 활용하여 데이터를 축소하는 방법이 힘듦을 알 수가 있습니다.
라벨링 오류 수정
학습 이미지 데이터에 대한 정보가 train.csv로 주어졌으며, 성별과 나이는 이미지가 들어있는 폴더명, 마스크 상태는 이미지 명에서도 표현되어 있었습니다. 나이에 대한 라벨링 값은 이미지만으로는 오류를 판단하기 힘들지만, 마스크 상태와 성별에 대해서는 오류를 찾을 수 있어 이미지를 통해 라벨링 오류 수정을 시도했습니다.