안녕하세요~!
오늘 포스팅은 YOLO 모델링에 대해 자세히 살펴보겠습니다!

1. YOLO 모델 사용하기
1. UltraLytics 라이브러리 사용
=> 사용자가 쉽게 객체탐지를 수행할 수 있도록 PyTorch 기반의 강력한 딥러닝 모델을 제공
=> settings(YOLO 모델 사용 위한 환경 세팅 함수) / YOLO(모델 다운로드 함수)

2. 모델 다운로드
- 모델 버전과 task 지정 후 모델 다운로드
- task : detect, segment, classify, pose
- 여기서 n은 나노(작은 모델) 의미 => s,l,m 등 다양한 옵션 존재
- pt는 파이토치를 의미함.

3. 모델 사용
- model.predict()와 model() 은 동일 => .predict 생략 가능
- save = True : 탐지 결과 저장
- conf = 0.25 : Confidence Score(기본값 0.25일 경우, 생략 가능)
- iou = 0.45 : IoU(기본값 0.45일 경우, 생략가능)

=> 여기서 results는 리스트 형태임.
=> results[0] 은 탐지 결과를 담고 있는 객체를 의미
* results[0] 주요 속성
1) .names : yolo 모델이 탐지할 수 있는 80개 객체 담김(person, bicycle, car 등)
2) .boxes : 탐지된 객체의 바운딩 박스
3) .conf : 특정 박스의 confidence score
4) .cls : 특정 박스의 예측된 클래스 ID
5) .xyxy : 바운딩 박스 좌표1 (x_min, y_min, x_max, y_max)
6) .xywh : 바운딩 박스 좌표2 (x_center, y_center, width, height)
7) .xyxyn , .xywhn : normalization

4. Confidence Score 임계 값 조정
1) conf = 0.7(높은 신뢰 허용 기준, 70% 이상)
- Confidence Score가 0.7 이상인 Bounding Box만 신뢰를 허용하여 남기고, 0.7 미만의 나머지 객체들은 탐지(X)
- 탐지된 박스 개수가 적음. => 놓치는 객체가 많을 수 있음(FN 증가 == 미탐 증가 == Recall 감소)

2) conf = 0.1(낮은 신뢰 허용 기준, 10% 이상)
- Confidence Score가 0.1 이상인 Bounding Box 모두 탐지 => 신뢰 허용 기준이 낮기 때문에 모두 수용
- 즉, 신뢰도가 낮더라도 모든 예측을 표시하다 보니 잘못된 탐지도 많아짐 (FP 증가 == 오탐 증가 == Precision 감소)

3) iou = 0.8 (높은 중복 허용도, 80% 이상)
- 박스가 80% 이상은 겹쳐야 중복으로 판단.
=> 중복 허용을 많이 하기 때문에, 겹치는 박스가 많아도 대부분 버려지지 않고 유지됨.
- 장점 : 서로 붙어있는 가까운 객체 잘 구분
- 단점 : 중복 박스 많아 보일 수 있음.

4) iou = 0.1 (낮은 중복 허용도, 10% 이상)
- 박스가 10%만 겹쳐도 중복으로 판단
=> 중복 허용을 적게 하기 때문에, 조금이라도 겹치면 버리고 박스 하나만 남김
- 장점 : 중복을 억제했기 때문에 깨끗한 결과 도출
- 단점 : 서로 가까운 객체가 하나로 합쳐져 탐지가 안될 수 있음.

2. YOLO 모델링 - 파인 튜닝
- Roboflow에서 데이터를 다운로드하고, data.yaml 파일 준비
=> data.yaml 에는 데이터 폴더 구조 및 label 정보를 담고 있고, 코드에서 데이터 로딩 시 yaml 파일 참조.
data.yaml 파일로 학습시키면 됨.
1) 학습 : model.train()
=> train, valid 폴더의 데이터를 이용해 학습 수행 후 최종 성능 계산
- lr0 = 0.0001 : 학습률은 작게
- patience : Early Stopping 옵션(기본값 : 100)
- batch(배치 크기)
- optimizer : 옵티마이저 선택(Adam). 기본값 auto(자동 선택)
- weight_decay : L2 가중치 규제, 기본값 0.0005
- dropout : 드롭아웃 비율, 기본값 0

2) 검증(성능 : 전체 all 관점 / class 관점으로 구분) : model.val()
검증 성능 : 수시로 튜닝하며 학습할 때 확인하는 성능을 의미
테스트 성능 : 튜닝을 마친 후, 모델에 대해 최종 성능을 확인

- Images : 검증 셋 이미지
- Instances : 레이블 된 객체
- Box(P) : Precision 정밀도 (모델이 감지한 객체 중 올바르게 감지한 비율, 높은 Precision -> 오탐(FP) 적음)
- R : Recall 재현율 (실제 객체 중 모델이 감지한 비율, 높은 Recall -> 미탐(FN)이 적음)
- mAP50 : GT(정답 박스)와 비교하여 IoU 50% 기준에서 측정한 mAP. 보통 0.9 이상이면 매우 좋은 성능
=> 보통 50이 일반적으로 쓰이는 성능 평가 지표
- mAP50-95 : 다양한 IoU(50 ~ 95%) 기준으로 0.05 간격으로 나누어 측정한 평균 성능. 일반적으로 0.6 이상이면 괜찮은 성능.

AP(Average Precision)
- Precision-Recall 곡선 아래 면적(AUC, Area Under Curve)을 의미
- 다양한 Confidence Threshold(신뢰도 임계 값)에서 계산한 후, 그 값을 평균 냄.
=> 여러 개 Confidence Threshold 설정(ex. 0.5, 0.6 ... 0.95)
=> 각각의 임계값에서 Precision과 Recall 계산해서 그래프를 그림.
=> 곡선 아래 면적(AUC)을 구하면 AP값이 됨.
mAP50
- 모든 클래스의 AP를 IoU 50% 기준에서 평균 낸 값
- IoU 50% 기준은 IoU >= 0.5일 때, 객체를 올바르게 탐지했다고 판단
=> 즉, GT와 예측된 박스가 50% 이상 겹치면 정답으로 인정
* mAP@50이 높은 경우?
- 예측한 객체 박스들이 실제 객체 박스와 잘 겹친다는 의미
- 일반적으로 객체 탐지 모델의 기본 성능을 측정 시, mAP50 사용
mAP50-95(IoU 50~95%)
- 더욱 엄격한 평가 기준. IoU를 0.50 ~ 0.95까지 0.05 간격으로 나누어 계산
- 다양한 IoU 조건에서 평균적인 모델의 성능을 평가하는 지표
mAP@50-95 = (AP50 + AP55 + AP60... + AP95) / 10
*mAP@50-95가 낮은 경우?
- 정확한 객체 위치를 맞추는 것이 어려운 경우
- 작은 객체, 겹쳐있는 객체에서 오차가 클 가능성이 높음.
* 요약
mAP50 : 객체를 적절하게 찾는 성능
mAP50-95 : 객체 위치를 정밀하게 찾는 성능

'AI 시각지능 & 멀티모달' 카테고리의 다른 글
| AI 시각지능 Instance + Semantic Segmentation(이미지 분할) (0) | 2025.11.17 |
|---|---|
| AI 시각 지능 Object Detection(객체 탐지)와 YOLO (0) | 2025.11.10 |
| 이미지 처리 기초 개념과 CNN (0) | 2025.11.09 |