You Only Look Once: Unified, Real-Time Object Detection Review
2022. 3. 31. 16:47
You Only Look Once
Unified, Real-Time Object Dectection
Object detection = object * (localization + classification)
YOLO는 이미지 내 bounding box와 class probability를 하나의 regression방법으로 해석하여 해결한다.
즉, 이미지를 한 번 보는 것만으로 이미지 내에 위치한 객체의 종류와 위치 정보를 추측할 수 있는 모델!
YOLOv1 preview

Pros
- 간단한 처리과정으로 인해 빠른 속도 + 기존 Real-Time Dectection 시스템들과 비교해 2배 가량 높은 mAP
- 이미지 전체를 한 번에 바라보기 때문에 Class에 대한 맥락 이해가 높고, 이 덕분에 Background error가 낮음
- 이미지 전체를 보며 객체의 일반화된 특징을 학습 (ex. 사진 속 의자의 모습을 학습한 후, 정물화 속 의자 추측 가능)
Cons
- 다른 객체 인식 모델에 비해 상대적으로 낮은 정확도, 특히 크기가 작은 객체 검출 시
Unified Detection

- Input Image를 SxS개의 Grid로 나눔 (in the paper, S=7)
- 각각의 Grid cell은 B개의 Bounding box와 각 bounding box에 대한 confidence score를 가짐 (Confidence Score: $Pr(object)$*$IOU_{truthpred}$) (in the paper, B=2)
- 각각의 Grid cell은 C개의 Conditional Class Probability를 가짐 (Conditional Class Probaility: $Pr(Class_i|Object)$) (in the paper, C=20)
- 각각의 Bounding box는 (x, y), (w, h) 그리고 confidence를 지님
- x, y = (bbox의 중심 x, y - grid cell의 좌상단 x, y) / grid cell의 좌상단 x, y
- → bbox의 좌상단을 0,0으로 맞추고 normalize한 것
- w, h = bbox의 w, h / 전체 이미지의 w, h
- → 전체 이미지에 대한 bbox의 비율(상대 값)
용어 정리
- Confidence Score: bbox에 Object가 있을 확률* IOU
- Conditional Class Probability: 각 grid cell이 어떤 class의 속할 확률이 놆은지
- Class-Specific Confidence Score: Object가 있고 어떤 class에 속할 확률이 높은지

Network
- YOLO는 GoogLeNet을 기반으로 함
- 24개의 Conv-layer + 2개의 fc-layer를 사용


- Pretrain Network: pretrained GoogLeNet을 사용
- Train Network: 4개의 Conv-layer, 2개의 fc-layer를 사용
Inference Process

- output의 1x1xdepth는 처음 이미지를 SxS로 나눈 grid cell 한 개의 의미를 가진다.
- 이때 depth에서는 bbox*(x, y, w, h, c) + class의 수 만큼의 길이를 갖는다.

- output을 prediction으로 변환하기위해 각 grid cell마다 confidence score값과 class probability를 곱하여 Class specific confidence score를 구한다.

- 논문에서는 B=2, S=7을 사용했기 때문에 7x7x2=98개의 Class specific confidence score값이 나오게 된다.
- 이 98개의 Class specific confidence score값들에 대해서 NMS를 수행하여 탐지된 object의 prediction 결과를 얻는다.
Training Process
- Grid cell의 여러 bbox들중, Ground-truth box와의 IOU가 가장 높은 bbox를 predictior로 결정(in the paper, 각 grid cell마다 2개의 bbox가 존재하고 그 중 Ground-thruth box와 IOU가 가장 높은 bbox를 선택)
- 3개의 Loss function사용
- Obejct가 존재하는 grid cell i의 predictor bbox j
- Obejct가 존재하지 않는 grid cell i의 bbox j
- Object가 존재하는 grid cell i
Loss function

