Abstract
YOLO 업데이트 소개한다.
320x320에서 YOLOv3는 28.2mAP로 22ms걸렸고 SSD보다 3배 더 빨랐다.
0.5 IOU mAP detection metric YOLOv3는 꽤 좋다.
Titan x에서 51ms로 57.9 $AP_{50}$으로 Retinanet보다 3.8배 정도 빨라졌다.
Introduction
폰의 발전으로 많은 연구를 하지 않았고 GAN 연구를 약간 했다.
그리고 지난 연도에 연구되어 있는것으로 YOLO를 개선할 수 있었다.
The Deal
* Bounding Box prediction
우리의 system은 anchor box처럼 차원 cluster를 사용하는 bounding box를 예측한다.
network는 각 bounding box에 4 좌표를 예측한다($t_x, t_y, t_w, t_h$)
만약 cell이 ($c_x,c_y$)로 image의 가장 위 왼쪽에 좌표이고 이전 bounding box가 넓이($p_w$)와 높이($p_h$)를 가진다면
위와 같은 예측 결과가 나온다.
training하는 동안 우리는 SSE(sum of squared error) loss를 사용한다.
좌표 prediction에 대한 ground truth는 $\hat{t*}$이라면 gradient는 ground truth 값에서 우리의 예측값을 뺀다($\hat{t*}$- $t*$)
YOLOv3는 logistic regression을 사용하는 각 bounding box에 대한 objectness score를 예측한다.
이전의 bounding box가 이전의 다른 bounding box보다 ground truth object와 더 많이 겹친다면 1이 될 것이다.
이전의 bounding box가 최고가 아니지만 몇몇 threshold보다 더 많이 ground truth object와 겹친다면 prediction을 무시한다.
우리는 0.5 threshold를 사용한다.
우리의 system은 각 ground truth object에 대한 이전의 한 bounding box를 할당한다.
이전의 bounding box가 ground truth object에 할당되지 않는다면, 좌표나 class 예측에 대한 loss는 없고 objectness만 생긴다.
* Class Prediction
각 box는 bounding box가 multilabel classification을 사용해서 포함할지도 모르는 class를 예측한다.
우리는 softmax를 사용하지 않고 대신에 독립적인 logistic classifier를 사용한다.
training동안 class prediction에 binary cross entropy loss를 사용한다.(복잡한 domain할 때 도움을 준다)
softmax를 사용하는 것은 각 box가 하나의 class를 가진다는 가정을 적용하지만 그렇지 않은 경우도 있다.
multilabel 방법은 model을 더 낫게 한다.
* Predictions Across Scales
YOLOv3는 3개의 다른 scale box를 예측한다.
우리의 system은 feature pyramid network와 비슷한 개념을 사용해서 scale로부터 feature를 추출한다.
기본 feature 추출기로부터 여러 convolutional layer를 추가한다.
convolutional layer의 마지막 layer는 3차원 tensor encoding bounding box, objectness, class prediction을 예측한다.
COCO dataset을 가지고 실험에서 우리는 각 scale에 있는 3개 box를 예측한다.
tensor: N x N x [3*(4+1+80)] (4 bounding box offset, 1 objectness prediction, 80 class prediction)
이전의 2개 layer로부터 feature map을 가지고 2배 더 upsample한다.
network 초기에 feature map을 가지고 연속인 upsample된 feature와 병합한다.
이 방법은 upsample된 feature에 있는 semantic information과 더 앞에 있는 feature map에 있는 finer grained information
을 얻는데 더 효과적이다.
우리는 결합된 feature map을 처리하기 위해 더 많은 convolutional layer를 추가하고, size를 두배 더 큰 비슷한 tensor를 예측한다.
마지막 scale을 예측하기 위해 한번 더 똑같은 design으로 한다.
그러므로, 3번째 scale 에 대한 예측은 network에 있는 이른 fine grained feature뿐만 아니라 모든 이전 연산으로 이득을 얻는다.
이전 bounding box를 결정하기 위해 k-means clustering을 사용한다.
9개의 cluster과 3개의 임의 scale을 sort하고 scale에 따라 cluster를 균등하게 나눈다.
* Feature Extractor
새로운 network는 YOLOv2, Darknet-19, 최신식 residual network stuff에 사용된 netowkr 간 hybrid 방법이다.
network는 연속적인 3x3과 1x1 convolutional layer를 사용하지만 몇몇 shortchut connection을 가지고 더 크다.
network는 53 convolutional layer를 가지고 Darknet-53이라고 부른다.
각 network는 동일한 seting으로 학습되고 256x256으로 single crop 정확도를 test한다.
실행시간도 256x256으로 titan x에서 측정함.
Darknet-53은 sota를 달성하고 더 적은 부동 소수점 연산과 더 빠른 속도를 가진다.
Darknet-53은 resnet101보다 더 낫고 1.5배 더 빠르고 resnet152와 비슷한 성능을 보이고 2배 더 빠르다.
가장 빠른 초당 부동 소수점 연산을 가진다.
* Training
hard negative mining이 아닌 것이나 다른 것들이 없는 전체 image를 학습한다.
그리고 multi-scale 학습, 많은 data augmentation, batch normalization, 모든 표준 설정을 사용한다.
training과 test에 Darknet neural network framework 사용
How We Do
YOLOv3는 COCO의 average mean AP metric에서 SSD variant와 동등하지만 3배 더 빠르다.
Retinanet과 동등하고 SSD variant를 능가한다.
YOLOv3는 object에 대한 만들어진 decent box에 뛰어난 강력한 detector이다.
그러나 IOU threshold가 object에 맞춰서 완벽한 box를 얻기 위해 YOLOv3 struggle을 증가시킬 때 성능은 떨어진다.
과거에서 YOLO는 작은 object로 고통을 받았는데 새로운 multi-scale prediction에서 YOLOv3가 상대적으로 높은 $AP_s$ 성능을 보였다.
그러나 medium과 large size object에서 성능이 안 좋았다.
Things We Tried That Didn't Work
- Anchor box x,y offset prediction
linear activation을 사용해서 많은 box width나 height로 x, y offset을 예측하는 기본적인 anchor box prediction 매커니즘 사용 -> model의 안정성을 떨어뜨리고 잘 작동하지 않는다.
- logistic 대신 Linear x, y prediction
logistic activation 대신 x, y offset을 예측하기 위해 linear activation을 사용 -> mAP가 하락했다
- Focal loss
focal loss 사용 -> 약 2% mAP 감소
YOLOv3는 separate objectness prediction과 conditional class prediction을 가지기 때문에 focal loss가 풀려는 문제에 이미 robust하다
- 이중으로 IOU threshold와 truth 할당
Faster R-CNN은 training 동안에 두개의 IOU threshold를 사용한다.
prediction이 ground truth와 0.7로 겹침 -> positive example
0.3~0.7 -> 무시
0.3보다 작으면 -> negative example
비슷한 전략을 사용하지만 좋은 결과를 얻지 못한다.
하지만 이와 같은 기술은 적어도 local optima를 보이고 좋은 결과를 창출한다.
아마도 training에 안정화를 위해 약간의 tuning이 필요하다.
What This All Means
YOLOv3는 빠르고 정확해서 좋은 detector이다.
COCO에서 0.5~0.95 사이 average AP에서는 좋지 않았는데 0.5 IOU의 옛날 detection mertic에서는 매우 좋았다.
0.3인 bounding box를 검토하고 IOU 0.5을 가지는 하나의 box로부터 구별하기 위해 인간을 training하는 것은 어렵다.
'computer vision > object detection' 카테고리의 다른 글
mAP(mean Average Precision) (0) | 2024.05.17 |
---|---|
Single-Shot Refinement Neural Network for Object Detection (0) | 2024.04.09 |
Focal Loss for Dense Object Detection (0) | 2024.03.12 |
R-FCN: Object Detection viaRegion-based Fully Convolutional Networks (0) | 2024.03.04 |
Training Region-based Object Detectors with Online Hard Example Mining (0) | 2024.02.23 |