[Computer Vision] Object Detection: YOLO v2 & YOLO9000 논문 리뷰
Introduction
1. YOLOv1
- 1-stage object detector
- 각 grid cell 마다 지정된 개수의 bounding box를 예측한다. (x, y, w, h, pc)
- Class probabiliy: 동일한 grid cell에서 예측된 bbox일 경우 같은 class probability값을 가진다.
- 성능이 다른 object detector 보다 낮지만, 속도는 매우 빠르다.
2. Faster R- CNN
- 2-stage object detector
- region proposal network 사용하여 물체 유무, 위치 확인
- cnn을 통해 얻은 feature map에서 proposed region 기반한 ROI로 classification과 bbox 좌표를 구한다.
- 1-stage detector에 비해 성능은 높지만 속도가 매우 느리다.
Main Contribution
-
YOLOv2 제안: YOLOv1의 단점 개선; 연산은 빠르게, 정확도는 높게 개선하였다.
-
YOLO9000 제안: 9000개의 객체를 구분할 수 있도록 하였다.
→ 즉, 존재하지 않은 객체 클래스에 대한 예측도 가능해졌다.-
세분화된 label 할당 가능
-
새로운 분류모델인 Darknet-19을 통해 성능을 향상시켰다.
-
YOLOv2 & YOLO9000
- YOLOv2
-
Better: mAP 성능을 향상시키려고 노력하였다.
- Better의 요소들을 하나씩 추가할 때마다 YOLOv2의 성능 증가
-
Faster: 분류모델 Darknet-19 도입하여 성능을 향상시켰다.
-
- YOLO9000
- Stronger: Classification과 Detection data를 합쳐서 word tree를 생성하고 & Joint Training 진행하여 → 9000개 객체 분류 가능하도록 하였다.
Model: YOLOv2
1. Better을 위해 사용한 방법
-
batch normalization
- 배치 정규화를 통해 이전 레이어의 아웃풋인 다음 레이어의 인풋값의 분포를 고정시켰다.
- 정규화로 overfitting 발생 확률을 줄였다.
- dropout layer 대신 정규화를 사용하였더니 → mAP 2% 증가하였다.
- high resolution classifier
- 저해상도(224x224)로 cnn(darknet)을 pretrain하고, 마지막 10 epoch정도 고해상도(448*448)로 fine tuning을 하였다.
- object detection을 위해서 416x416 이미지로 fine tuning 하였다.
-
convolutional with anchor boxes
- 마지막 부분인 fc layer 2개를 모두 제거하고, cov network(1x1)을 넣어 prediction 하였다.
- grid cell마다 anchor box를 5개 사용하였다.
⇒ mAP는 다소 감소했지만, Recall은 크게 증가함
-
dimension clusters
- anchor box의 ratio, size를 k-means clustering을 통해 최적의 anchor box 탐색한다.
- k-means clustering 기준: 1-IOU(box, centroid)
- k=5일 때 가장 적합함
- Anchor box 15개 사용한 것보다 Cluster IOU(k=5)를 한 것이 Avg IOU값이 높았음
-
direct location prediction
- Anchor box의 각 좌표를 시그모이드 함수에 넣어 grid cell 내에 중심이 위치하도록 한다.
- fine-grained features
- Passthrough layer를 추가한다.
- 고해상도 feature map(큰 객체에 용이)과 저해상도 feature map(작은 객체에 용이)을 합치는 레이어이다.
- 그 결과 mAP 1% 상승하였다.
- Passthrough layer를 추가한다.
- Multi-scale training
- FC 대신에 conv layer 사용하여 input size 변화가 가능하다
- 여러 사이즈의 이미지에도 적용가능한 detection 성능을 낼 수 있다
- 모든 batch 10개마다 random하게 input size 변경하여 학습한다.
-
Experiment
2. Faster을 위해 사용한 방법
- CNN 모델인 DarkNet-19를 적용하였다.
- 19개의 conv layers 와 5개의 maxpooling layers로 구성
- 3x3 filter 사용 (더 깊은 네트워크 만들 수 있음)
-
Network in Network 구조 이후 global average pooling 사용 → params 감소 효과
- 1x1 filter로 feature representation을 더욱 압축
- DarkNet-19는 VGG-16만큼 정확도가 높으면서, Google Net 처럼 빠른 모델이다.
Model: YOLO9000
1. Stronger을 위해 사용한 방법
- Hierarchical Classification 학습을 통해 Word Tree 생성한다.
=> 공통 root를 갖는 label을 묶어 Word Tree 생성 - Dataset Combination with WordTree
- ImageNet + COCO 데이터셋 + ImageNet Detection 합쳐 9000개 class label 생성하였다.
- Joint Classification and detection
- Detection dataset과 Classification dataset 을 oversampling으로 개수를 맞춘다.
- Detection dataset으로 classification & bbox regression의 loss propagate 진행한다.
- Classification dataset으로 classification의 loss만 propagate 진행한다.
-
Experiment
- Word Tree를 Dartknet-19로 분류성능 검증하고,
- 같은 부모 노드로부터 나온 노드끼리 softmax 확률을 계산한다.
특정 class만 예측 성능이 높았고, 일상용품 같은 경우는 성능이 매우 낮았다.
참고 자료
고려대학교 산업경영공학부 DSBA 연구실 - [Paper Review] YOLO9000: Better, Faster, Stronger
댓글남기기