computer vision/object detection

Focal Loss for Dense Object Detection

loosiu 2024. 3. 12. 09:57

Abstract

지금까지 가장 높은 정확도인 object detector는 classifier가 후보 object location의 희소 set에 적용되는 R-CNN에 의해 인기있는 two stage 방법이다.

반면에, possible object location의 규칙적이고 dense sampling에 적용된 one stage detector는 가장 빠르고 간단하게 되는 가능성을 가지지만 지금까지 two stage detector의 정확도를 따라간다.

 

  • 왜 one stage detector는 빠르지만 정확도가 낮은지

:  dense detector의 training 동안에 극심한 foreground background class imbalance

 

잘 분류된 example에 할당된 loss를 down weight하는 거와 같이 기본 cross entropy를 변경함으로써 class imbalance를 다루는 것을 제안한다.

새로운 Focal loss는 hard example의 희소 set에 학습하는 것에 초점을 맞추고 training동안 detector를 압도하는 것으로부터 easy negative의 방대한 양을 막는다.

loss의 효율성을 평가하기 위해, 간단한 dense detector인 Retinanet을 design하고 학습한다.

focal loss로 학습할 때 Retinanet은 two stage detector의 존재하는 모든 sota의 정확도를 넘기고 이전 one stage detector 속도에 맞출 수 있다.

 

 

Introduction

현재 sota인 object detector는 proposal 중심 매커니즘인 two stage에 기반된다.

R-CNN framework에서 인기있는 것처럼 첫번째 단계는 후보 object location의 sparse set을 만들고 두번째 단계는 foreground class 중 하나나 cnn을 사용하는 background로 각 후보의 location을 분류한다. 

sequence의 진보를 통해, two stage framework는 COCO benchmark에서 일관되게 가장 높은 정확도를 달성한다.

 

  • one stage detector는 two stage와 비슷한 정확도를 달성할 수 없나?

: class imbalance때문에 쉽지 않아서 새로운 loss function 제시

 

class imbalance는 two stage cascade와 sampling heuristic으로 R-CNN과 같은 detector에서 다뤄졌다.

propossal stage(selective search, edge box, etc)는 대부분 background sample을 거르는 작은 수로 후보 object location의 수를 급격하게 줄인다.

2번쨰 classification stage에서, 고정된 foreground, background 비율(1:3)이나 OHEM과 같은 sampling heuristic은 foreground와 background 간에 처리할 수 있는 균형을 유지한다.

 

반면에, one stage detector는 image에 있는 sample된 후보 object location의 엄청 큰 set을 처리해야한다.

 

 

 

Retinanet의 design은 anchor box의 사용과 network feature pyramid에서 효율적으로 나타난다.

resnet101- FPN backbone에 기반된 Retinanet은 5fps로 실행되는 동안 COCO test-dev에서 이전에 최고로 출시된 one stage, two stage 둘 다 능가하는 39.1% AP로 달성하므로 효율적이고 정확하다.

 

 

Focal loss

Focal loss는 training동안에 foreground와 background class 간에 극심한 imbalance인 one stage object detection을 다루기 위해 design된다.

 

 

 

* Focal Loss Definition

  • focal loss의 두가지 특성

1. example이 오분류되고 p_t가 작을 때, modulating factor는 1에 가깝고 loss는 영향을 받지 않는다.

p_t가 1로 갈 때, factor는 0으로 가고 잘 분류된 example에 대한 loss는 down weight된다.

 

 

2. focusing parameter \gamma는 easy example이 down weight되는 비율을 조절한다.

\gamma = 0: Focal Loss(FL)는 Cross Entropy loss(CE)와 동일

\gamma 증가: modulating factor의 효과 증가된다

 

 

직관적으로, modulating factor는 easy example로부터 loss 기여를 줄이고 example이 낮은 loss를 받은 범위를 확장한다.   

 

 

* Class Imbalance and Two stage Detectors

  • two stage detector가 cross entropy로 class imbalance를 다루는 법

1. two stage cascade

2. biased minibatch sampling

 

첫번째 cascade stage는 거의 무한대인 object location의 set을 1000개나 200개로 줄이는 object proposal 방법이다.

