Introduction
본 논문에서는 기존의 object detection 알고리즘에 아래 세 가지의 불균형 이슈가 있기 때문에 모델의 성능을 최대치로 발휘하지 못하고 있다는 것을 지적합니다.
Sample level imbalance
Object detector를 학습시킬 때 일반적으로 hard sample들이 학습에 중요한 요소인데, random sampling을 하면 이것들이 easy sample들에 묻혀버리게 됩니다. 이를 해결하기 위한 방법들로 OHEM, Focal loss 등이 제안되었지만 각각 오버헤드가 크고 노이즈에 민감한 문제, 2-stage detector에서는 별 효과가 없는 문제가 있었습니다.
Feature level imbalance
FPN, PANet은 상호보완적인 low-level과 high-level feature를 동시에 활용할 수 있는 구조를 제안했습니다. 이들을 통합하는 방법은 분명 성능에 영향을 미칠 것입니다. 어떻게 하는 것이 가장 좋을까요? 본 연구에 따르면 모든 해상도로부터 정보를 균형 있게 얻을 수록 좋은데, 예전의 방식으로는 인접한 해상도에만 집중하게 되는 문제가 있었습니다.
Objective level imbalance
Detector는 classification과 localization 두 task를 수행하는데, 두 objective의 균형이 맞지 않으면 한 쪽이 제대로 학습되지 않을 수 있습니다. 이것은 학습 샘플에 대해서도 마찬가지입니다. 따라서 모든 objective의 균형이 맞도록 rebalance해주는 것이 필요합니다.
Proposed Method
제안하는 Libra R-CNN의 전체 구조. 각각 sample, feature, object 레벨에서 불균형을 해소하기 위한 (a) IoU-balanced sampling (b) balanced feature pyramid (c) balanced L1 loss이다.
IoU-Balanced Sampling
아래 그림은 모델의 학습에서 중요하게 작용하는 hard negative들과 각각이 대응하는 ground truth 사이의 IoU의 분포를 나타낸 것입니다. 실험에 따르면 60%의 hard negative들이 0.05 보다 큰 overlap을 가지고 있는데, random sampling을 하면 0.05보다 큰 샘플의 비율이 30% 밖에 되지 않습니다. 이러한 sample imbalance는 hard sample들을 너무 쉬운 easy sample들에 묻히게 만듭니다.
M개의 후보 중 N개의 negative sample을 뽑는 random sampling을 할 때 각 sample이 뽑힐 확률은
입니다.
Hard sample이 뽑힐 확률을 높이기 위하여 sampling interval을 IoU에 따라 K개의 bin으로 나누고 이 bin들에 N개의 negative sample을 균일하게 나눕니다. 아래 식에서 M_k는 k번째 interval에 해당하는 후보의 갯수를 의미합니다.
이 IoU-balanced sampling에 따라 뽑은 샘플의 분포는 hard negative의 분포에 더 가까워지게 됩니다. 실험에 따르면 성능은 K 값에 민감하지 않습니다. 논문의 실험들에서는 K=3의 값을 사용하였으며, 실제 이 방법을 따라 sampling을 해보면 다음과 같은 결과를 얻을 수 있습니다.
Balanced Feature Pyramid
Multi-level feature들을 lateral connection을 이용해서 합치는 이전의 방법들과는 달리, 이 논문에서는 동일한 깊이로 합쳐진 balanced semantic feature를 얻어 multi-level feature를 강화하고자 합니다. 이 파이프라인은 rescaling, integrating, refining, strengthening의 네 과정으로 이루어져 있습니다.
먼저 각 level의 feature들을 중간의 어떤 level의 사이즈에 해당하는 하나의 사이즈로 통일합니다. 위 그림의 예시에서는 C2~C5 네 개의 feature가 있는데, C4의 사이즈로 rescale하기 위해 C5는 interpolation, C2, C3는 max-pooling을 각각 실행합니다. 이렇게 rescale된 feature들을 다음과 같이 단순히 더한 다음에 level 수로 나눠서 평균을 내서 balanced semantic feature C를 얻습니다. 전체 level의 갯수를 L, 가장 낮은 단계의 level을 l_min, 높은 단계의 level을 l_max로 표시하면 다음의 식으로 나타낼 수 있습니다.
다음으로는 합쳐진 feature들을 refine합니다. Refining 단계를 거치면 합쳐진 feature들을 더 강화하여 개선된 결과를 줄 수 있습니다. Refine 방식으로는 바로 convolution을 적용하는 방법과 non-local module을 적용하는 방법 둘 다 가능하지만, non-local module이 더 안정하게 작동하여 논문의 실험들에서는 Gaussian non-local attention을 사용하였습니다.
이렇게 얻어진 output은 FPN의 파이프라인을 따라 처리해서 object detection을 수행합니다. Output feature는 low-level부터 high-level까지의 feature들이 잘 합쳐져 있으며, 이후의 단계에서도 FPN/PAFPN과 충돌하는 부분없이 보완할 수 있습니다.
Balanced L1 Loss
일반적으로 multitask에서 loss들 사이에 불균형이 존재하는 경우, 가중치를 부과함으로써 이를 해결합니다. 예를 들어, Fast R-CNN에서 classification과 localization loss를 동시에 사용하는 경우를 생각해볼 수 있겠습니다.
Loss의 값을 1.0을 기준으로 그보다 큰 loss를 지닌 샘플들을 outlier, 작은 loss의 샘플들을 inlier라고 할 때, 위의 방법으로 가중치를 올리게 되면 outlier들이 지나치게 큰 gradient를 갖게 됩니다. 따라서 모델이 outlier들에 대해 매우 민감해지게 되는 반면, inlier들은 경사값에 상대적으로 적게 기여하게 됩니다. 수치적으로는 gradient average per sample을 계산했을 때, outlier 대비 약 30% 정도밖에 되지 않습니다.
이 문제를 해결하기 위해서 smooth L1 loss에서 착안한 balanced L1 loss를 localization loss로 이용합니다. 다음 그림에서와 같이 1.0을 inflection point 삼아 outlier들이 생성하는 큰 gradient는 1.0으로 clip하고, inlier들이 만들어내는 gradient들도 충분히 loss에 기여할 수 있도록 합니다.
Balanced L1 loss L_b를 이용한 localization loss를 다음과 같이 정의합니다. t^u는 class u의 regression 결과, v는 regression target에 해당합니다.
이 때 각 변수들에 관한 loss의 gradient는 다음의 관계를 갖기 때문에,
x (regression error)에 대한 gradient를 다음과 같이 설계하면,
alpha 값에 따라 위의 그림처럼 inlier들에 대해서도 어느 정도의 가중치가 주어지는 loss 함수를 만들 수 있습니다. 원래 큰 가중치를 가져야 하는 outlier들의 경우에는 alpha 값을 조정하는 것에 영향을 받지 않습니다. 또한, 설계된 loss 함수의 상한값은 \gamma에 의해 조정되는데, 이는 loss 함수의 전체 scale을 결정하기 때문에 멀티태스킹 상황에서 classification loss나 다른 loss들과의 balancing에 도움이 됩니다.
위의 함수를 적분하면 다음과 같이 loss 함수를 얻을 수 있습니다. 이 때 b는 outlier와 inlier들의 경계값을 이어주기 위한 상수이기 때문에 \alpha와 \gamma값에 의해 자동으로 결정됩니다. 이 논문에서는 실험에 alpha=0.5, gamma=1.5의 값을 사용하였습니다.
Experiment
COCO 데이터셋에 실험되었고, 구현은 mmdetection 기반으로 이루어졌습니다.
Ablation experiments
아래는 IoU-balanced sampling, balanced feature pyramid, balanced L1 loss 각각을 순차적으로 적용했을 때 AP의 향상을 보여줍니다. Balanced L1 loss를 적용하였을 때 특히 AP75가 많이 올랐는데, localization accuracy가 그만큼 정확해졌음을 의미합니다.
IoU-balanced sampling에 대한 ablation study 결과입니다. Pos Balance는 각각의 ground truth마다 같은 수의 positive sample을 뽑은 방법을 의미하는데, 큰 효과는 없습니다(+0.2%). K=2,3,5일 때 AP가 거의 비슷한 것으로 보아 hard negative를 더 많이 뽑는 한 이 파라미터는 큰 영향이 없는 것을 알 수 있습니다.
Balanced feature pyramid에 대한 ablation study 결과입니다. 비교를 위해 PAFPN (PANet) 실험도 같이 이루어졌습니다. Integration은 단순히 feature integration만을 수행한 것이고, Refinement는 embedded Gaussian Non-local attention까지 적용한 것입니다. 이것은 PAFPN과 병용할 수 있으므로 PAFPN에 feature balance scheme을 적용하여 PAFPN보다 0.9% 높은 Balanced PAFPN 결과를 얻었습니다.
Balanced L1 loss에 대한 ablation study 결과입니다. 비교를 위해 loss weight만 증가시킨 실험도 함께 이루어졌습니다. 최적 세팅에서 Balanced L1 loss는 Baseline에 비해 1.3% 높은 성능을 보여줍니다.
Comparison with other methods
공정한 비교를 위해 Faster R-CNN과 RetinaNet을 재구현습니다. 논문에서 보고된 성능보다 약간 높습니다. 같은 backbone을 쓰는 다른 알고리즘에 비해 Faster R-CNN은 2.5%, RetinaNet에서는 2.0% 높은 AP를 얻었습니다.
Conclusions
본 논문에서는 object detector의 학습 방식에 초점을 두고, 기존의 학습 방법에 존재하던 불균형 이슈들을 해결하는 방식들을 제안하였습니다. IoU-based sampling은 sample-level, balanced feature pyramid는 feature level, 그리고 balaned L1 loss는 objective level에서 각각 문제점들을 해결하여 높은 성능 향상을 가져다줌을 보여주었습니다.
Share article