[2023-05-29] Object Detection
Object Detection
- Bounding Box로 Object에 대한 위치를 찾고, Bounding Box의 위치에 있는 Object를 구분하는 과정
Classification
- 이미지가 input으로 들어가면 CNN 모델을 통해서 output에 N개의 클래스에 대한 확률 분포가 나옴
Object Localization
- Classification에서 바운딩 박스의 정보를 담는 X, Y, W, H 4개의 point 값을 추가
Object Detection
- Object 수 만큼 Class에 대한 확률분포, Bounding Box 정보가 나옴
- 하나의 이미지에서 여러개의 Object를 검출할 수 있음
Network architecture of Classification and Object Detection
One Stage Detection & Two Stage Detection
- One Stage Detection은 객체의 검출과 분류, 바운딩 박스 regression을 한번에 하는 방법
- Two Stage Detection은 Object가 있을 법한 위치의 후보들을 뽑아내는 단계와 실제 Object가 있는지 확인하는 Classification과 정확한 바운딩 박스를 구하는 Regression을 수행하는 단계가 분리되어 있음
One Stage Detection
-
Backbone
- 이미지나 비디오와 같은 입력 데이터를 처리하여 중요한 특징을 추출하는 역할을 함
- 추상적인 특징을 추출함
- Layer가 깊어질 수록, 점점 feature map은 추상화됨
-
Neck
- Backbone에서 추출한 특징을 가공하고 조정하여 이후의 작업을 수행하기 좋은 형태로 만듬
- Backbone의 특징을 활용하여 보다 구체적인 작업에 유용한 표현을 생성함
- 특징이 Concaenatete되거나 Add 됨
- Concatenate
- Channel로 추가가 됨
- A matrix : [C, H, W] / B matrix : [C, H, W] 를 Concatenate 진행시 C = [2C, H, W] (C : Channel, H : Height, W : Width)
- Add
- Element Wise addition 진행
- A matrix : [C, H, W] / B matrix : [C, H, W] 를 add 진행시 C = [C, H, W] (C : Channel, H : Height, W : Width)
- Dense Prediction
- Class에 대한 정보를 담는 개수와 Class의 확률 값과 Bounding 값이 나오는 부분
Two Stage Detection
- One Stage보단 정확하지만 많은 연산을 사용함
- Faster R-CNN은 Two Stage Object Detector 중 하나
- 첫번째 forward 에서는 후보 영역들을 뽑음
- Input 이미지를 CNN 을 통해 feature map을 뽑고 Object가 있을 것 같은 자리에 Region Proposal Network를 진행함
- 두번째 forward 에서는 후보 영역들 중에 인프런스를 통해 실제 Object가 있는 것을 확인
Grid
- feature map의 pixel 수로 feature map size가 [13, 13]일 때 grid size는 [13, 13]
- Grid 안에서 객체를 찾는 방법은?
- Grid에서 1개의 Object를 검출하기 위해 여러가지 바운딩 박스를 만듬
- 해당 Object의 바운딩 박스의 정보, Object 위치와 Class 정보를 내포하는 결과가 나옴
Anchor
- 사전에 정의된 크기와 종횡비(가로 대 세로 비율)를 가지고 있는 상자
- Anchor Box는 이미지 내에 존재할 가능성이 있는 객체의 위치와 크기를 대략적으로 나타냄
- 앵커가 5개 있을 때
- Box Offset(4) + Objectness_confidence(1) + Class_confidence(20) = 25개 원소
- 총 125개의 channel을 갖는 feature map이 됨
Bounding Box, Objectness Score, Class Score
- Bounding Box
- [x_min, y_min, x_max, y_max] or [x_center, y_center, w, h]
- Objectness Score
- Object라고 판단되지 않는 것들은 0으로 주고 Object 라고 판단되는 것은 1 줌
- Class Score
- 각 클래스별로 GT를 구분하고 객체에 대한 클래스를 예측함
Loss Function
Softmax
- 예측한 클래스의 Score의 합을 1로 만드는 과정
Cross-Entropy Loss
- 분류 모델의 출력과 실제 레이블 간의 차이를 측정하여 모델의 학습을 도와줌
MSE loss, MAE loss
IOU
- Intersection over Union
NMS
-
Non - Maximum Suppression
-
IOU와 Confidence Score을 기준으로 필터링함
Object Detection Models
One-Stage Object Detectors
-
YOLO(You Look Only Once)
-
SSD(Single Shot Detectors)
Two-Stage Object Detectors
- RCNN
- Fast-RCNN
- Faster-RCNN