객체의 위치정보
객체 검출(Object Detection):
바운딩 박스로 객체의 위치정보를 찾아낸다.
객체 위치 인식(Object Localization):
x, y, w, h
데이터셋 준비:
- 하나의 이미지에 여러개의 객체가 존재.
- 하나의 이미지에 정답데이터(여러 개의 레이블 묶음) 필요.
객체의 갯수는 매번 다르다. 그러면 필요한 값은?
- object당 xywh(4개)+label(개수)
- object가 10개면?
- 10 * (4+n_label)
탐색 방법
2-stage: R-CNN
작은 영역의 박스를 이동시키면서 탐색하자.
- 해당영역에 객체가 있을지 확인하는 ROI를 먼저 뽑고
- 추출한 ROI에 대해서 객체 검출 시도.
1-stage: YOLO
CNN이 하나의 이미지를 분류할 때, CNN의 필터링 결과는 '근접수용영역'의 여러 채널로 구성되어 있다.
객체 검출 평가지표
- 정확성: mAP
- 속도: inference time, FPS(평균30)
mAP: mean Average Precision
- Precision: TP / (TP+FP)
- 레이블 별로 AP 계산 후, 평균 계산
IOU - 성공적인 영역의 기준
IOU = 교집합 / 합집합
IOU는 위치정보의 정확성을 평가하는 것이지만, 특정 Label을 예측한 것만 모아서 평가하는 것이므로 label 추론도 포함되어 있다고 본다.
- 정답 면적과 예측 면적을 비교
- IOU 값이 몇 일때부터 맞은 걸로 하는게 좋을까?
- 0.5(실제 2/3영역) < IOU < 0.95
IOU 평가기준
- COCO AP : IOU = 0.5 : 0.95 -> 0.05 간격
- 10단계로 기준을 높여가며 측정
- 10번의 측정 값 평균
- VOC AP : IOU = 0.5
- 1번의 평가만 수행
- IOU = 0.66 일때, True기준이 0.5라면 True, 기준이 0.8라면 False
Average Precision
- recall 대비 precision의 평균
- AP = 1인 상황부터 생각해보자. (성능이 가장 좋은 경우)
- Precision은 항상 1이면서, Recal이 0~1일 때, 항상 유지되어야 한다.
- 이름만 들으면 recall은 상관없이 precision만 확인하는 지표 같으나, 사실 recall과 precision이 균형있게 높게 나와야 좋은 점수를 주겠다는 평가지표다.
순차적 & 신뢰도 내림차순 평가
- 순차적 평가. Recall은 분모가 전체 수량으로 고정이므로, x값(Recall)은 조금씩 우측으로 이동할 수 밖에 없다.
- 순차적 평가의 순서에 따라 확률 값이 달라질 수 있다. 만약 실제 값이 모두 나온 다음에 맞췄다면, 그게 영역에 포함될까? 반대로 실제 값이 나올 때까지는 모두 맞추다가, 실제 값이 모두 나오니 계속 틀리면 영역에 포함될까?
- 그래서 중요한 것이 평가 순서! 평가 순서는 신뢰도가 높은 순서대로! (*신뢰도 = confidence)
- 결국 이 지표는 앞 부분에 가중치가 높이 들어간 지표다. 즉, 신뢰도가 가중치에 포함된다고 할 수 있다.
- case1: 10개 중 신뢰도 높은 것은 5개 맞고, 신뢰도 낮은 것은 5개 틀림
- case2: 10개 중 신뢰도 높은 것은 5개 틀리고, 신뢰도 낮은 것은 5개 맞춤
Average Precision 분석해보기:
- 예측해서 맞은 경우, TP로 볼 수 있다.
- 예측했지만 틀린 경우, FP로 볼 수 있다.
- 아직 예측 못한 실제 값은 FN으로 볼 수 있다.
AP계산법
11 point 보간법
- recall의 11개의 포인트(0, 0.1, ... 1)를 잡는다.
- 해당 포인트에서 precision 값에 포인트가 아닌, 해당 포인트 기준 우측에서 가장 큰 precision 값에 포인트를 찍는다.
- 총 11개 precision의 평균값을 AP로 계산한다.
ALL point 보간법
mAP = AP값들의 평균
1. 레이블 별로 각각 AP를 계산한다. (신뢰도 필요)
2. 레이블마다의 AP들을 평균내서 최종 성적을 평가한다.
사례: 고양이와 강아지가 섞인 사진.
1. 강아지에 대해서 AP 계산
2. 고양이에 대해서 AP 계산
3. 이 둘을 평균내서 mAP 계산
YOLO v4의 구조
- YOLO v1 ~v2:
backbone + head
- YOLO v3 ~v4:
backbone(3개) + neck(3개) + head(3개)
Tags:
AI개발_교육