선택된 proposal은 랜덤이 아니고 대부분의 easy negative을 없애는 true object location에 해당한다.

두번째 stage를 학습할 때, biased sampling은 positive와 negative example 비율이 1:3인 minibatch를 구성한다.

이 비율은 sampling을 거쳐 구현된 \alpha balancing factor와 같다.

제안된 focal loss는 loss function을 지나 one stage detection system에 있는 방법을 다루기 위해 design된다.

 

 

RetinaNet Detector

 

Retinanet은 backbone network와 two task별 subnetwork로 구성된 network가 통합된 단일 network이다.

backbone은 전체 input image에서 나온 convolutional feature map를 계산하는데 책임이 있고, pretrain된 convolutional network이다.

첫번째 subnet은 backbone의 output에서 convolutional object classification을 수행하고 두번째 subnet은 convolutional bounding box regression을 수행한다.

두 subnetwork는 dense detection으로 one stage에 대해 제안하는 간단한 design이 특징이다.

세부적인 구성요소에 대해 많은 선택을 하는 동안 대부분 parameter는 value를 추출하는 것에 세심하지 않다.

 

- Feature Pyramid Network Backbone

Retinanet에 대한 backbone network로 FPN을 채택

FPN는 top down pathway와 lateral connection을 가지는 convolutional network를 증가시킨다.

그래서 network는 single resolution input image로부터 multi scale feature pyramid을 효율적으로 만든다.

pyramid의 각 level은 다른 scale로 object를 detecting하는 것에 사용된다.

FPN은 FCN으로부터 multi scale prediction을 향상시킨다.

 

renet architecture의 top에 FPN을 추가하고, level P_3에서 P_7까지 pyramid를 구성한다.

모든 pyramid level은 256 channel(C)이다.

 

- Anchors

RPN variant에 있는 것과 비슷한 translation invariant achor box를 사용한다.

anchor는 P_3에서 P_7까지 각각 pyramid level에서 32^2에서 512^2의 영역을 가진다.

각 pyramid level에서 {1:2,1:1,2:1} 세가지 aspect ratio 사용

denser scale 적용범위에 대한 각 level에 anchor의 size{2^0,2^\frac{1}{3},2^\frac{2}{3}}를 추가한다. 

전체적으로 level당 9개의 anchor가 있고 level에 걸쳐 network의 input image에 대해 32~813 pixel scale 범위를 다룬다. 

 

각 anchor는 K개의 classification target의 one hot vector 를 할당한다.

 

K: object class와 4 vector의 box regression target의 수 

 

anchor는 0.5 IOU threshold를 사용하는 ground truth object box로 할당되고, IOU 0.5미만은 background로 한다.

각 anchor는 대부분 하나의 object box로 할당될 때, K개의 label vector에 해당하는 입력을 설정하고 다른 입력은 0으로 설정한다.

anchor가 0.4이상 0.5이하로 겹쳐서 할당되지 않을 때 training동안 무시된다.

box regresstion target은 각 anchor 간 offset으로 계산되고, object box에 할당되거나 생략된다.

 

- Classification Subnet

classification subnet은 각각의 anchor(A)와 object class(K)에 대한 각 공간적 position에 object 존재 확률을 예측한다.

subnet은 각 FPN level에 추가된 작은 FCN이고 subnet의 parameter는 모든 pyramid level에 공유된다.

주어진 pyramid level로부터 C channel을 가지는 input feature map을 가질 때, subnet은 4개의 3x3 conv layer을 적용하고 C개의 filter, ReLU activation, K A filter를 가지는 3x3 conv layer를 쓴다.

최종으로 sigmoid activation은 공간적인 location당 K A binary prediction output에 사용한다

 

RPN에는 반면에, object classification subnet이 더 깊고, 3x3 conv만 사용하고 box regression subnet에 parameter를 공유하지 않는다.

 

- Box Regression Subnet

object classification subnet과 병렬로, 각 anchor box에서 ground truth object까지 offset을 regressing하는 목표를 위해 각 pyramid level에 있는 다른 작은 FCN을 추가한다.

box regression subnet의 design은 공간 위치당 4A linear output에서 끝나는 것을 제외하고 classification subnet과 동일하다.

