paper
: Focal Loss for Dense Object Detectionauthor
: Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollársubject
: 2017 IEEE International Conference on Computer Vision (ICCV)one-stage detector들은 two-stage detector들에 비해
faster and simpler한 potential이 있다.
하지만 accuracy측면에서는 아직 two-stage detector들에 비해 한참 멀었다.
In this paper, we investigate why this is the case.
(왜 one-stage detector들의 accuracy가 two-stage detector들에 비해 떨어지는지 밝혀낼 것이다.)
우리는 the extreme foreground-background class imbalance이 중요한 원인임을 발견했다.
➡️ 이를 해결하기 위해,
standard cross entropy loss를 reshape하여 well-classified examples에 대해서 assign된 loss에 가중을 낮추는 방식을 사용했다.
➡️ 이와 같은 새로운 Focal Loss는 training을 일부 hard examples에 focus시키고,
training 중에 easy negatives들이 detector를 overwhelming하는 것을 방지한다.
우리의 효율적인 Focal Loss를 평가하기 위해서 simple dense detector인 RetinaNet을 design하고 train시켰다.
two-stage detector들의 success에도 불구하고 나오는 질문은 :
simple one-stage detector도 similar accuracy를 달성할 수는 없을까?이다.
최근 YOLO and SSD 같은 one-stage detector들은 two-stage method들에 비해
accuracy를 10-40%만 줄이면서 faster detector임을 보였다.
하지만 이 논문에서는 더 나아가,
처음으로 FPN 또는 Mask R-CNN의 variants인 Faster R-CNN과 같이
more complex two-stage의 state-of-the-art COCO AP와 일치하는
one-stage object detector를 소개할 것이다.
위 결과를 달성하기 위해서,
우리는 주요 장애물로써, training 시에 class imbalance가 발생한다는 것을 알아냈다.
그리고 우리는 class imbalance를 제거할 수 있는 new loss(= focal loss)를 소개할 것이다.
two-stage detector들은 class imbalance 문제를
two-stage cascade and sampling heuristics로 해결할 수 있었다.
반면에,
one-stage detector들은 image 전체에 균일하게 sampling된
훨씬 더 많은 the set of candidate object locations를 처리해야 한다.
two-stage detector처럼 similar sampling heuristics을 적용할 수는 있지만,
여전히 training procedure은 쉽게 classified되는 background examples에 의해
dominated되어질 수 있어서 비효율적이다.
이 논문에서는 이전에 class imbalance 문제를 다룰 수 있는 이전의 접근법들에 비해
더욱 효율적으로 동작하는 new loss function을 제안할 것이다.
the new loss function은 dynamical하게 scaled되는 cross entropy loss이다.
이때 scaling factor는 correct class가 증가함에 따라 0으로 감소하게 된다.
Figure 1. 참고.
이 scaling factor()는
training 중 easy examples의 contribution을 자동으로 줄일 수 있으며,
model을 빠르게 hard examples에 focus하도록 만들 수 있다.
실험 결과, 우리의 Focal Loss
를 사용한 one-stage detector는
the sampling heuristics or hard example mining, 이전에 one-stage detectors를 training시키기 위한 state-of-the-art techniques들에 비해
high-accuracy로 train시킬 수 있다.
To demonstrate the effectiveness of the proposed focal loss,
우리는 an input image에서 object locations를 dense sampling하는
a simple one-stage object detector인 RetinaNet
을 design했다.
이 design은 effective in-network feature pyramid와 anchor boxes를 사용하는 것을 특징으로 한다.
ResNet-101-FPN backbone을 base로 한 RetinaNet은
COCO test-dev AP가 39.1을 달성하며 초당 5fps에서 작동한다.
이는 Figure 2.에서 볼 수 있듯이,
이전에 발표된 best single-models results from both one and two-stage detectors들을 능가한다.
(skip)
Focal Loss
는
training 동안 foreground and background classes가 (1 : 1000)인 극한의 scenario에서
one-stage object detection을 다루기 위해 design되었다.
우리는 Cross Entropy(CE) loss for binary classification으로부터 focal loss를 소개할 것이다.
Binary classification models은 기본적으로
or 을 출력할 확률이 동일하도록 initialized된다.
이러한 initialization 상태에서 class imbalance가 존재할 경우,
빈도가 높은 class로 인한 loss가 전체 loss를 dominate하고
초기 training에서 instability를 초래할 수 있다.
이를 극복하기 위해,
training 시작 시 model이 예측하는 rare class(foreground)에 대한
값에 대한 'prior(사전)'개념을 도입했다.
RetinaNet
은The backbone
은The first subnet
은The second subnet
은We adopt the Feature Pyramid Network(FPN)
as the backbone network for RetinaNet.
간단히 말해서,
FPN은 standard convolutional network를
top-down pathway and lateral connections를 추가하여
a single resolution input image에 대해서
multi-scale feature pyramid를 효율적으로 만들어내는 network이다.
pyramid의 each level은 different scale의 object를 detecting하는 데에 사용되어,
multi-scale prediction을 향상시킬 수 있다.
FPN 논문에서 처럼,
우리는 ResNet architecture 위에 FPN을 구축했다.
우리는 level -까지의 pyramid를 구성했다.
여기서 은 pyramid level을 indicates한다.
(은 input보다 배 낮은 resolution을 갖음)
또한 FPN 논문에서 처럼
all pyramid level에 channels를 갖는다.
하지만 FPN과는 몇 가지 차이점이 있다.
(아래의 minor modifications들ㄹ은 accuracy를 유지하면서 speed를 향상시킴)
we use translation-invariant anchor boxes similar to those in RPN variant in FPN.
The anchors have areas of to on pyramid levels to , respectively.
As in FPN, at each pyramid level we use anchors at three aspect ratios {1:2, 1;1, 2:1}
For densor scale coverage than in FPN,
at each level we add anchors of sizes {} of the original set of 3 aspect ratio anchors.
In total there are anchors per level
and across levels they cover the scale range 32 - 813 pixels with respect to the network's input image.
(32 = 32, 813 = 512)
Each anchor is assigned a length one-hot vector of classification targets,
where is the number of object classes, and a 4-vector of box regression targets.
We use the assignment rule from RPN[Faster R-CNN]
but modified for multi-class detection and with adjusted thresholds
(요약) 만약 GT와의 IoU가
0.5 이상이면 positive anchor.
0.4보다 미만이면 negative anchor.
그 사이 값이라면 training 시 무시. (regression subnetwork에 들어가지 않음)
RetinaNet forms a single FCN comprised of a ResNet-FPN backbone, classification subnet, and a box regression subnet.
속도를 향상시키기 위해,
우리는 FPN level 당 최대 1k개 top-scoring predictions으로부터
box predictions만 decode했다.
이때, detector confidence는 0.05로 thresholding했다.
모든 level에서의 top predictions은 merge되어지고,
0.5 threshold값을 사용하여 nms를 거쳐 final detections을 얻는다.