[분석] YOLO 26 Mar 2017 Introduction사람은 어떤 이미지를 봤을때, 이미지 내부에 있는 Object들의 디테일을 한 눈에 파악할 수 있다. (Object가 무엇인지, 어디에 위치해있는지, 그들은 어떤 관계에 있는지 등) 적은 의식적 사고의 개입으로도 운전과 같은 복잡한 행위를 할 수 있는 이유도 여기에 있다. 허나, 근래의 R-CNN과 같은 detection system들은 복잡한 처리과정으로 인해 이러한 Human visual system을 모방하기에는 부족한 부분들을 보인다. (느린 속도, 최적화의 어려움) YOLO(You Only Look Once)는 이미지 내의 bounding box와 class probability를 single regression problem으로 간주하여, 이미지를 한 번 보는 것으로 object의 종류와 위치를 추측한다. 아래와 같이 single convolutional network를 통해 multiple bounding box에 대한 class probablility를 계산하는 방식이다. 기존의 object detection method와 비교했을 때, YOLO가 보여주는 상대적인 장점과 단점은 다음과 같다. 장점:
단점:
차후 실험결과를 통해 위와 같은 tradeoff들에 대해 좀 더 자세히 살펴보도록 하겠다. Unified DetectionOverview:
Test time에는 conditional class probability와 bounding box의 confidence score를 곱하여 class-specific confidence score를 얻는다. \[\begin{align} Class Specific Confidence Score &= Conditional Class Probability * Confidence Score \\ &= Pr(Class{i}|Object) * Pr(Object) * IOU_{pred}^{truth} \\ &= Pr(Class{i}) * IOU_{pred}^{truth}\\ \end{align}\] 논문에서는 YOLO의 성능평가를 위해 PASCAL VOC을 사용하였으며, S, B, C에는 각각 7, 2, 20이 할당되었다. Network DesignYOLO의 network architecture는 GoogLeNet for image classification 모델을 기반으로 한다. (24 Convolutional layers & 2 Fully Connected layers - 참고로 Fast YOLO는 위 디자인의 24의 convolutional layer를 9개의 convolutional layer로 대체한다.) 논문에 기재된 위 그림보다는 Deep Systems의 슬라이드를 참고하는 것이 직관적으로 더 이해하기 쉬울 것 같다. Inference Process참고슬라이드: Deep System’s YOLO - 15~70p 7X7은 49개의 Grid Cell을 의미한다. 그리고 각각의 Grid cell은 B개의 bounding Box를 가지고 있는데(여기선 B=2), 앞 5개의 값은 해당 Grid cell의 첫 번째 bounding box에 대한 값이 채워져있다. 6~10번째 값은 두 번째 bounding box에 대한 내용이다. 나머지 20개의 값은 20개의 class에 대한 conditional class probability에 해당한다. 첫 번째 bounding box의 confidence score와 각 conditional class probability를 곱하면 첫 번째 bounding box의 class specific confidence score가 나온다. 이 계산을 각 bounding box에 대해 하게되면 총 98개의 class specific confidence score를 얻을 수 있다. 이 98개의 class specific confidence score에 대해 각 20개의 클래스를 기준으로 non-maximum suppression을 하여, Object에 대한 Class 및 bounding box Location를 결정한다. Training Process참고슬라이드: YOLO CVPR 2016 - 30~43p YOLO의 Loss function을 이해하는 것으로 Training process에 대한 설명을 대신할 수 있을 것 같다. Loss function을 뜯어보기 전에 전제조건 몇 가지를 먼저 보도록 하자.
(1) Object가 존재하는 grid cell i의 predictor bounding box j Loss Function: (1) Object가 존재하는 grid cell i의 predictor bounding box j에 대해, x와 y의 loss를 계산. \(\lambda_{coord}\): coordinates(x,y,w,h)에 대한 loss와 다른 loss들과의 균형을 위한 balancing parameter. Training YOLO
Limitation of YOLO
ExperimentsTable1: 다른 real-time object detect system들에 비해 높은 mAP를 보여준다. Fast YOLO의 경우 가장 빠른 속도를 보여준다. Figure4: Fast R-CNN과 비교했을 떄, 훨씬 적은 False-Positive를 보여준다. (low backgound error) Table2: Fast R-CNN과 같이 동작하면 Fast R-CNN을 보완하는 역할을 할 수 있다. (low backgound error) Figure5: Natural image training -> Artwork detection 에서 매우 강한 면모를 보인다. Conclusion간단하다. 빠르다. 그리고 빠르다! References
Special thanks to JHS & PJB |