1. Intro
What is objection Detection?

- object classification: 하나의 이미지를 보고 그것이 개인지 고양인지를 판단
- object localization: 하나의 이미지 내에서 개는 어디에 위치하는지 판단 → output: x,y,w,h
- object detection: 하나의 이미지 내에서 서로 다른 object를 각각 찾아내는 것 ex) DPM, R-CNN
one-stage vs two-stage detector


- one stage: localization+classification을 동시에 수행ex) conv를 통과한 후, 각 grid cell 마다 classification결과와 bounding box regression을 통해 결과 도출
- two stage: localization → classification 순차적으로 진행 ex) DPM, R-CNNex) region proposal을 통해 먼저 후보 box 추출하고, classification결과와 bounding box regression을 통해 결과 도출
- DPM(deformable parts models): 이미지 전체를 거쳐 슬라이딩 윈도우 방식으로 객체 검출 모델
- R-CNN: bounding box 생성 후, classification & regression → (중복제거) non maximum suppression
⇒ 느리다. 최적화하기 어려움
※ Yolo: 이미지를 한 번 보는 것으로 object의 종류와 위치를 추측

2. Overall architecture


- 24개 Conv + 2개 FC layers
- input으로 image 넣음
- Conv를 통해 나온 피처들을 이용해 진행
- 7x7 49개의 grid cell을 갖는데, 여기서 각 2개씩의 bounding box를 뽑아냄
- 이때, box 하나당 5개의 값이 채워짐 (x,y,w,h,c)
- 총 10개의 값이 나옴
- 그리고 나머지 20개의 값은 20개의 class에 대한 conditional class probability
- 이후, 기존의 각 box에 대한 conifdence score와 conditional class probablility를 곱해줌
- 그렇게 되면 결국 49개의 grid에 2개씩 bounding box가 생성되므로 총 98개의 bounding box가 생성.
- 즉, 98개의 class specific confidence score을 얻게됨
- 이 98개의 score에 대해 20개 클래스를 기준으로 중복 제거(non maximum suppression)을 해서 object에 대한 class 및 bounding box 위치를 최종 결정
3. Unified Detection

- 이미지로부터 얻은 feature map을 활용해서 bbox 예측 + 모든 클래스에 대한 확률 계산 (병렬적으로 진행 된다고 논문에서 표현)

- 논문에서는 7x7로 나옴
- 4x4 grid로 분할 후, 각 grid cell마다 bbox 2개씩 예측
- 이때, 한 box 당 5개에 대한 값을 갖게 되는데, x,y,w,h,c의 값이 나옴
- x,y: 중심좌표 위치 / w,h: box의 가로와 높이 ( 정확히 말하자면 원래 이미지의 W,H로 나눠서 0~1 사이 값을 갖도록 설정 )

- 물체가 bbox 안에 있을 때, grid cell에 있는 object가 i번째 class에 속할 확률값 ( class: 20개 )ex) 고양이: 0.88 강아지: 0.01 새: 0.005

4. Network Design - GoogleNet
5. Training

- 예측된 여러 bounding box 중 실제 객체를 감싸는 ground-truth boudning box와의 IOU가 가장 큰 것을 선택
- YOLO의 경우, 학습 단계에서는 IOU가 가장 높은 bbox 1개 만을 사용
ex) 노란색 박스 + 파란색 박스 → conv를 통해 얻은 box
→ groundbox(빨간색) 박스와 노랑or파랑 중 더 겹치는 애를 선택
→ 여기서는 노란색 박스를 선택하게 됨 ⇒ 1개 선정

- 이후, 노란색 box를 선택했으므로 해당 scaler 값은 1로 표시(객체가 있으므로)
- 파란색의 경우 0으로 표시 ( loss function에서 loss 전파x )
6. Loss Function(train)


