관리 메뉴

ComputerVision Jack

Focal Loss for Dense Object Detection 본문

Reading Paper/Object Detection

Focal Loss for Dense Object Detection

JackYoon 2022. 3. 31. 13:34
반응형

Focal Loss for Dense Object Detection

Abstract

Figure1

  • 객체의 위치에 대한 가능성에 대해 regular, dense sampling 적용하는 one-stage detectors는 빠르고 간단하다. 하지만 two-stage detectors의 정확도 측면에는 다가가지 못했다.
  • 앞의 이유 중 가장 큰 원인은 dense detectors 학습 시킬 때, foregroundbackground 간의 class imbalance것을 발견했다. 이러한 원인을 해결하기 위해 cross entropy loss 수정하여 잘 분류된 예제에 대해선 down-weights 적용한다.
  • 새로운 Focal Losshard examples 집합에 초점을 두어 방대한 negative 집합이 학습 기간 동안 detector 압도할 수 없게 한다. 이런 효과적인 loss 검증하기 위해 RetinaNet 간단한 dense detector 설계하였다.

GitHub - facebookresearch/Detectron: FAIR's research platform for object detection research, implementing popular algorithms like Mask R-CNN and RetinaNet.

 

GitHub - facebookresearch/Detectron: FAIR's research platform for object detection research, implementing popular algorithms lik

FAIR's research platform for object detection research, implementing popular algorithms like Mask R-CNN and RetinaNet. - GitHub - facebookresearch/Detectron: FAIR's research platform for ob...

github.com

Introduction

Figure2

  • two-stage detector 성공에도 불구하고, 자연적인 질문은 one-stage detector 또한 비슷한 정확도를 달성할 수 있지 않은가? 이다. 저자는 two-stage detector의 COCO AP와 일치하는 성능을 제시하는 one-stge detector 제시한다.
  • 이 결과를 달성하기 위해, 학습 시간 동안 class imbalance가 one-stage detector가 정확도 향상을 이루는데 주요 장애물인 것을 주장한다. 따라서 이러한 요소를 제거하기 위한 새로운 loss 제안한다.
  • one-stage detector는 image에서 추출된 object location에 대한 후보군의 집합에서 진행된다. 비슷하게 heuristics 특징이 적용된다고 하더라도, 학습 과정에서 쉽게 background 분류하기엔 충분하지 않다. 이런 불 충분함은 object detection의 고전적인 문제이다.
  • 해당 논문에서 새로운 loss function 제안한다. 이는 이전의 class imbalance 문제의 대안 보다 효과적인 방법이다. 손실 함수에서 동적으로 cross entropy loss 조절한다. 여기서 scaling factor는 제대로 예측한 class confidence가 증가하면 0으로 보낸다.
  • focal loss의 효과를 증명하기 위해 RetinaNet 간단한 one-stage detector 설계하였다. 이는 input image에서 object location 대해 dense sampling 한다.

Related Work

  • RetinaNet의 설계는 이전의 dense detector와 비슷한 부분을 많이 공유한다. 특히 RPN에서 도입된 ‘anchor’ 개념을 사용하며 SSD와 FPN에서 언급된 features pyramids 사용한다. 여기서 강조되는 점은 혁신적인 network design 아니라 간단한 설계로 새로운 loss 때문에 좋은 결과를 도출했다는 것이다.
  • class imbalance 2가지 문제를 야기한다.
    • 대부분의 location 정보가 easy negatives 이기 때문에 의미 있는 learning signal 제공하지 못하여 학습이 충분하지 않다.
    • 거대한 easy negatives가 학습을 압도하여 모델의 일반화를 막는다.
  • 따라서 제안한 focal loss는 one-stage에서 class imbalance 조작하여 sampling 없이 효율적으로 학습 시킬 수 있게 만든다. 또한 easy negative가 loss 압도하지 않아 gradient 계산할 수 있다.
  • outliers 보기 보다 focal loss는 inliers에게 down-weighting 적용하여 class imbalance 해결하려고 한다. 그래야 그들이 수가 많더라도 total loss에 기여하는 부분이 적다.

Focal Loss

  • Focal loss는 학습 기간 동안 foregroundbackground 불균형이 심한 one-stage object detection에 맞게 설계되었다. focal loss는 binary classification 위한 cross entropy(CE)에서 시작되었다.

Cross Entropy

  • (1) 수식에서 $y ∈ {±1}$ 은 ground-truth class 나타내고 $p ∈ [0, 1]$ 은 모델이 예측한 probability class 나타낸다. 편의를 위해 해당 수식은 (2) 바꿀 수 있다.

간결한 표기

  • 해당 loss의 주목할 만한 특징은 Figure 1 참고하면 된다. 쉽게 분류될 수 있는 예에 대해서 사소하지 않은 비중의 loss 발생 시킨다. 다수의 easy example 더할 때, 이러한 작은 loss 값들은 rare class에 대한 loss 압도할 수 있다.

