📖 학습한 내용
📖 핵심내용
📌 object detection
객체 탐지평가
- mAP (mean average precision)
각 클래스에 대한 precision의 평균
얼마나 잘예측하는지 측정
정밀도(precision) : 얼마나 정확하게 객체를 탐지했는지
재현율(recall) : 실체 객체 중 얼마나 많은 객체를 탐지했는지
임계값을 정하고 정밀도와 재현율을 고려 -> 임계값이 높으면 정밀도 증가, 임계값 낮으면 재현율 증가
객체 탐지 훈련 프로세스
-
데이터 준비
훈련을 위해서 객체의 위치정보와, 클래스 카테고리 정보가 필요하다.
-
특징 추출
CNN 사용
-
경계상자 예측
원본이미지에 뽑는것이 아니라 피처맵에서 뽑는다.
막 뿌리고 오차를 줄여가는 회귀 방식으로 학습
-> 피처맵의 각위치에고정된 수의 앵커박스 사용
-
클래스 예측
상자 내에 객체가 포함될 가능성과 각 클래스에 속할 확률 예측
-
NMS(non-maximum suppression)
박스안에 오브젝트가 있을 확률이 가장 높은 박스와 겹치는 상자들을 제거한다.
IOU 값을 본다 -> 겹치는 정도가 0인 것은 제거하지 않는다 -> 다른 오브젝트임
객체 탐지 예측 프로세스
- 이미지 전처리
- 특징 추출
- 경계상자 및 클래스 예측
- NMS
- 결과출력
※ 바운딩 박스(경계상자) 좌표값 : 이미지 내 객체의 위치를 사각형 형태로 예측한 결과
※ confidence score : 예측 정확도
NMS
- 신뢰도 점수 정렬 -> 소프트맥스
- 상자 비교 및 선택
가장 신뢰도 점수가 높은 상자를 선택
선택한 상자와 다른 모든 상자간의 겹침정도(IoU)를 계산, 자카드 유사도도 잘 쓰인다

- IoU 임계값 적용
임계값이 높으면 신뢰도 증가
낮으면 precision 증가
- 반복실행
- 최종 경계상자 결정

객체탐지 학습데이터
- 대표 데이터셋

-> 라벨 이미지, 바운딩 박스 데이터두가지는 공통적으로 가지고 있다
-> 각각 데이터 형태 및 컨텐츠가 다르므로 필요시 확인하고 사용
📌 SSD
single shot detection
객체 인식을 위한 모델
one-stage detector -> region proposal + classification
특징
- 싱글샷 디텍터
- 멀티 박스
- 다양한 스케일의 피처맵 : multi-scle approach -> 다양한 형태, 사이즈의 오브젝트별 디텍트하기 위해 사용. 즉 다양한 크기의 피처맵 사용
작은 사이즈의 피처맵 -> 큰 객체 탐지
큰 사이즈의 피처맵 -> 작은 객체 탐지
- 속도와 정확도
- NMS : 여러개 예측박스 중에 최종적으로 객체를 나타내는 가장 확률이 높은 박스를 선택 -> 겹치는 박스를 제거하고 각객체에 대한 최종 예측 확정
box
- 바운딩 박스
- 앵커박스(default box)
사전에 정의된 참조 박스, 모델이 객체의 크기와 비율을 예측하는데 기준점으로 사용하는 박스
- Ground Truth Bounding Box : 정답 바운딩 박스
학습 프로세스

-> 위치손실 : 회귀
-> 클래스 신뢰도 손실계산 : 분류
cell
grid cell
이것을 기준으로 앵커박스가 주어짐

-> 각각의 피처맵에 따라서 그리드셀이 결정된다. 제너레이트 셀이 생기면 각각의 셀에 앵커박스가 생긴다. 이후 앵커박스 중에 최적의 바운딩 박스를 찾는다.
앵커박스
그리드 셀별로 배치가 된다.
그리드 셀 기준으로 비율을 달리하여 이미지를 찾는다
원본 이미지에 사용되지 않고, 모델을 통과한 피처맵에 사용된다.
4개 또는 6개
📖 흥미로운 점 / 새로 알게된 점
📖 어려운 부분
ssd300_vgg16에서 예측해서 나온 labels의 값은 찾아봐야하는 것인가? 그리고 COCO_INSTANCE_CATEGORY_NAMES에서 라벨을 우리가 지정해서 나오게한 것인지
📖 이후 학습 계획
📖 기타