YOLO(You Only Look Once)는 논문 본문에서 R-CNN계열 모델보다 성능이 좋다고 알려져 있다.
It outperforms other detection methods, including DPM and R-CNN, when generalizing from natural images to other domains like artwork.
또한, YOLO의 가장 큰 특징은 Object detection을 이미지 픽셀 좌표에 대응되는 bounding box을 찾고 그것에 대한 class확률을 구하는 Single Regression Problem으로 진행된다.
*(Mask R-CNN의 경우 region proposal methods로 잠재적인 바운딩 박스를 생성한후 proposed 박스의 분류를 실시한다. 이러한 복잡한 파이프라인은 개개인의 요소가 분리되어 학습되어야 하므로 느리고 최적화하기 어려운 단점이 존재한다.)
YOLO의 경우 아래의 이미지처럼 하나의 convolutional network 가 한번에 여러개의 bounding boxes를 예측하고, 각 bounding box에 대해 class probabilities 를 예측한다.
: 네트워크의 큰 특징 중 하나는 이미지 전부로부터 features를 뽑아서 각 bounding box를 예측한다는 것이다.
Input image를 S X S grid로 나눔
각각의 grid cell은 B개의 bounding box와 bounding box의 confidence score를 갖는다. (confidence score은 박스가 객체를 보유하고 있다고 생각하는 모델의 신뢰도와 예측하는 박스의 정확도를 반영한다.)
Confidence Score = Pr(Object)∗IOU
(object가 없다면 confidence score = 0)
Conditional Class Probability: Pr(Classi|Object)
각각의 bounding box는 x, y, w, h, confidence로 구성된다.
bounding box 구성 : x, y, w, h, confidence
각각의 grid cell은 C개의 conditional class probability를 가지게 된다.
이 계산을 각 bounding box에 대해 하게되면 총 98개(7x7x2(grid x bounding box))의 class specific confidence score를 얻을 수 있다.
이 98개의 class specific confidence score에 대해 각 20개의 클래스를 기준으로 non-maximum suppression을 하여, Object에 대한 Class 및 bounding box Location를 결정한다.
ImageNet 1000-class competition dataset을 이용하여 convolutional layer를 미리 학습
마지막 layer은 bounding box의 좌표와 class의 확률 모두를 예측한다. image의 width와 height와 bounding box의 width, height의 비율로 파라미터를 정규화고, 그 결과로 해당 값들은 0과 1사이로 오도록 한다. 또한 bounding box의 x와 y의 좌표를 특정한 grid cell 의 위치에 offset되도록 매개변수화하여 0과 1사이의 오도록 한다.
마지막 layer에는 linear activation function을 사용하였고 나머지 다른 layer에는 leaky를 사용함.
- 참고 링크 :
1. https://curt-park.github.io/2017-03-26/yolo/
2. https://wingnim.tistory.com/56
3. https://docs.google.com/presentation/d/1aeRvtKG21KHdD5lg6Hgyhx5rPq_ZOsGjG5rJ1HP7BbA/pub?start=false&loop=false&delayms=3000&slide=id.g137784ab86_4_484
- 논문 링크 : https://arxiv.org/abs/1506.02640