Balanced Cross Entropy.

  • class imbalance 해결하는 흔한 방법은 weight, α ∈ [0, 1] factor 도입하여 class 1에 적용하고 1-α 대해 -1 적용하는 것이다. α는 cross validation 동안 hyper parameter 다뤄진다.

α-balanced CE loss

Focal Loss Definition.

  • 쉽게 분류된 negatives는 다수의 loss 구성하고 gradient 지배한다. α-balancespositive/negative 중요하지만 easy/hard example은 차이가 없다. 따라서 loss function 새롭게 만들어 easy eample에 down-weight 적용하여 hard negatives에 대해 중점을 둔다.

(1-pr)

  • focal loss는 2가지 이점이 있다.
    • 잘못된 분류에 대해 $p_t$ 값은 작아지고 module값은 1에 가까워진다. 이는 loss에 영향을 미치지 않는다. $p_t$가 1이면 module은 0에 가까워지고 잘 분류된 예에는 down-weight 적용한다.
    • parameter γ 통해서 easy example에 대해 down-weight 비율을 조절할 수 있다.
  • 직관적으로 module factors는 easy example에 대한 loss 기여를 낮추고 낮은 loss 배정하는 경향이 있다.

Focal Loss

  • loss layer가 sigmoid operation과 결합하여 p와 loss 함께 연산한다면 성능이 더 좋아지는 것을 확인했다.

Class Imbalance and Model Initialization

  • 빈번한 class 때문에 loss는 전체 loss 지배하고, 초기 학습 시 불안정을 초래한다. 이를 해결하기 위해 ‘prior’ = p 개념을 도입하여 rare class(foreground) 평가한다.

Class Imbalance and Two-stage Detectors

  • 제안한 focal loss는 two-stage의 cascademinibatch 참고하여 one-stage detection 시스템에 맞게 설계되었다.

RetinaNet Detector

Figure3

  • RetinaNet은 backbone network와 2개의 task 위한 subnetwork 구성된 단일 통합 network이다. backbone은 전체 이미지에서 convolutional feature map 연산을 책임진다. 첫 번째 subnet은 object의 classification 진행하고, 두 번째 subnet은 bounding box regression 진행한다.

Feature Pyramid Network Backbone:

feature pyramid network(FPN) 가지고 ResNet 구조 상단에 설계하였다. pyramid 단계를 $P_3$에서 $P_7$까지 설정하였다. 또한 해당 pyramid channel = 256 통일 한다.

Anchors:

anchors는 $P_3(32^2)$에서 $P_7(512^2)$까지 각각 개별적인 구역을 갖는다. 각 pyramid level에서 3개의 비율(aspect ratios) 갖는 anchor{1 : 2:, 1 : 1, 2 : 1} 사용한다. 또한 3개의 크기(size) 갖는 anchor 사용한다.

각 anchor는 $K$의 길이 만큼 one-hot vector 할당 받는다. $K$는 class 개수 이며 나머지 4-vector는 box regression 정보이다. 뿐만 아니라 anchors에 ground-truth 배정할 때, intersection-over-union(IOU) 값이 0.5 이상인 정보만 사용하며 하나의 객체만 담당 할 수 있게 만든다.

Classification Subnet:

classification subnet은 각 $A$ anchors와 $K$ object class에 대해 객체의 존재 여부 가능성을 예측한다. subnet에 3 x 3 conv layer 적용하고, ReLU activation 할당한다. 마지막으로 output $K A$에 sigmoid activation 사용한다.

Box Regression Subnet:

각 pyramid 단계에서 작은 FCN 붙인다. 이를 통해 anchor box와 ground-truth 간의 offset에 대한 regression 진행한다.

Inference and Training

Inference:

inference 속도를 향상 시키기 위해, detector confidence 0.05 이상에 대해, FPN level에서 1k top-scoring prediction 부터 box prediction 진행한다. 모든 단계의 top predictions 통합되고, non-maimum suppression 통해 threshhold 값이 0.5 이상인 것만 최종적인 detection 산출된다.

Focal Loss:

classification subnet의 output에 focal loss 사용한다. γ = 2 값이 RetinaNet에서 효과적이며 강인한 것을 발견했다. image에 대해 최종 focal loss는 ground-truth box 정보가 nomalize된 많은 anchors에 대해 덧셈으로 진행된다.

Initialization:

RetinaNet의 subnet의 최종 layer 제외하고 모든 conv layers에 대해 bias=0, gausian weight σ=0.01 적용했다. classification subnet의 최종 layer에 대해 bias 값을 $b = -log((1-π)/π)$ 적용하였다.

Optimization:

RetinaNet은 stochastic gradient descent (SGD) 학습하였다. 학습 loss는 focal loss(classification)smooth L1 (regression) loss 더하여 진행된다.

 

Conclusion

Table2

  • one-stage detectors가 two-stage detectors 처럼 수행하는 부분의 장애물이 class imbalance 확인했다.
  • 따라서 cross entropy loss 수정한 새로운 focal loss 제안하고 이를 통해 학습하기 힘든 hard negative example에 중점을 두어 학습을 진행한다.
반응형
Comments