일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 자연어처리
- Vision Transformer
- algorithm
- AlexNet
- LeNet
- 프로그래머스
- greedy
- Deep Learning
- vit
- GPT
- VGGNet
- Coding Test
- ResNet
- 탐욕법
- DFS
- 코딩 테스트
- 그리디
- Attention is all you need
- 클래스 불균형
- Focal loss
- retinaNet
- 백준
- GoogleNet
- greedy algorithm
- BFS
- Transformer
- 논문리뷰
- 딥러닝
- dl
- 알고리즘
- Today
- Total
자율주행 미래를 위한 대학원생
[논문리뷰] Focal Loss for Dense Object Detection 본문
이번에 리뷰할 논문은 'Focal Loss for Dense Object Detection' 이다. 이 논문은 RetinaNet이라는 모델을 제안하였다. 그리고 기존의 Object Detector들은 Class Imbalance 문제를 해결하기 어려웠다. Class Imbalance란 이미지 내에서 객체의 영역이 배경 영역보다 훨씬 적어 발생하는 클래스 불균형 문제이다. 이러한 easy negative는 학습이 비효율적이고, 모델의 성능을 저하시키게 된다. two-stage detector에서는 이 문제를 region proposal과 sampling heuristic을 통해 해결하지만 one-stage detector에는 적용이 불가하여 고안된 것이 본 논문에서 제시하는 Focal Loss 이다.
Focal Loss for Dense Object Detection
Abstract
- one-stage detector는 two-stage detector에 비해 빠르고 간단하지만, 정확도가 낮다는 단점이 있습니다.
- 이는 foreground와 background간에 class imbalance가 주된 원인이라는 것을 발견했습니다. → Cross Entropy를 reshaping을 통해 해결하는 방법을 제안했습니다.(Focal Loss)
- Focal Loss를 활용한 RetinaNet은 Inference 시간이 빠르고, two-stage detector의 정확도보다 높았습니다.
foreground 란? detect할 Object를 의미함
Introduction
- R-CNN과 같은 two-stage detector
- first stage : object의 location을 생성
- second stage : 해당 location을 CNN을 이용해 Classification
- first stage에서 object가 존재할 확률이 높은 region을 생성하기 때문에 class imbalance 문제에 비교적 덜 민감합니다.
- 또한 second stage에서 foreground-to-background ratio(1:3) 또는 **Online Hard Example Mining(OHEM)**을 사용해 object와 background 사이의 비율을 맞추어 balance를 유지했습니다.
- One-Stage는 Region Proposal 과정을 거치지 않고 CNN의 결과인 Feature Map에서 Localization을 진행합니다.
- 이를 위해 Anchor Box를 사용하며, Anchor Box에 여러 Scale, Aspect Ratio를 적용합니다.
- RetinaNet에서는 학습 도중 class imbalance 문제를 해결하기 위해 Focal Loss를 제안하여 해결하였습니다.
- Focal Loss는 Cross Entropy에 scaling factor($\gamma$)를 곱한 것으로 easy example에 대해 down weight를 하고 hard example에 빠르게 초점을 맞추도록 합니다.
- 이는 sampling heuristics/hard example mining보다 효과적이고 간단합니다.
Sampling Heuristics란? 데이터 분석에서 표본 추출 과정에서 따르는 경험적인 지침이나 규칙으로 이를 통해 표본이 모집단을 잘 대표하고 통계 분석 결과의 정확성을 높일 수 있습니다.
Hard Example Mining이란? 기계 학습과 컴퓨터 비전 분야에서 사용되는 개념으로 모델 학습 과정에서 어려운 예제들을 중점적으로 다루는 방법론을 나타냅니다. 이를 통해 모델이 난이도가 높거나 오류가 발생하기 쉬운 예제에 대해 더 강력한 예측 능력을 가질 수 있도록 발전시킬 수 있습니다.
Related Work
Two-Stage Detectors
- first stage : region proposal
- second stage : classification(object, background)
- R-CNN은 Selective Search와 같은 알고리즘으로 Region Proposal을 사용
One-Stage Detectors
- two-stage detector에 비해 속도는 빠르지만 정확도가 떨어짐
- 본 논문에서 제시되는 RetinaNet은 RPN의 Anchor, SSD의 Feature Pyramid를 사용하여 simple한 detector로 좋은 성능을 보여줌
Class Imbalance
- class imbalance는 one-stage detector의 경우 발생함
class imbalance problem → detector들이 이미지 당 $10^4 - 10^5$ 개의 candidate location을 생성하지만 object는 거의 포함하지 않는다.
- class imbalance는 2가지의 문제를 야기한다.
- 대부분 location들이 training에 있어 쓸모 없는 배경으로 비효율적이다.
- 배경이 학습에 영향을 주어, object를 제대로 detection하지 못하거나 배경을 detection한다.
- 일반적인 해결 방법으로 hard negative mining이 있다.
- Focal Loss는 Sampling 하거나 기울기를 계산하지 않고 효율적으로 문제를 해결할 수 있다.
Robust Estimation
- Huber Loss는 hard example의 loss를 down weight 함으로써 outlier의 민감도를 줄였다.
- 이와 반대로 Focal Loss는 easy example의 loss를 down weight함으로써 inlier의 민감도를 줄여 class imbalance 문제를 해결하였다.
Focal Loss
Cross Entropy
- $y$ : ground-truth class
- $p$ : model’s estimated probability
- Cross Entropy는 Binary Classification에서 사용됩니다.
- CE loss는 모든 sample에 대한 예측 결과를 모두 동등하게 가중치를 부여합니다. 많은 수의 easy example들이 더해지면 rare한 class를 압도해버리는 문제가 발생합니다. 이로 인해 Balanced CE는 도입합니다.
Balanced Cross Entropy
CE loss에서 가중치 파라미터인 $\alpha$를 곱해주는 Balanced CE loss 입니다.
- $y=1$이면 $\alpha$를 곱해주고, $y=-1$이면 $1-\alpha$를 곱해줍니다.
- 이는 positive/negative의 균형은 잡아주지만, easy/hard sample에 대한 균형을 잡아주지는 못합니다.
- 본 논문에서는 Balanced Cross Entropy를 baseline으로 제안된 focal loss에 대해 실험을 진행합니다.
Focal Loss Definition
Focal Loss 는 CE Loss에 modulating factor $(1-p_t)^\gamma$를 추가한 형태입니다. 이 factor는 easy example의 영향을 감소시키고, hard example에 집중할 수 있도록 합니다. $\gamma$는 하이퍼 파라미터로, easy/hard example의 weight를 조절할 수 있습니다.
- $p_t$와 modulating factor와의 관계
- example이 잘못 분류되고, $p_t$가 작으면 modulating factor는 1에 가까워지면서 loss는 영향을 받지 않습니다.
- $p_t$→1이 되면, modulating factor는 0이 되고, 잘 분류된 example의 loss는 down-weighted됩니다.
- focusing parameter $\gamma$의 역할
- easy example을 down-weight하는 정도를 부드럽게 조정합니다.
- $\gamma=0$일때, FL은 CE와 같아지며, $\gamma$가 커질수록 modulating factor의 영향력이 커지게 됩니다.
→ 잘못 분류된 example을 수정하는 작업의 중요도를 상승시킵니다.
본 논문에서는 $\alpha$-balanced Focal Loss를 사용했으며, non-$\alpha$-balanced form보다 약간 정확도가 개선된 것을 확인했으며 수식은 다음과 같습니다.
$$ FL(p_t)=-\alpha_t(1-p_t)^\gamma log(p_t). $$
RetinaNet Detector
- RetinaNet은 backbone network와 2개의 task-specific subnetwork로 구성되어있습니다.
- Backbone : convolution feature map을 추출합니다.
- First subnet : object classificiation을 수행합니다.
- Second subnet : bounding box regression을 수행합니다.
Feature Pyramid Network Backbone
- RetinaNet은 backbone network로 Feature Pyramid Network(FPN)을 채택했습니다.
- FPN은 top-down pathway와 lateral connnections로 기존의 Convolutional network를 개선했습니다.
- 단일 이미지로부터 multi-scale feature pyramid를 생성합니다.
- pyramid의 각 level은 다른 scale에서 object detecting에 사용됩니다.
- 이는 ResNet 구조의 상단에 FPN을 적용시킵니다.
Anchors
- 각 pyramid level에서 3개의 aspect ratios를 가지는 anchors를 사용합니다. {1:2, 1:1, 2:1}
- 각 pyramid level에서 3개의 anchor size를 적용합니다. {$2^0, 2^{1/3}, 2^{2/3}$}
- level마다 총 9개의 anchprs 사용하며, scale 범위는 32 ~ 813 pixel을 사용합니다.
- anchor box의 IoU threshold는 0.5를 사용했고, 0
0.4는 back-ground라고 정의합니다. 그리고0.40.5의 IoU는training 동안에 무시합니다.
Classifciation Subnet
- Classification subnet은 각 anchor obx 내에서 object가 존재할 확률을 예측합니다.
- 각 FPN level에 작은 FCN을 붙이며, 4개의 3x3 conv layer와 ReLU를 적용합니다.
- RPN과 다르게 3x3 Conv를 사용하며, box regression subnet과 parameter들을 공유하지 않습니다.
Box Regression Subnet
- Classification Subnet과 같이 작은 FCN을 붙입니다.
- 각 anchor box의 offset 4개를 Ground-Truth(box_x_center, box_y_center, width, height)와 유사하게 Regression 합니다.
- 더 적은 parameter를 사용하는 class-agnostic bounding box regressor를 사용합니다.
- → Effetive한 것을 발견했습니다.
- 두 subnet은 분리된 parameter를 사용합니다.
Inference and Training
Inference
- 속도 개선을 위해, 각 FPN lvel마다 1k top-socring 예측들로부터 box predictions를 decode합니다.
- decode는 relative offset을 ground-truth 좌표로 바꾸는 과정을 의미
- 모든 level로부터 top prediction들을 합친 후, 0.5의 threshold로 NMS(non-maximum supression)를 수행하여 최종 detection결과를 얻습니다.
Focal Loss
- Focal Loss는 Classification subnet의 출력에 적용됩니다.
- 본 논문은 $\gamma=2,\space \alpha=0.25$로 설정했습니다.
- RetinaNet은 $\gamma \in[0.5,5]$의 범위에서 상대적으로 robust합니다.
Initialization
- ResNet-50-FPN과 ResNet-101-FPN을 backbone으로 사용했으며, ImageNet 1k로 pre-trained된 모델을 사용했습니다.
- subnet의 마지막 layer를 제외한 모든 conv layer들의 bias $b=0$, weight $\sigma=0.01$인 Gaussian Distribution으로 초기화됩니다.
- Classification subnet의 마지막 conv layer의 bias $b=-log((1-\pi)/\pi)$로 설정합니다.
- 여기서 $\pi$는 ~$\pi$의 confidence를 가진 fore-ground로 labeled됩니다.
- 실험에서는 $\pi=.01$로 설정했습니다.
- 이러한 Initialization은 많은 양의 background anchor들에 대한 초기 학습 불안정을 막아줍니다.
Experiments
위 이미지와 같이 5가지의 실험을 진행했으며, 아래의 이미지는 이외의 Object Detection model들과 비교한 결과입니다.
two-stage models와 비교한 결과 좋은 성능을 가지고 있음을 보여주고 있으며, one-stage detector이므로 더 빠른 속도를 가지고 있을 것입니다.
같은 one-stage models와 비교했을 때도 당시 좋은 성능을 보여주었습니다.
💡 현재 더 좋은 detection model이 나와 현재는 Focal Loss에 중점을 두고 본 논문을 읽었습니다.
Conclusion
본 논문은 one-stage detector의 문제인 class imbalance 문제를 해결하고자 Focal Loss를 제안했습니다. 이러한 접근법은 간단하고 매우 효과적이었습니다.
이는 SOTA 수준의 accuracy와 speed를 달성했습니다.
'Paper Riview' 카테고리의 다른 글
[논문리뷰] An Image Is Worth 16x16 Words: Transformers for Image Recognition at Scale (0) | 2023.12.11 |
---|---|
[논문 리뷰] Attention Is All You Need (1) | 2023.12.10 |