실시간 킥보드 헬멧 단속 시스템 - 새로운 데이터 셋으로 재학습 결과

Develop My Life·2022년 4월 4일
0

새로운 데이터 셋 촬영

지난번 770장의 데이터셋으로 augmentation을 통해 4620장으로 만들어 학습을 진행하였으니 tiny yolo보다 mAP도 떨어지고 FLOPS도 더 큰 것을 확인하였습니다. FLOPS가 더 크다는 의미는 inference time이 더 길다는 의미이기 때문에 YOLOv3를 압축하여 사용하는 것보다 그냥 tiny yolo를 사용하는 것이 더 좋다는 결론을 내릴 수 있고 이전 데이터셋에는 사진 하나당 하나의 물체만이 있기 때문에 이 부분을 보완하여 추가 데이터셋을 촬영하여 재학습을 하였습니다.

새로운 데이터 셋


이번에는 한 사진에 킥보드를 탄 사람이 여러 명이 있는 상황을 촬영했습니다. 또한 멀리서 킥보드를 타고 있는 사진을 추가하였습니다.

Augmentation

이전에 가지고 있던 데이터셋 770장에서 새롭게 촬영한 데이터셋 996장을 추가하여 총 1736장의 데이터셋을 확보할 수 있었습니다. 그리고 여기에 augmentation을 적용하여 데이터를 증폭시켰습니다.

Augmentation 방법

  1. 좌우반전
seq = Sequence([HorizontalFlip()])


2. +5도 각도 기울이기

seq = Sequence([Rotate(5)])


3. -5도 각도 기울이기

seq = Sequence([Rotate(-5)])


4. 색 HSV 영역 H ±\pm40, S ±\pm40, V ±\pm30 랜덤 변환

seq = Sequence([RandomHSV(40, 30, 30)])


5. 색 HSV 영역 H ±\pm40, S ±\pm40, V ±\pm30 랜덤 변환 + 좌우반전

seq = Sequence([RandomHSV(40, 40, 30), HorizontalFlip()])


6. 색 HSV 영역 H ±\pm40, S ±\pm40, V ±\pm30 랜덤 변환 + (+10도) 각도 기울이기

seq = Sequence([RandomHSV(40, 40, 30), Rotate(10)])


7. 색 HSV 영역 H ±\pm40, S ±\pm40, V ±\pm30 랜덤 변환 + (-10도) 각도 기울이기

seq = Sequence([RandomHSV(40, 40, 30), Rotate(-10)])


따라서 원본 1736장 + Augmentation(1736 * 7 = 12,152장) = 총 13,888장의 데이터 셋을 확보하였고 train dataset 10,000장, test dataset 3,888장으로 학습하였다.

학습 결과

  • epoch 100으로 학습한 결과 원본의 mAP가 0.9855가 나왔고 tiny의 mAP는 0.9665가 나왔다. 압축 비율별 모델의 mAP와 FLOPS를 살펴보면 압축률이 클수록 성능이 낮아지는 것을 확인할 수 있었다.
  • tiny yolo와 비교하였을 때 FLOPS가 낮고 mAP가 높은 85%, 90% 압축한 것 중에 하나를 사용하는 것으로 결정하였다.

0개의 댓글