paper
: You Only Look Once: Unified, Real-Time Object Detectionauthor
: Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadisubject
: 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Las Vegas, NV, USA, 2016 pp. 779-788.우리는 object detection에 대한 새로운 접근법인 YOLO
를 소개한다.
이전에 object detection에 대한 연구들은 detection을 하기 위해 classifier 문제로 재정의했었는데,
우리는 object detection을
separated bounding boxes와 associated(연관된) class probabilities에 대한 regression 문제로 재정의할 것이다.
A single neural network는 한 번의 evaluation 안에 전체 image로부터 bounding boxes와 class probabilities를 즉시 예측한다.
전체의 detection pipeline이 a single network이기 때문에, detection performance에 대해 end-to-end로 optimize될 수 있다.
우리의 unified architecture는 매우 빠르다.
우리의 base YOLO model은 real-time에 image를 45fps를 처리한다.
조금 더 작은 version인, Fast YOLO
는 다른 real-time detectors들의 2배의 mAP를 달성하면서 155fps를 처리할 수 있다.
state-of-the-art detection system들과 비교했을 때,
YOLO는 더 많은 localization error를 만들지만(?),
background에 대해 false positive 예측이 더 적다.
결과적으로 YOLO는 object들의 very general representations을 학습한다.
따라서 YOLO는 DPM and R-CNN을 포함한 다른 detection method들보다 더 우수하다.
현재 detection systems은 detection을 수행하기 위해 classifier로 재정의된다.
object를 detect하기 위해서 detection systems는 object에 대한 classifier를 취하고,
test image에 대한 다양한 locations and scales를 평가한다.
deformable(변형될 수 있는) parts models (DPM)과 같은 system들은
classifier가 전체 image에 걸쳐 균일한 간격의 위치에서 작동하는 sliding window 방법을 사용한다.
더욱 최근 기법인 R-CNN은
한 image에서 potential bounding boxes를 생성하기 위해 region proposal method를 사용한다.
그리고나서 이러한 proposed boxes에 대해 classifier를 동작시킨다.
classification 이후에 post-processing은 bounding box를 정제하고, duplicate detections을 제거하고, 다른 object들을 기준으로 box를 재평가하기 위해 사용된다.
이러한 복잡한 pipeline은 각각의 component들이 따로 따로 학습되어져야 하기 때문에 optimize하기에 느리고 힘들다.
우리는 object detection을 image pixel에서 bounding box coordinates(좌표)와 class probability까지의 a single regression problem으로 재구성한다.
우리의 system을 사용한다면,
You Only Look Once(YOLO) at an image to predict what objects are present and where they are.
YOLO는 매우 간단하다.
Figure 1.에서 볼 수 있듯이,
하나의 single convolutional network는 multiple bounding boxes와 그 box들에 대한 class probability를 동시에 predict할 수 있다.
YOLO는 full images를 학습하고 즉시 detection performance를 optimize한다.
이러한 unified model
은 object detection의 traditional method들에 비해 몇가지 장점이 있다.
YOLO는 여전히 state-of-the-art detection system들보다 accuracy가 뒤처진다.
image에서 빠르게 object를 식별할 수는 있지만, 특히 작은 object를 정확하게 localize하는 것에 어려움을 겪고 있다.
우리는 이러한 tradeoff를 experiment에서 자세히 설명할 것이다.
우리의 모든 training and testing code는 open source이다.
다양한 pretrained models들을 download할 수 있다.
우리는 object detection의 separate components들을 하나의 single neural network로 통합시켰다.
우리의 network는 각각의 bounding box를 predict하기 위해 entire image로부터 feature를 사용한다.
또한 YOLO는 imaeg에 대해 모든 class에 대한 모든 bounding box를 동시에 prediction한다.
이것은 우리의 network가 전체 image와 image에 있는 모든 object들에 대해 global하게 추론한다는 것을 의미한다.
YOLO design은 end-to-end training과 high average precision을 유지하면서 real-time speed를 유지할 수 있게 한다.
우리는 이 model을 convolutional neural network로 구현했고, PASCAL VOC detection dataset에 evaluate했다.
초기 network의 conv layer들은 image에서 feature를 추출하고, fc layer는 output probabilities와 coordinates를 예측한다.
우리의 network architecture는 image classification을 위한 GoogLeNet model에 의해 영감 받았다.
우리의 networksms 24개의 conv layer에 2개의 fc layer가 따른다.
GoogLeNet에서 사용했던 inception modules 대신에, 우리는 3x3 conv layers 뒤에 1x1 reduction layer를 사용했다.
전체 network는 Figure 3.에 나와있다.
또한 빠른 object detection의 경계를 넓히기 위해 설계된 a fast version of YOLO를 훈련시켰다.
Fast YOLO는 24개보다 더 적은 9개의 conv layer를 갖고, 그 layer들의 filter개수도 더 적다.
network size말고는, YOLO와 Fast YOLO의 모든 training and testing parameters들은 똑같다.
network의 final output은 tensor of predictions이다.
(내 생각)
YOLO의 architecture는 GoogLeNet model에 의해 영감을 받았다고 했는데, 어떤 부분에서 영감을 받은 것인지 궁금했다...
➡️ GoogLeNet의 핵심 아이디어는 크게 2가지,
(1) inception module (2) deeper model 이라고 할 수 있을 것 같은데
inception module을 사용하지 않고 3x3 conv layer 뒤에는 Network In Network의 1x1 conv layer를 사용했다고 하니 (1) inception module 아이디어에서 영감을 받지 않은 것 같다.
YOLO는 24 conv layer로 되어있다고 하니,
이는 당시에는 깊은 model이었기 때문에
확실하진 않지만 model을 깊게 만들었던 GoogLeNet 아이디어에 영감을 받았다고 생각할 수 있을 것 같다.
우리는 conv layer들을 ImageNet 1000-class competition dataset에 pretrain시켰다.
pretraining을 위해 우리는 average pooling layer와 fc layer가 딸려있는 처음 20개 conv layer를 사용했다.
우리는 이 network를 학습시키는 데에 약 일주일 걸렸고 ImageNet 2012 validation set에 대한 top-5 accuracy 88%를 달성했다.
우리는 모든 training and inference를 위해 Darknet framework를 사용했다.
처음 20개의 conv layer들을 pretrain하고 나서, 우리는 detection을 수행하는 model로 변환했다.
Ren et al.에서는 pretrained network에 conv layer와 fc layer를 추가하면 performance가 향상된다는 것을 보여줬다.
그들의 실험에 따라, 우리는 4개의 randomly initialized weights인 conv layer와 2개의 fc layer를 추가했다.
detection은 보통 fine-grained visual information(세밀한 시각 정보)가 필요하므로
우리는 network의 input dimensiondmf 에서 로 늘렸다.
우리의 마지막 layer는 class probablities와 bouding box coordinates를 예측한다.
우리는 bounding box의 width와 height를 image의 width와 height로 normalization하여, 0과 1 사이의 값으로 만들었다.
bounding box의 x, y 좌표를 특정 grid cell 위치의 offset으로 parametrize하여, 이를 0과 1 사이의 값으로 만들었다.
마지막 layer에서는 linear activation function을 사용해고,
나머지 다른 layer에서는 leaky relu를 사용했다.
training에서와 같이,
test image에 대한 detection을 predicting하는 것은 하나의 network evaluation만 있으면 된다.
PASCAL VOC에 대해서,
network는 image당 98개의 bounding box를 예측하고, 각 box에 대해서 class probability를 예측한다.
YOLO는 single network evaluation이기 때문에, test시에 매우 빠른 속도를 갖는다.
grid design은 bounding box prediction에 대해 spatial diversity(공간적 다양성)을 강화한다.
object가 어느 grid cell에 속하는지 명확하며, network는 각 object에 대해 하나의 box만 예측한다.
그러나 일부 큰 object나 multiple cell의 경계에 가까운 object는
multiple cell에 의해 잘 localized될 수 있다.
Non-maximum Suppression은 이러한 multiple detection을 해결하는 데에 사용될 수 있다.
R-CNN or DPM에서처럼 performance에 중요한 부분은 아니지만, non-maximal suppression은 2~3%의 mAP 향상을 도왔다.
논문에서는 inference에 대한 자세한 설명이 없어서, YOLO implementation code를 참고했다.
https://github.com/pjreddie/darknet/blob/master/src/box.c
YOLO는 각 grid cell이 2개의 box만 예측하고, 하나의 class만 가질 수 있으므로
bounding box prediction에 대한 강력한 sptial constraints를 부여한다.
이 spatial constraint는 model이 예측할 수 있는 근처 object의 수를 제한한다.
그래서 우리의 model은 무리를 이루는 작은 object를 detection하는 데에 어려움을 겪는다.
우리 model은 data로부터 bounding box를 예측하는 것을 학습하기 때문에,
새롭거나 비정상적인 aspect ratio 또는 구성을 갖는 object에 대해 generalization하는 데에 어려움을 겪는다.
또한 우리의 architecture가 input image로부터 여러 downsmapling layer를 갖고 있기 때문에
상대적으로 coarse(굵은) 특징을 사용하여 bounding box를 예측한다.
마지막으로, 우리는 detection performance를 근사하는 loss function을 train시키지만,
우리의 loss function은 작은 bbox와 큰 bbox에서의 error를 똑같이 처리한다.
큰 상자에서의 작은 error는 일반적으로 무해하지만,
작은 상자에서의 작은 error는 IOU에 더 큰 영향을 미치게 된다.
우리의 주요 error 원인은 incorrect localization이다.
object detection에 대한 많은 research efforts는 standard detection pipeline을 빠르게 만드는 것이다.
하지만 오로지 M. A. Sadeghi and D. Forsyth. 30hz object detection with dpm v5.만이
real-time에 동작하는(30 fps or better) detection system을 만들었다.
우리는 YOLO를 30Hz 또는 100Hz에서 동작하는 DPM v5
의 GPU implementation과 비교했다.
우리는 또한 object detection systems의 accuracy-performance tradeoffs를 조사하기 위해 상대적인 mAP and speed도 비교했다.
우리가 알기로는, Fast YOLO
가 PASCAL에서 fastest object detection method이다.
52.7% mAP로, 이전의 real-time detection accuracy의 2배 이상 정확하다.
YOLO는 real-time performance를 유지하면서 63.4% mAP로 끌어올렸다.
우리는 또한 YOLO using VGG-16
을 train시켰다.
이 model은 YOLO보다 더 정확하지만 훨씬 느리다.
VGG-16을 기반으로한 다른 detection system과 비교할 수 있지만,
real-time보다는 느리기 때문에 논문의 나머지 부분은 더 빠른 model에 초점을 맞출 것이다.
Fastest DPM
은 DPM의 mAP를 떨어뜨리지 않으면서 효과적으로 속도를 올렸다.
하지만 real-time performance는 여전히 2배 정도 모자라다. (15 fps)
또한 neural network approaches와 비교하여 detection에서 DPM의 상대적으로 낮은 accuracy로 인해 약한 모습을 보임.
R-CNN minus R
은 R-CNN의 Selective Search 방식을 static bounding box proposals로 교체한 model이다.
R-CNN보다 빨라지긴 했지만, 여전히 real-time에는 못 미치며 good proposals도 없어서 accuracy가 상당히 감소함.
Fast R-CNN
은 R-CNN의 classification 단계를 가속화한 model이다.
하지만 여전히 주어진 image마다 bbox를 생성하는 데 약 2초 정도 걸리는 selective search를 사용한다.
그래서 높은 mAP를 갖지만 0.5fps로 여전히 real-time에는 거리가 멀다.
최근인 Faster R-CNN
은 bboxes를 propose하는 것을 selective search 대신 neural network로 바꾸었다.
우리의 test에서, 그들의 가장 정확한 model은 7 fps를 달성하며,
더 작고 정확도가 낮은 model은 18 fps로 동작한다.
VGG-16 version of Faster R-CNN
은 10 mAP가 높지만 6배 느리다.
The Zeiler Fergus Faster R-CNN
은 YOLO보다 정확도도 낮지만 속도도 2.5배 느리다
real-time performance에 달성한 기존 model은 DPM 밖에 없어서 비교 대상이 DPM model밖에 없다.
다른 model들은 대부분 Fast R-CNN variants인데,
accuracy는 높지만 속도가 real-time performance에는 너무 멀어 사실상 비교하기 힘들어 보인다.
YOLO와 state-of-the-art detectors들과 추가로 비교하기 위해,
우리는 VOC 2007 결과에 대한 자세한 분석을 살펴봤다.
Fast R-CNN은 PASCAL에서 highest performing detectors이기 때문에
우리는 YOLO와 Fast R-CNN을 비교했다.
object detection을 위한 비교, 분석 방법으로 D.Hoiem,Y.Chodpathumwan,andQ.Dai.Diagnosingerror in object detectors.의
methodology and tools를 사용했다.
VOC 2012 test set에 대해서, YOLO는 57.9% mAP를 달성했다.
이는 현재 state of the art보다 작으며, VGG를 사용했던 R-CNN에 더 가깝다.
우리의 system을 가까운 경쟁 상대(R-CNN VGG)와 비교하면,
small object에 더 어려움을 겪는다.
bottle, sheep, and tv/monitor같은 category들에 대해서 YOLO는 R-CNN과 Feature Edit에 비해 8~10% 작다.
하지만, cat and train과 같은 category에 대허서 YOLO는 더 높은 performance를 달성했다.
object detection을 위한 academic datasets은
same distribution의 training and testing data이다.
real-time application에서는 모든 가능한 경우를 predict하기 어렵고
test data는 system이 이전에 봤던 data들과는 다를 수 있다.
우리는 YOLO를 the Picasso Dataset and the People-Art Dataset과 비교하였고,
이 두 dataset은 예술작품에서 person detection을 위한 dataset이다.
YOLO는 fast, accurate object detector이므로 computer vision applications에 이상적이다.
우리는 YOLO를 webcam에 연결하고 image를 camera에서 가져오고 detection을 display하는 시간을 포함하여 real-time performance를 유지하는지 확인하였다.
The resulting system은 interactive and engaging(매력적)하다.
YOLO가 images를 개별적으로 처리하지만,
webcam에 연결되면 object를 추적하는 시스템처럼 작동하여 object가 이동하고 appearance(외관)이 변경될 때 detecting한다.
system demo 및 source code는 project website(http://pjreddie.com/yolo/)에서 확인할 수 있다.
object detection에서 localization이란?
"Compared to state-of-the-art detection systems, YOLO makes more localization errors ..."
-> object가 있는 곳을 찾아내는 능력인듯 = bounding box의 정확도?
"우리는 detection을 regression problem으로 재구성하였기 때문에 복잡한 pipeline이 필요가 없다."
기존의 classification problem과 regression problem이 무엇이 다르길래 복잡한 pipeline이 필요없다고 하는 것인지, 구체적인 내용은?
"YOLO는 training과 test time 동안 entire image를 보기 때문에 class 뿐만 아니라 appearance에 대한 contextual information(맥락적인 정보)도 encode한다."
YOLO가 어떻게 inference하길래 contextual information까지 encode할 수 있지?
Pr(Object)는 어떻게 구할 수 있지?