용어 정리
mAP(mean Average Precision)
평균 정확도의 평균, 클래스별 평균 정확도의 평균, 모델 정확도 평가 지표
충분히 많은 데이터
데이터의 양질은 절대적이지 않습니다.
예를 들어 특정 구역을 찍는 CCTV가 사람 혹은 물체를 인식해야하는 상황에서는 특정 구역에 대한 데이터만 있으면 충분합니다.
하지만 1인칭 보행자 시점에서 물체를 인식해야한다면 다양한 배경의 데이터가 필요할 수 있습니다.
데이터 수
데이터가 충분히 많고 레이블링이 잘 되어있다면 YOLOv5를 기본 설정으로 사용하여도 대부분 좋은 결과를 얻을 수 있습니다.
그렇지 않은 경우에도 우선적으로 기본 설정으로 성능 평가를 진행하는 것이 좋습니다.
데이터 셋
클래스당 이미지 수 1500개 이상:
클래스는 ex) 고양이, 개 등으로 분류할 라벨을 의미합니다. 즉 고양이 사진 1500개 이상, 개 사진 1500개 이상을 권장합니다.
클래스당 객체 수 10000개 이상:
객체는 이미지 개수와 관련없이 클래스 각각을 나타내는 객체를 의미합니다. 모든 데이터중 10000개 이상의 고양이, 개 객체가 있으면 좋습니다.
이미지 다양성:
이미지는 일관된 것 보단 다양한 것이 좋습니다. 예를들어 어떤 도로의 CCTV 프레임, 어떤 건물 내부 카메라 등등 고정적인 연속된 사진들 보단 다양한 각도의 여러 이미지가 있는 것이 좋습니다.
라벨 일관성, 정확도:
모든 클래스의 모든 객체에 라벨을 지정해야합니다. 주의해야할 점은 한 객체를 단순히 포함하는 라벨링이 아니라 공백없이 정확하게 객체만이 라벨링되어야 합니다.
NO 라벨링:
객체가 없는(라벨링이 되어있지 않은) 이미지도 있으면 좋습니다. 객체는 없지만 배경은 유사한 이미지는 FP를 줄이기 위해 사용됩니다. 비율은 전체 이미지 개수의 10%정도가 좋습니다.
모델
YOLOv5는 크게 YOLOv5n, YOLOv5s, YOLOv5m, YOLOv5l, YOLOv5x로 모델 크기와 성능에 따라 나뉩니다.
Nano 부터 XLarge까지 크기가 증가하며, 크기가 클 수록 더 나은 결과를 생성하지만 많은 리소스를 요구합니다.
YOLOv5는 2024년 3월 기준 p6 버전까지 나와있습니다. 높은 버전일수록 크기가 더 크고 성능이 좋습니다.
하지만 마찬가지로 필요한 리소스 양도 많아지기 때문에 적절한 버전을 선택하는 것이 좋습니다.
* YOLOv5 인자 기본값.
train
epochs: 100
batch-size: 16
img-size: 640 (p6의 경우 1280)
optimizer: SGD
경로 기본값
weights: /yolo5s.pt
data: /data/coco128.yaml
hyp: /data/hyps/hyp.scratch-low.yaml
이곳에서 하이퍼파라미터 정보를 확인할 수 있습니다.
project: /run/train
detect
경로 기본값
weights: /yolov5s.pt
data: /data/coco128.yaml
source: /data/images
project: /runs/detect
training
기본적인 세팅으로 train을 진행 후 과적합 여부나 평가 지표 확인을 통해 에폭을 조절하여 적절한 모델을 생성해야합니다.
보통 300 epochs로 시작하여 과적합이 발생할 경우 epoch을 줄여가며 테스트하는 것이 좋습니다.
또한 오브젝트가 작을 경우 이미지 해상도를 1280으로 설정하는 것이 좋습니다.
이미지 Augmentation의 경우 hyp.scratch-low.yaml를 수정하여 변경하여 적용할 수 있습니다.
참고
https://docs.ultralytics.com/yolov5/tutorials/tips_for_best_training_results/
https://github.com/ultralytics/yolov5
댓글