공간 위치당 각각의 A anchor에 대한, 4개의 output은 anchor과 ground truth box 간에 상대적인 offset을 예측한다.

대부분 최근 연구와 달리, 우리는 더 적은 parameter를 사용한 class agnostic bounding box를 사용하고 동일한 효과를 얻었다.

같은 구조를 공유함에도 불구하고 object classification subnet과 box regression subnet은 독립적인 parameter를 사용한다.

 

* Inference and Training

- Inference

Retinanet은 classification subnet과 box regression subnet인 Resnet-FPN backbone으로 구성된 single FCN을 구성한다.

속도를 향상시키기 위해, 0.05인 detector confidence threshold한 후 FPN level당 1k top scoring prediction으로부터 box prediction을 decode한다.

모든 level으로 top prediction은 병합되고 0.5 threshold를 가지는 nms는 final detection을 만든다.

 

- Focal Loss

 

classification subnet의 output에 focal loss를 사용한다.

focal loss는 각 minibatch에 대한 anchor의 작은 set을 고르기 위해 heuristic sampling(RPN)이나 hard example mining(OHEM, SSD) 사용의 일반적인 실행와 대조가 된다.

image의 total focal loss는 ground truth box에 할당되는 anchor의 수로 normalize된 모든 100k ancor에 focal loss의 합으로 계산한다.

 

- Optimization

  • SGD
  • minibatch당 16 image
  • 90k iteration = lr 0.01 -> 60k에서 0.001 -> 80k  0.0001
  • data augmentation: horizon flipping
  • weight decay: 0.0001
  • momentum: 0.9
  • training loss: focoal loss와 box regression에 사용된 smooth L_1 loss의 합

 

 

Experiments

* Training Dense Detection

  • FPN을 가지는 Resnet50 or 101 
  • training, testing할 때, 600 pixel image  

 

 

1. 초기화나 학습 전략 수정없이 retinanet에 CE loss를 사용

-> 발산으로 조기 마감

 

2. \alpha-balanced CE loss 사용 -

> \alpha = 0.75일 때, 0.9 AP

 

3. focal loss에 새로운 parameter \gamma

-> \gamma = 0일 때, CE loss와 동일 

    \gamma가 증가할 때, AP 증가 

 

4. OHEM은 높은 loss example을 사용하는 minibatch를 만듦으로써 two stage detector의 training을 향상시키는 것을 제안

-> OHEM보다 FL이 더 효과적이다.

 

5.hinge loss로 학습

-> 불안정하고 의미있는 결과가 안 나온다

 

* Model Architecture Design

- Anchor Density

one stage detection system에 있는 가장 중요한 design factor 중 하나는 어떻게 가능한 image box의 공간을 꽉 채우는지이다.

two stage detector는 position, scale, region pooling 연산에서 사용하는 aspect ratio으로 box를 분류한다.

반면에, one stage detector가 고정된 sampling grid를 사용하는 것처럼, 이 방법에 있는 box의 큰 범위를 가지기 위한 유명한 방법은 다양한 scale과 aspect ratio의 box를 다루기 위해 각 공간적 위치에 많은 anchor를 사용하는 것이다.

 

- Speed versus Accuracy

더 큰 backbone network는 더 높은 정확도를 나타내지만 속도가 느리다.

inputi image scale의 경우도 마찬가지다.

resnet 101-FPN을 가지는 rentinanet과 600 pixel image scale은 resnet 101-FPN Faster R-CNN의 정확도와 비슷하다.

모든 two stage 방법의 정확도를 능가하기 위해 , retinanet이 더 큰 scale을 사용한다. 

 

 

 

Conclusion

우리는 one stage object detector가 top 성능을 능가하는 two stage 방법을 하지 못하게 하는 장애물인 class imbalance를 확인한다.

class imbalance를 다루기 위해, 우리는 hard negative example을 학습하는데 집중하기 위해 cross entropy loss에서 변항을 적용하는 focal loss를 제안한다.

focal loss는 간단하고 아주 효과적이다.

fully convolutional one stage detector을 design함으로써 효력을 입증하고, sota 정확도와 속도를 달성하는 것을 보여주기 위해 경험적인 방법으로 report한다.