본문 바로가기
5. 활동/KT AIVLE AI 3기

KT AIVLE AI 3기 ┃ 8주차(3.20 ~ 3.24) - 미니 프로젝트 3차

by 로기(dev-loggi) 2023. 3. 21.

8주차(3.20 ~ 3.24) 일정

날짜 주제 카테고리
3/20 미니 프로젝트 3차 - (1) CNN
3/21 미니 프로젝트 3차 - (1) CNN
3/22 미니 프로젝트 3차 - (1) CNN
3/23 미니 프로젝트 3차 - (2) Object Detection / YOLO
3/24 미니 프로젝트 3차 - (2) Object Detection / YOLO

 

3/20(월) ~ 3/22(수) ┃ 미니 프로젝트 3차 - (1)

1) 차량 파손 여부 분류하기 

  • 리스트 1
  • 리스트 2

 

더보기

접은글

 

3/23(목) ~ 3/24(금) ┃ 미니 프로젝트 3차 - (2)

1) 저시력자들을 위한 원화 화폐 분류

  • 약 5천개의 화폐 이미지 데이터셋
  • class: 10원/50원/100원/500원/1000원/5000원/10000원/50000원
  • Object Detection 을 활용한 화폐 이미지 클래스 분류

2) 데이터 전처리

  • train / validation set 분리
  • 메타데이터(json)에서 클래스, 위치 정보 추출
  • yaml 파일 생성
  • 전처리에서 사용된 파이썬 라이브러리: `os`, `shutil`, `glob`, `zipfile`, `yaml`, `json`

주어진 데이터셋을 학습에 사용될 train/valid set으로 8:2 비율로 분리하였다. 여기서 우리 팀은 class balance를 맞추기 위해 각각의 class 별로 split 작업을 진행하였는데, 이것이 이후 전체 결과 발표에서 해당 작업을 안한 팀들에 비해 분류 정확도가 높게 나왔다.

그 다음 json 형식으로 구성된 메타데이터에서 class와 위치 정보를 추출하여 YOLO 모델의 데이터 형식에 맞게 label 파일을 생성해주었다. 이렇게 만들어진 데이터셋의 메타정보를 담는 yaml 파일을 생성해 주는 것으로 전처리 작업을 완료하였다.

여기서 다른 팀원들은 모두 Gdrive 내에서 전처리 작업을 진행하였는데, 드라이브 용량, 속도, mounting, 기타 오류 발생 가능성 등 여러가지 측면에서 압축 파일을 Colab 인스턴스 내부로 가져와서 전처리를 시작하는 것이 훨씬 효율적임을 알게 되었다.

3) 학습 / 평가 / 검출

  • YOLOv5 모델 라이브러리 설치
  • Pretrained weights 다운로드
  • 학습: train.py
  • YOLOv5 Pretrained Model Object Detection
  • 제공된 화폐(동전, 지폐) 데이터셋은 모두 single object로 구성된 총 5천개의 이미지 파일이며 대부분이 화질, 중앙 배치, 가려짐 등의 변수 없이 다양성이 부족한 데이터셋이 제공되었다
  • 그 결과, 별도의 추가적인 작업 없이 YOLO 모델의 기본 설정값으로 학습을 했음에도 모든 클래스에서 mAP가 0.99로 매우 높은 정확도를 보였다
  • 처음 학습에 사용된 YOLOv5m Pretrained Model은 정확도가 매우 높았지만 학습 시간이 총 3시간 가량으로 너무 오래 걸렸기 때문에 YOLOv5n 모델을 선택하였다
    (모델의 성능과 학습 시간은 trade off 관계이며 이에 따른 가장 적절한 모델과 파라미터를 정하는 것도 중요한 요소이다)
  • 다양성이 부족한 데이터셋의 문제를 해결하기 위해 Data Augmentation이 필요하다는 방안을 고안하였고, YOLO 모델의 Hyperparameter Evolution 가이드를 통해 해결할 수 있었다
  • YOLO 모델은 학습 과정에서 기본적으로 학습 데이터셋에 mosaic augmentation(default가 100%) 방식을 적용한다
  • YOLO 모델의 `data/hyps`에서 Data Augmentation Hyperparameters 조정이 가능하며, 주어진 데이터셋의 특성을 고려하여 rotation, scale, translate 값을 조정하였다
  • YOLO 모델은 Albumentation을 지원한다
    (https://github.com/ultralytics/yolov5/pull/3882)
  • 고수의 솔루션: swin transformer, attention weights, Albumentations

 

에이블 교육 과정에서 최고의 장점 중 하나는 각 미니 프로젝트 마지막 날 교육생 전원이 모여서 몇 개의 팀을 추려 발표를 하게 되는데, 다양한 사람들의 지식과 생각을 공유할 수 있다는 점이었다. 특히 한 주 동안 CNN 모델을 설계하면서 하이퍼파라미터나 계층 구조 등에 대해 많은 공부와 고민들이 있었는데, 혼자만의 실험 결과를 통해 얻어진 내용들과 여러 사람의 다양한 실험 결과를 비교해보며 배울 수 있었던 점이 정말 좋았다.

교육 초기에는 AI 분야에 대한 경험이 전무한 상태여서 교육 과정을 따라가기에 급급했는데 이번 미니 프로젝트에서는 추가적인 실험까지 해보며 좀 더 깊고 많은 내용들까지 학습할 수 있어서 재미와 자신감이 더욱 생길 수 있었던 시간이었다.

 

 

 

14. Object Detection Trend (2019~2021.08)

안녕하세요. 이번 글에서는 2019년도 이후 부터 현재 글을 쓰고 있는 시점인 2021년 (9월) 까지의 object detection (based on deep learning) 모델에 대해서 소개하려고 합니다. 현재 제 블로그에 작성한 Object d

89douner.tistory.com

 

댓글