학습영상: 메타코드-딥러닝 강의 컴퓨터 비전 인식모델 개발 2편
출처: 메타코드M
Object Detection
- 사진 속의 모든 객체를 인지하는 문제
- 클래스분류(Classification) + 위치탐색(Localization)
- Boundry Box를 생성해서 객체의 클래스와 위치를 표기
- 4개의 좌표 생성(상자의 중심점과 폭, 높이 or 상자의 좌상단과 우상단 좌표)
- YOLO: center_x, center_y, width, height
Single Object
- 이미지에 단일 대상이 존재하는 단일 객체 탐지
Sliding window
- Single Object에서 Multiple Object를 수행하는 경우, 한 이미지에 여러 객체가 존재하는데 이를 하나의 객체로 취급하여 올바른 클래스 분류를 수행할 수 없게 됨
- 해결책: 이미지 내에서 일부 window를 생성하고 그 안에서 Object Detection를 수행
- 단점: 많은 윈도우를 생성하므로 계산이 너무 많다(고비용, 저속도)
Region Proposal: Selective Search
- 초기에 작은 영역들을 생성한 후, 이를 색깔, 질감, 크기, 위치 등의 특징을 사용하여 유사한 영역들을 합쳐가며 큰 영역 생성
- 이러한 계층적인 결합과정을 통해 객체와 배경의 경계를 찾아내고, 객체가 있을 가능성이 있는 영역(Region of Interest, ROI, 관심영역)을 제안
모델 형태
One-Stage Detector
- Clasification과 Regional Proposal을 동시에 수행하는 방법
- 비교적 빠르지만 정확도가 낮음
- YOLO계열, SSD
출처: 가짜연구소
Two-Stage Detector
- Clasification과 Regional Proposal을 순차적으로 수행하는 방법
- 비교적 느리지만 정확도가 높음
- RCNN계열
출처: 가짜연구소
R-CNN 계열 모델
RCNN
- 기존 이미지에서 Region Proposal 생성(약 2000개)
- 영역을 warp(crop, resize) 작업수행
- CNN으로 feature map 생성
- Regressor로 bounding box 조정, SVM으로 class 예측
- 클래스 수:예측 수 + 1, (background 분류를 위해 +1)
- 단점
- 이미지변형이나 손실, 후보영역만큼 CNN을 수행하므로 고비용, 저속도
Fast RCNN
- CNN으로 먼저 feature map을 생성, region proposal을 수행
- MaxPooling 등을 활용해서 ROI에 적용(=RoI Pooling Layer)
- RoI Pooling으로 Feature vector 생성
- FC Layer를 거쳐서 Softmax를 통해 분류, Regressor로 bounding box 조정
Faster RCNN
- Selective Search 부분을 딥러닝으로 바꾼 Region Proposal Network(RPN) 사용
- Feature map에서 CNN 연산시 sliding-window가 찍은 지점마다 Anchor-box로 후보영역을 예측
- Anchor-box: 미리 지정해놓은 여러 개의 비율과 크기의 Bounding-box
- RPN에서 얻은 후보영역을 IoU순으로 정렬하여 Non-Maximum Suppression(NMS) 알고리즘을 통해 최종 후보영역을 선택
- RoI Pooling을 거치고 이후 Fast R-CNN과 동일하게 진행
YOLO
학습절차
- 입력 이미지를 처음부터 grid로 나누고 각 grid별로 bounding box와 class를 예측, box별 confidence도 함께 예측
- 각 셀은 5*B+C의 데이터 수를 가지고 있음
- 각 cell마다 B=2개의 bbox를 예측해, 7*7*B개의 class score vector를 얻고 Nonmaximum suppression(NMS)로 정제함
- object마다 하나의 bbox를 갖도록 함
Non maximum suppression (NMS)
- 동일한 객체에 대해 겹치는 정도(IOU; Intersection Of Union)가 높은 순서대로 정렬함.
- Score가 가장 높은 경계상자를 기준으로 Threshold를 설정해 후보군을 줄임.