- Mean Squared Error (제곱합 에러 사용)
(1) Object가 존재하는 grid cell i의 predictor bounding box j에 대해, x와 y의 loss를 계산
(2) Object가 존재하는 grid cell i의 predictor bounding box j에 대해, w와 h의 loss를 계산
(3) Object가 존재하는 grid cell i의 predictor bounding box j에 대해, confidence score의 loss를 계산
(4) Object가 존재하지 않는 grid cell i의 bounding box j에 대해, confidence score의 loss를 계산
(5) Object가 존재하는 grid cell i에 대해, conditional class probability의 loss 계산
- λcoord : coordinates(x,y,w,h)에 대한 loss와 다른 loss들과의 균형을 위한 balancing parameter
- λnoobj : obj가 있는 box와 없는 box간에 균형을 위한 balancing parameter→ 어떤 loss를 더 많이 반영할 것인가( 가중치의 개념 )
※ grid cell에 object가 존재하는 경우와 predictor box로 선정된 경우에만 오차를 학습시킴
- 그리드 셀에 객체가 없다면 confidence score=0. 사실상 대부분의 그리드 셀의 confidence socre=0이 되도록 학습할 수밖에 없음 → 모델 불균형 초래
- 이를 개선하기 위해 객체가 존재하는 bounding box 좌표(coordinate)에 대한 loss의 가중치를 증가시키고, 객체가 존재하지 않는 bounding box의 confidence loss에 대한 가중치는 감소시
7. Inference Stage(test)

※ class-specific confidence score
- confidence score x 20개의 클래스 확률을 곱한 값들을 bbox에 넣음

- 7x7, 49개의 grid cell, 하나의 cell 당 2개의 box가 생성되기에 총 98개의 bbox가 생성됨 (학습시에는 49개가 생성)
- bbox1: bbox1에 대한 좌표값(x,y,w,h,c)+ class-specific confidence score가 하나의 bbox1이 되는 것임
⇒ 이렇게 되면 하나의 이미지 당 98개의 box가 생성되므로 box가 엄청나게 많기에 NMS 적용시킴. (테스트시)
⇒ 중복 영역이 없고, IOU 값이 가장 높은 최종 bbox 1개만을 남기게 됨.
8. Comparison to other Systems (vs YOLO)
- DPM
- R-CNN
- Deep MultiBox
- OverFeat
- MultiGrasp
9. Experiments

- 다른 real-time object detect system들에 비해 높은 mAP를 보여줌
- Fast YOLO의 경우 가장 빠른 속도를 보여줌

- Fast R-CNN과 비교했을 , 훨씬 적은 False-Positive를 보여줌. (low backgound error)⇒ background에 아무것도 없는데 있다고 하는 확률을 줄인 것을 말함

- Fast R-CNN과 YOLO를 combine 했을 때 3.2% 더 증가했음 ⇒ 효과가 더 좋았다!

- 그림 안에 있는 객체를 찾아내는 것에 있어서 YOLO에 비해 다른 모델들은 현저히 떨어짐을 확인할 수 있음
10. Outro
- YOLO의 한계
- 각각의 grid cell이 하나의 클래스만을 예측할 수 있으므로, 작은 object 여러개가 다닥다닥 붙으면 제대로 예측하지 못함.
- bounding box의 형태가 training data를 통해서만 학습되므로, 새로운/독특한 형태의 비율을 가진 bbox 의 경우 정확히 예측하지 못함.ex) 1:1, 1:2, 2:1 비율의 bounding box만 학습했는데, 3:1 비율의 box를 테스트하면 탐지하지 못함
- 몇 단계의 layer를 거쳐서 나온 feature map을 대상으로 bouding box를 예측하므로 localization이 다소 부정확해지는 경우가 있다. (R-CNN의 경우, 처음부터 Region proposal 진행)
- 작은 물체에 대해서 탐지 성능이 낮다 ex) object가 크고, BBox가 큰 경우, bbox의 위치 오차가 조금 커져도 여전히 object와 bbox의 겹치는 영역이 많기 때문에 IOU는 여전히 높지만, object가 작으면, bbox가 작게 생성이 될텐데, 이 경우에는 bbox의 위치 오차가 조금만 커져도 object와 bbox가 겹치는 영역이 적어지게 때문에 IOU 값이 빠르게 감소하는 문제가 발생
'Deep Learning > [논문] Paper Review' 카테고리의 다른 글
SPPNet (0) | 2023.07.06 |
---|---|
Faster R-CNN (0) | 2023.07.06 |
Fast R-CNN (0) | 2023.07.06 |
Transformer (0) | 2023.07.06 |
Inception V2/3 (0) | 2023.07.06 |