- Object가 존재하는 grid cell i의 predictor bbox j에 대해, x와 y의 loss를 계산 (x, y loss)
- Object가 존재하는 grid cell i의 predictor bbox j에 대해, w와 h의 loss를 계산 (큰 box에 대해서는 small deviation을 반영하기 위해 제곱근을 취한 후 sum-squared error를 사용, 같은 error라도 large box의 경우 상대적으로 IOU에 영향을 적게 줌) (w, h loss)
→ bbox가 크면 클수록 loss가 더 크게 발생함, 따라서 다른 loss들에 비해 큰 영향을 주는 것을 방지, 즉 단순 scaling과정
- Object가 존재하는 grid cell i의 predictor bbox j에 대해, confidence score의 loss를 계산 ($C_i$=1) (confidence loss)
- Object가 존재하지 않는 grid cell i의 bbox j에 대해, confidence score의 loss를 계산 ($C_i$=0) (confidence loss)
→ confidence loss를 2개로 나눠서 구하는 이유는 object가 존재하는 bbox의 loss와 존재하지 않는 bbox의 loss를 둘다 구해 object가 존재하지 않을 때는 얼마만큼의 loss차이가 나는지 알기 위해서
- Object가 존재하는 grid cell i에 대해, conditional class probability의 loss를 계산 (class probablity loss)
→ 과정들을 보면 단순히 위에서 구한 각 grid cell의 한 부분에 대해서 각각 loss를 계산한 것

Balancing parameter
- $\lambda_{coord}$: coordinates(x, y, w, h)에 대한 loss와 다른 loss들과의 균형을 위한 balancing parameter
- $\lambda_{noobj}$: object가 있느 box와 없는 box간의 균형을 위한 balancing parameter. (일반적으로 image내에는 object가 있는 cell보다는 object가 없는 cell이 훨씬 많으므로)
Limitation of YOLOv1
- 각각의 Grid cell이 하나의 Class만을 예측할 수 있으므로, 작은 객체 여러개가 존재하는 이미지에 대해서는 학습이 어려움
- Bounding box의 형태가 학습 데이터를 통해서만 학습되기 때문에, 새로운 input으로 이전에 학습되지 않은 형태의 Bouncing box를 예측해야 할 경우, 제대로 된 예측을 할 수 없음
- 몇 단계의 Convolution Layer를 거쳐 나온 Feature map을 대상으로 Bounding box를 예측하기 때문에 객체의 위치를 정확히 파악하는 Localization이 다소 부정확해 지는 경우가 발생
Experiments

- 다른 Real-Time Detection 시스템들보다 월등히 높은 mAP를 기록함
- Fast R-CNN과 비교해보았을 때, 훨씬 낮은 Background error를 보이며, 이는 이미지 전체를 보고 학습하기 때문에 배경에 대한 학습이 잘 되었다는 반증이되기도 함

- 일반 이미지들로 Pre-train 후, 예술 작품에서 Object를 검출한 결과, 다른 모델들보다 훨씬 더 좋은 성능을 보였고, 이는 일반화가 아주 잘 되고 있다는 결과를 보여준다.
Conclusion
- YOLO모델은 간단하게 구현이 가능하며, 전체 이미지를 바로 학습시킬 수 있음
- Classified-based 접근 방식과는 다르게 Detection 성능과 직접적인 관계를 맺고 있는 loss function을 통해 학습
- YOLO는 Real-Time Object Detection의 성능 지표를 올렸으며, 일반화가 잘 되기 때문에 새로운 도메인에도 쉽게 적용 가능한 모델이다.
Reference
youtube
- https://www.youtube.com/watch?v=Ae-p7QVOdbA
- https://www.youtube.com/watch?v=8DjIJc7xH5U
- https://www.youtube.com/watch?v=eTDcoeqj1_w
blog
'Paper-Review > object detection' 카테고리의 다른 글
| YOLO9000: Bettter, Faster, Stronger review (0) | 2022.04.06 |
|---|



