[이미지처리] 5. YOLO 모델
★ 모델 평가:
NMS 과정을 통해 YOLO 모델 성능 평가를 하여 최종 분류탐색한다.
NMS 과정의 지표들
- IoU: 예측된 바운딩 박스와 실제 바운딩 박스가 겹치는 정도
- Confidence Score: 바운딩 박스가 정확한지 그리고 그 안에 객체가 존재하는지 평가하는 지표
1. 라이브러리 설치
2. 모델 사용
1) 모델 다운로드
테스크와 맞는 모델 선택이 중요하다
model: 모델 구조+ 가중치 설정
task: detect, segment, classify, pose
YOLO(model='yolo11n.py', task= 'detect')
2) 모델 사용
model을 통해 예측 작업 실행
model.predict(image_path, save=True)
욜로를 통해 사람을 인식했다.
3) 박스 실행
box.xyxy[0]: 박스의 위치정보 Bounding Box x_min, y_min, x_max, y_maxf를통해 디텍티드 박스의 위치를 알 수 있다.
box: conf[0] confidence값 알 수 있다.
class: 무엇으로 탐지했는지 알 수 있다.
3. 동영상
1) 동영상 객체탐지 실행
model.predict("~", save=True)
2) 코랩에서 영상 play위한 세팅
영상 코덱으로 ffmpeg 설치하고 사용해서 변환한다.
3) 영상 play
Video()
4. 모델평가
- 지표
1) IoU
개념: 두 박스의 중복 영역 크기를 통해 측정
공식: 교집합 / 합집합
좋은 모델: 겹치는 영역이 넓을수록 1에 가까운 값이다. 0.5정도보다 크면 올바른 탐지
2) Confidence Score
개념: YOLO 모델이 예측한 바운딩 박스안에 객체가 존재할 확률을 나타낸다.
공식: P*IoU
Confidence Score 낮은 점수면 필터링한다.
Confidence Score 의 임계값:
임계값을 높이면 정밀도 올라가고 재현률은 내려간다.
임계값을 낮추면 정밀도 내려가고 재현률은 올라간다.
Confidence Score로 Precision-Recall Curve 그리기
그래프의 곡선의 면적이 1에 가까우면 좋은 모델
3) 과정
- NMS
개념: 모델에서 중복된 Bounding Box를 제거하고 가장 신뢰도가 높은 박스만 남기는 과정
여러 박스 있을때 하나의 박스만 남기고 나머지는 제거
- NMS 과정 순서
Confidence Score 임계 값 이하의 바운딩 박스 제거
남은 바운딩 박스들을 Confidence Score 내림차순으로 정렬
가장 Confidence Score 가 높은 첫번째 박스를 선택하고 다른 박스와 IoU 비교
선택한 박스와 IoU를 계산하여 IoU 값이 임계값 이상인 다른 박스들을 제거
바운딩 박스가 하나 남을 때까지 수행
4) Confidence 임계값 조정
이렇게하면
첫번째 예제는 정밀도가 올라가고 재현률이 내려가고
두번째 예제는 정밀도가 내려가고 재현률이 올라간다.
- 그래프 그리기
첫번째는 박스 묶는 기준이 엄격한것을 볼수있고
두번째는 박스를 묶는 기준이 낮지만 재현률이 높은것을 볼 수 있다.
5) IoU 임계값 조정
IoU는 교집합/ 합집합으로 중복되는 박스들을 비교하여 일치율이 0.5이상이되면 높은것이라고 판단하고
박스를 남겨둔다.
IoU가 완전 낮은것도 남겨두는데 그건 다른 객체일수도 있기 때문이다.