ML study > Object Detection > One stage detection
YOLO
- YOLO는 one stage network로 two stage network는 물론 이전의 one stage network 보다도 훨씬 빠른 동작이 가능하도록 구현했으며 mAP 성능역시 two stage network와 비슷한 수준이다.
1. YOLO 동작
- YOLO는 위 그림과 같이 이미지를 S x S 그리드로 나누고 하나의 그리드 셀에서 bounding box 와 그곳에 물체가 있을 가능성, 그리고 class probability 를 예측한다. 이 때 BB는 grid cell의 center에 위치한다고 가정한다. 따라서 S x S x (B*5+C) 와 같은 형식의 output이 나오며 이로부터 최종적인 bounding box와 물체를 classification 한다.
-
다음은 network 구조로 GoogleNet을 조금 수정하여 사용했다고 한다.
-
마지막 layer size를 보면 7 x 7 x 30 인 것을 알 수 있는데 구체적으로 무엇을 의미하는지 살펴보자.
7x7은 앞서 설명한 SxS와 같이 grid size를 의미한다. 논문에서는 grid size를 7 로 두었다. 채널은 하나의 그리드 셀에서 bounding box 와 그곳에 물체가 있을 가능성, 그리고 class probability 를 의미한다. 이것의 크기가 30인 이유는 하나의 그리드 셀에서 두개의 bounding box를 예측하기 때문이다.
즉, 2 (하나의 grid cell에서 예측하는 BB개수) x 5 (BB의 좌표개수 + 그곳에 물체가 존재할 확률 값) + 20 (하나의 grid cell에 대한 classification score) 이렇게 해서 총 30개의 channel이 된다.
- 이렇게 이미지 당 98개의 BB가 그려지는데 이것을 합치기 위해 NMS 방식을 사용했다. 구체적으로 classificiation score에 따라 N개의 BB 를 정렬하고 BB 중 IOU가 특정값 이상인 경우 동일한 object로 보고 낮은 score의 box는 제거한다. 이 과정을 모든 class에 대해 실행해주면 다음과 같이 깔끔한 object detection 결과를 얻을 수 있다.
2. YOLO 결과
YOLO는 PASCAL VOC 2007 dataset에서 63.4의 mAP와 45 FPS를 얻었으며 conv layer를 줄여서 만든 Fast YOLO의 경우 mAP가 줄었지만 155 FPS 라는 놀라운 속도를 달성했다. Faster RCNN의 mAP 보다는 살짝 낮지만 월등한 속도를 보여주었다는 측면에서 굉장히 큰 의미를 지니는 논문으로 볼 수 있다. 다만 BB 예측이 98개로 한정되어 있어 여러개의 작은 object를 detect하기에는 어려울 수 있다.
Reference
[1]: Deep Learning for Generic Object Detection: A Survey
[2]: YOLO
댓글남기기