Main Ideas
Bounding box Prediction
YOLO v2는 bounding box 에측 시 t(x, y, w, h)를 구한 후 위 그림처럼 b(x, y, w, h)로 변형시켜 L2 loss를 통해 학습시켰다. 여기서 c(x, y)는 grid cell의 좌상단의 offset이다. 하지만 YOLO v3는 gt좌표를 위의 공식을 거꾸로 적용시켜 t로 변형 후 직접 t(x)와 직접 L1 loss를 통해 학습시키는 방식을 선택한다.
예측한 bbox 마다 objectness score를 Logistic 함수를 적용해 구한다. 또한 anchor box와 gt box와의 IoU 값이 가장 높은 box만 매칭시킨다. gt box에 할당되지 못한 bbox는 bbox regression loss를 만들지 않고, 오직 objextness score에 대한 loss만 발생시킨다.
Class Prediction
각각의 bounding box는 multi-label classification을 수행한다. 요기서 softmax 함수를 사용해 class를 예측할 경우 성능 면에서 좋지 않기 때문에 binary corss-entropy를 사용한다. 이러한 방식은 더 복잡한 데이터셋이 있을 때 유의미한 결과를 보여준다. 예를 들어 하나의 box 안에 복수의 객체가 존재할 때 softmax 함수를 사용해 class를 예측하면 적절하게 객체를 포착하지 못한다는 문제가 있다. 따라서 box에서 각 class가 존재하는지 여부를 확인하는 binary-cross entropy가 더 적절하다고 할 수 있다.
Prediction across scales
YOLO v3는 다른 3개의 scale을 사용하여 최종 결과를 예측한다. 여기서 multi-scale feature map을 얻는 방식은 FPN과 유사하다. 먼저 416X416 사이즈의 이미지를 모델에 입력해 Feature map 크기가 52x52, 26x26, 13x13이 되는 layer에서 feature map을 추출한다.
그 후 가장 높은 level의 feature map을 1x1, 3x3 conv layer로 구성된 작은 FCN에 입력한다. 이 후 FCN의 output channel이 512가 되는 지점에서 feature map을 추출한 뒤 2배로 upsampling한다. 이 후 바로 아래 level에 있는 feature map과 concat한다. 이 후 Merged feature map을 FCN에 입력한다. 이 과정을 다음 level에 있는 Feature map에도 똑같이 수행한다. 이를 통해 3개의 scale을 가진 feature map을 얻을 수 있다.
이 때 각 scale의 feature map의 output channel 수가 [3 x (4 + 1 + 80)] = 255가 되도록 마지막 1x1 conv layer의 channel 수를 조정한다. 여기서 3은 grid cell당 예측하는 anchor box의 수를, 4는 bb offset, 1은 objectness socre, 80은 COCO 데이터셋을 사용했을 때의 class 수이다. 최종적으로는 channel 사이즈가 x255이면서 feature map 크기가 각 52x52, 26x26, 13x13인 feature map을 얻는다.
이러한 방법을 통해 더 높은 level의 feature map으로부터 fine-grained 정보를 얻을 수 있으며, 더 낮은 Level의 feature map으로부터 더 유용한 semantic 정보를 얻을 수 있다.
Feature extracter
YOLO v3에서는 shorcut connection이 추가되어 53개의 layer를 가지는 Darknet-53을 backbone network로 사용한다. Darknet-53은 ResNet-101보다 1.5배 빠르며, ResNet-152와 비슷한 성능을 보이지만 2배 이상 빠르다. 또한 당시 초당 가장 높은 floating point operation 속도를 보여주었으며 이는 GPU를 효율적으로 사용하는 것을 의미한다.
Training YOLO v3
1. feature extracting by DarkNet-53
위에서 언급한 대로 416x416 사이즈의 이미지를 입력해 3개의 multi-scale feature maps를 얻는다.
2. Building feature pyramid by FCN
앞서 얻은 multi-scale feature maps를 1x1, 3x3 conv layer로 구성된 FCN에 입력해 feature pyramid를 설계한다. FCN의 결과로 channel 사이즈가 x255이면서 feature map 크기가 각 52x52, 26x26, 13x13인 feature maps를 얻는다.
3. Loss function
논문에는 정확히 언급되어 있지 않지만 4개의 항으로 구성되어 있다.
- Bbox offset의 MSE
- 객체를 예측하도록 할당된 bbox의 objectness socre의 BCE
- 객체를 예측하도록 할당되지 않은 bbox의 non objectness score의 BCE
- Bbox의 multi-class BCE
4. Inference
추론 시에는 마지막 예측 결과에 NMS를 적용한다.
YOLO v3는 RetinaNet에 비해서는 다소 낮은 성능을 보였지만 SSD와 성능이 비슷하면서 3배 이상 빠른 속도를 보였다.
'DL > Object detection' 카테고리의 다른 글
YOLO v4: Optimal Speed and Accuracy of Object Detection (0) | 2024.01.24 |
---|---|
M2Det(M2Det: A Single-Shot Object Detector based on Multi-level Feature Pyramid Network) (2) | 2024.01.22 |
[논문 리뷰] Object Detection in 20 Years: A Survey (0) | 2024.01.19 |
Mask R-CNN (0) | 2024.01.18 |
FPN (Feature Pyramid Networks for Object Detection) (0) | 2024.01.17 |