AIVLE TIL ('23.03.23) 3차 미니프로젝트 5일차

cjkangme·2023년 3월 24일
0

에이블스쿨

목록 보기
42/81
post-custom-banner

무엇을 했나?

YOLOv8 모델링

  • 올해 초 출시된 YOLOv8 모델을 Docs를 통해 익히면서 사용해보았다.
  • 기존에는 git clone을 통해 모델을 가져와 파이썬 파일을 실행하는 식으로 사용했지만, V8에서는 ultralytics 패키지를 통해 고수준 API를 제공한다.
  • 수업에서 가르쳐 준대로만 사용하다가, 공식문서를 통해 사용법을 익히고, 다양한 args를 사용해보면서 처음 보는 API라도 적어도 실행은 할 수 있게된 것 같다.

YOLO Data Augmentation

  • 학습 데이터의 화폐들은 화면 중앙에 반듯하게 놓인 사진만 존재하기 때문에, 조금만 지폐가 회전해 있거나, 왜곡이 생기면 object로 인식하지 못하는 문제점이 있었다.
  • YOLO도 Augmentation을 통한 학습이 가능할 것이라 생각하였고, 실행파일과 독스를 확인한 끝에 방법을 찾을 수 있었다.

hyp.scratch-low.yaml

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# Hyperparameters for low-augmentation COCO training from scratch
# python train.py --batch 64 --cfg yolov5n6.yaml --weights '' --data coco.yaml --img 640 --epochs 300 --linear
# See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials

lr0: 0.01  # initial learning rate (SGD=1E-2, Adam=1E-3)
lrf: 0.01  # final OneCycleLR learning rate (lr0 * lrf)
momentum: 0.937  # SGD momentum/Adam beta1
weight_decay: 0.0005  # optimizer weight decay 5e-4
warmup_epochs: 3.0  # warmup epochs (fractions ok)

...

degrees: 0.0  # image rotation (+/- deg)
translate: 0.1  # image translation (+/- fraction)
scale: 0.5  # image scale (+/- gain)
shear: 0.0  # image shear (+/- deg)
perspective: 0.0  # image perspective (+/- fraction), range 0-0.001
flipud: 0.0  # image flip up-down (probability)
fliplr: 0.5  # image flip left-right (probability)
mosaic: 1.0  # image mosaic (probability)
  • YOLOv5 기준 클론 해온 파일 중 hyp.scratch-low.yaml이라는 폴더가 있다.
  • 여기에서 optimizer의 하이퍼파라미터 설정과 augmentation 파라미터 설정을 할 수 있다.
  • 모델링 학습 시 이를 적용하고 싶다면 --hyp <yaml path>으로 파일 위치를 알려주면 된다.

  • rotation, shear 등이 잘 들어갔음을 확인할 수 있다.
  • 또한 결과적으로 Augmentation을 했을 때 실제 데이터에 대한 감지 성능이 더욱 증가하였다.

좌 : Augmentation 미적용, 우 : Augmentation 적용

  • 동일한 모델을 사용하여 학습했을 때 기존에는 화폐가 조금만 회전에도 대부분 감지하지 못했지만, augmentation 적용 후에는 대체로 잘 감지했다.
  • 그러나 여전히 조금이라도 형태가 변하거나(구겨짐 등) 사진 각도가 틀어지면 잘 감지하지 못했다
    -> 해당 유형이 반영된 학습 데이터셋 필요

발표자료 제작 및 발표준비

  • 1시간 가량이 소요되는 모델링 시간동안 발표자료를 제작했기 때문에 시간이 촉박하지는 않았다.
  • 구글 프레젠테이션을 이용해 모두가 동시에 협업이 가능했던 것이 빠르게 발표자료를 제작하는 것에 도움이 되었다.

발표를 통해 새로 배운 것들

Albumentations

https://albumentations.ai/docs/

  • 빠르고 다양한 이미지 Augmentation을 제공하는 API이다.
  • 무엇보다 Gamma나 Contrast 등 명도/채도에 대한 변환이 필요할 때 사용하면 유용할 것 같다. 만약 다음 프로젝트때 Augmentation이 있다면 적극 사용해보자

Roboflow

https://roboflow.com/

  • test 파일을 직접 넣어 predict하는 과정 없이, 실시간 영상으로 object detection을 할 수 있다.
  • 자체 모델 뿐 아니라 tensorflow keras, pytorch의 모델을 연동하여 사용할 수도 있다.

교훈

  • YOLOv5 나노부터, YOLOv8 l까지 사용하였지만, 학습데이터에 한계가 있을 경우 성능에서 큰 차이를 보이지 않았다.
  • 가장 중요한 것은 문제가 적절히 반영된 학습데이터, 또는 적절히 반영할 수 있도록 하는 데이터 전처리 과정이 좋은 모델을 선택하는 것 보다 더 중요한 것 같다.
  • 앞으로도 머신러닝, 딥러닝 문제를 마주한다면 데이터 탐색 및 전처리에 더 많은 공을 들여야겠다.
post-custom-banner

0개의 댓글