Object Detection 문제를 regression 문제로 정의하는 것을 통해 bounding box 좌표 및 각 클래스일 확률을 계산
1. YOLO의 장점
* Sliding Window 방식이 아닌 CNN을 사용하여 이미지 전역의 Contextual Informaion을 얻어 학습 성능을 높임 * 일반적인 Object의 표현을 학습하기에 Domain이 달라도 높은 성능을 보임
2. YOLOv8
* Backbone, Nect, Head 로 구성 * Backbone : 전체 네트워크의 본체 파트 * Neck : Backbone과 Head를 연결 * Head: 최종 출력 생성 파트 * 이전 버전에 비해서 더 복잡한 구조를 가지고 있어 높은 정확도를 보여줄 뿐만 아니라, 빠른 속소를 보임
2. PascalVOC 데이터
1. PascalVOC 2007
* 분류와 객체 검출을 위해 만들어진 데이터셋 * 총 20개의 클래스를 가지고 있음 * Person: person * Animal: bird, cat, cow, dog, horse, sheep * Vehicle: aeroplane, bicycle, boat, bus, car, motorbike, train * Indoor: bottle, chair, dining table, potted plant, sofa, tv/monitor
2. 실습준비
* 학습 데이터 * train: 2501장 * val: 2510장 * 학습 데이터가 너무 적어서 train과 val를 합쳐서 학습시킨 후, 테스트 데이터를 검증 데이터셋으로 사용 예정
* /content/pascal_datasets/trainval/VOCdevkit/VOC2007/ImageSets/Main/val.txt * /content/pascal_datasets/VOC/labels/train2007 파일 중 위 txt 문서에 있는 파일을 /content/pascal_datasets/VOC/labels/val2007 로 옮기기
--img 640: 입력 이미지의 크기를 640x640으로 설정합니다. YOLOv5는 이 크기의 이미지를 사용하여 훈련됩니다.
--batch 32: 배치 크기를 32로 설정합니다. 한 번의 훈련 스텝에서 32개의 이미지를 사용합니다.
--epochs 10: 총 10번의 에포크 동안 모델을 훈련시킵니다. 한 에포크는 전체 훈련 데이터셋을 한 번 순회하는 과정입니다.
--data custom_voc.yaml: 훈련에 사용할 데이터셋의 구성을 정의하는 YAML 파일을 지정합니다. 이 파일에는 데이터셋의 경로와 클래스 정보 등이 포함되어 있습니다.
--weights yolov5s.pt: 사전 훈련된 YOLOv5s (small) 모델 가중치를 사용합니다. 이 가중치는 훈련 시작 시 모델의 초기 상태로 사용됩니다.
--seed 2024: 훈련의 재현성을 보장하기 위해 랜덤 시드를 2024로 설정합니다. 동일한 시드를 사용하면 동일한 훈련 결과를 얻을 수 있습니다.
/content/yolov5 디렉토리로 이동한 후, train.py 스크립트를 실행하여 YOLOv5 모델을 지정된 파라미터로 훈련시키는 명령입니다. 훈련 과정은 입력 이미지 크기, 배치 크기, 에포크 수, 데이터셋 구성 파일, ㅠ사전 훈련된 가중치, 랜덤 시드를 사용하여 설정됩니다.
9. mAP(mean Average Precision)
Precision(정밀도) : 모델이 검출한 객체 중에서 실제로 객체인 비율
True Positive(PT) : 올바르게 검출한 객체
False Postive(FP) : 잘못 검출한 객체
Recall(재현율) : 실제 객체 중에서 모델이 올바르게 검출한 비율
False Negative(FN) : 검출하지 못한 객체
Average Precision(AP)
Precision과 Recall의 관계를 나타내는 Precision-Recall 곡선의 아래 면접(Area Under Curve)을 계산하여 얻
mean Average Precision(mAP)
다양한 객체 클래스에 대해 AP를 평균한 값
예) 클래스 1: AP = 0.75 클래스 2: AP = 0.85 클래스 3: AP = 0.8 mAP = 0.75 + 0.85 + 0.8 / 3 = 0.8
모델이 다양한 객체 클래스를 얼마나 잘 검출하고 있는지를 종합적으로 평가할 수 있는 중요한 지표
객체 검출 모델의 성능을 비교할 때 많이 사용 -> mAP 값이 높을수록 모델의 검출 성능이 좋다는 것을 의미