이 논문에서는 R-CNN을 이용한 object detection을 할 때, bounding box regression 부분에서의 개선을 다룹니다. Bounding box regression을 위한 손실함수를 K-L divergence를 이용하여 새롭게 정의함으로써 상당한 성능 향상을 보여주고 있습니다. 2018년 9월에 arXiv에 처음 업로드되었고, CVPR 2019에 제출되었습니다.
Introduction
Motivation
현재 object detection에서 많이 쓰이는 R-CNN 계열 detector들에서는, 물체의 위치를 추정하기 위해 기존에 정해진 bounding box의 후보들을 (anchor들) 이용해서 대략적으로 추정한 뒤, 해당 물체 위치로 추정되는 근처에서 bbox를 보다 더 정확하게 regression하는 2-stage 방식을 이용합니다. 이 때 이 bbox regression 또한 학습되는데요, 만약 학습할 데이터셋의 ground truth bbox가 정확하지 않다면 자연히 regression 과정의 학습이 힘들어집니다.
예를 들어, 실제 MS-COCO와 YouTube-BoundingBoxes에는 아래와 같은 경우들이 있는데요. 한눈에 봐도 boundingbox가 타이트하지 않거나, 엉뚱한 물체들과 함께 정의되어 있습니다.
이렇게 모호한 bbox GT들을 학습하면서 기존의 smooth L1 loss 등을 사용하면, regression 학습 결과가 좋지 않습니다. 게다가 기존의 bbox regression은 classification score가 높은 경우 bbox의 localization이 정확하게 된 것으로 가정하는데요, 다음의 detection 결과를 보면 classification score가 높다고 해서 꼭 localize된 bbox가 정확한 것은 아니라는 것을 확인할 수 있습니다.
Goal
이 논문에서는 정확하지 않은 bbox GT로부터 학습이 힘들어지는 점을 개선하기 위해 bbox의 localization variance를 함께 학습하는 regression loss를 새롭게 정의합니다. 또한 inference 시, 추정한 variance를 고려하여 bbox localization에 반영할 수 있는 variance voting을 제안합니다.
Proposed Method
Network
이 방법은 2-stage detection의 head 중 regression 부분에 이식이 가능합니다. 해당하는 부분의 네트워크는 아래와 같이 생겼습니다.
RoI에 대해 FC를 거친 후 보통은 box regression과 classification만을 수행하는데, 여기서는 regression 과정에 새로운 손실함수를 도입하여 box regression의 표준편차를 함께 얻습니다. 그러면 표준편차 값은 localization의 confidence를 수치화 한 것이 되기 때문에, localization 결과 값 뿐만 아니라 localization confidence도 동시에 얻을 수 있습니다.
Bounding Box Parameterization
Box regression 과정의 표준편차 값을 얻기 위해서는 GT box 주변에서 probability distribution을 정의하고, 이를 학습합니다. Probability distribution은 GT box를 기준으로 offset에 따른 분포를 가정합니다. Bounding box의 위치 표현은 xyxy 방식을 사용합니다.
이 때, 각 좌표값들은 서로 완전히 독립적인것으로 가정하여 단변수 가우시안 함수를 이용합니다. 즉, 하나의 박스를 나타내는 분포함수 및 variance는 4개가 됩니다. 추정한 bbox의 좌표를 x_e, 추정치의 불확실성을 \sigma, 그리고 추정한(학습되는) 변수들의 set을 \Theta로 나타내면 분포함수를 다음과 같이 나타낼 수 있습니다.
GT box 좌표의 경우에는 불확실성이 없으므로, 이러한 분포함수가 필요없이 GT box와 일치하거나/일치하지 않거나의 두 가지 경우만을 고려하면 됩니다. 이는 Dirac delta 함수의 형태로 다음과 같이 나타낼 수 있으며, 위의 분포에서 \sigma→0인 경우와도 일치합니다.
Bounding Box Regression with KL Loss
이제 위에서 정의한 분포함수들을 효과적으로 학습하기 위해 Kullback-Leibler divergence를 도입하여 regression의 손실함수로 사용합니다.
우리의 분포함수는 연속함수이므로 KL divergence는 다음과 같이 표현됩니다.
이는 GT box의 분포(Dirac delta)의 엔트로피와 실제 불확실성이 있는 예측된 box의 분포(Gaussian)의 교차 엔트로피와 GT box의 분포 엔트로피의 차입니다. 즉 GT box 분포가 predicted box 분포로 대체되었을 때의 엔트로피 변화량을 나타냅니다. 이렇게 표현했을 때, 손실함수의 목표는, 분포함수 대체 시의 엔트로피 변화량을 최소화하는 것으로 이해할 수 있습니다. 궁극적으로 손실함수의 최소화를 통해 얻고자 하는, localization parameter들의 집합인 \Theta는 다음과 같이 나타낼 수 있습니다.
위의 KL-Divergence를 전개하면 다음과 같습니다.
여기서 GT box 자체 엔트로피와 상수항들을 제외하면 처음 두 항만 손실함수의 값에 영향을 미칩니다. 추정된 위치 값인 x_e가 정확하지 않은 경우, 네트워크는 손실함수를 줄이기 위해 \sigma를 더 크게 추정할 것입니다. 한편, \sigma가 1인 경우는 자연스럽게 Euclidean loss가 됩니다.
이 손실함수는 \sigma=0인 지점을 제외하고 x_e와 \sigma에 대해 각각 미분가능합니다. 그런데 \sigma에 대한 gradient는 \sigma^3에 비례하기 때문에, 불확실성이 비교적 클 학습 초기에는 gradient가 매우 커지게 됩니다. 그래서 표준편차 \sigma를 직접 추정하는 대신 다음과 같이 대체 파라미터 \alpha를 정의해서 우회합니다. 이 경우 loss가 의존하는 항들은 아래 식과 같습니다.
Smooth L1 loss와 유사하게 GT-box의 위치와 추정한 위치의 차이가 너무 큰 영역(L1 distance가 1보다 큰 경우)에 대해서는 loss를 아래와 같이 정의합니다.
\alpha prediction에 대한 가중치 값들은 ~N(0, 0.0001)의 random Gaussian 초기화를 합니다. 이렇게 할 경우 KL loss는 L1 loss의 와 유사해지는것을 위 두개의 식으로부터 확인할 수 있습니다.
이렇게 정의해서 학습 후, 실제 inference 시에는 다시 \sigma를 이용하게 됩니다.
이 과정에서는 bbox regression에 대한 손실함수만 바뀌었을 뿐, bbox classification의 손실함수는 원래와 동일합니다.
Variance Voting
위와 같이 손실함수를 정의함으로써 localization 결과의 variance를 얻을 수 있는데요, detection score들을 모두 얻은 뒤의 NMS 과정에서 이 variance 값들을 활용한 variance voting을 진행합니다.
Var voting에서는 후보 박스들의 localization 결과와 각 후보 박스의 detection score, 그리고 각 후보 박스의 localization variance를 이용해서 새로운 localization 좌표를 얻는데요, 먼저 가장 큰 detection score를 가진 박스 b를 선정합니다. 그리고 나머지 박스들 중 b와의 IoU가 0보다 큰 박스들 b_i에 대해서 weight를 계산하는데, 더 가깝고 더 낮은 불확실성을 지닌 박스들에게 더 높은 값이 할당되도록 합니다.
따라서 분산이 높은 박스들, 혹은 선택된 박스와 IoU가 작은 박스들은 이 voting 과정에서 더 낮은 가중치를 갖게 됩니다. 이렇게 b를 제외한 나머지 박스들의 좌표와 weight를 이용해 다시 새로운 위치를 계산합니다.
이를 알고리즘으로 나타내면 다음과 같습니다. 이 var voting에 classification score는 고려하지 않으며, 유일한 hyperparameter는 \sigma_t가 됩니다.
Experiment
MS-COCO와 PASCAL VOC를 이용해서 테스트를 진행한 결과를 보여줍니다.
- Inference time
Inference 시간은 baseline만 단독으로 한 경우에 비해 2%정도 더 소요 (99ms vs. 101ms)된다고 합니다. 복잡하거나 반복되는 연산이 없어서 크게 차이가 나지 않는 것 같습니다.
- \sigma_t
Hyperparameter인 sigma_t에 따른 AP의 민감도를 보면, AP50가 모든 \sigma_t 값에서 고른 결과가 나오는, 즉 민감도가 가장 낮은 결과를 보여줍니다. 한편 논문 결과의 나머지 부분에서는 모든 AP에서 차이가 두드러지지 않는 0.02의 값을 사용합니다.
Ablation Study
- KL loss, soft-NMS, var voting
다른 변화없이 KL loss를 적용해서 학습하는 것만으로도 전반적으로 성능이 개선됨. AP 약 2.8% 향상. 여기서는 VGG-16 Faster R-CNN을 사용했으나, ResNet-50 Faster R-CNN과 Mask R-CNN에서도 각각 1.5%, 0.9%의 성능 향상을 보였음. Variance를 도입함으로써 값들의 불확실 정도를 학습하고 gradient에도 반영이 되며, KL loss가 localization confidence를 학습하는 과정에 도움을 주기 때문인 것으로 생각.
soft-NMS를 적용한 경우도 KL loss 여부에 관계없이 성능 개선. 4번째 행과 5번째 행을 비교하면 soft-NMS만 적용한 경우와 variance voting만 적용한 경우인데, soft-NMS만 적용한 경우가 전반적으로 성능이 더 좋으나, var voting의 경우 bbox refining에 조금 더 좋게 나타남. 특히 var voting과 soft-NMS는 함께 사용할때 더 시너지효과를 냄.
var voting 적용한 경우 ap에서 가장 큰 향상이 있었음. AP50은 별로 안높아졌지만 AP75, APM, APL이 높아진 것으로 보아 classification confidence가 localization confidence와 항상 연관있지는 않기 때문인 거스올 보임. 따라서 classification confidence와는 독립적으로 localization confidence를 학습하는 것이 중요하다는 것을 알 수 있음.
- ROI Box Head
ResNet-50과 같이 RoI head backbone이 더 deep한 경우에도 테스트. conv5는 9 convolutional layers, 2mlp는 2 fully connected layers.
2mlp보다 conv5 head에서 더 큰 성능개선이 있었는데, 이는 localization 자체보다 localization variance를 학습하는게 더 어렵기 때문에 conv5같이 무거운 헤드를 썼을 때 더 많은 이득을 보는 것으로 생각됨. (하지만 conv5는 최신 detector에 많이 쓰이지 않으므로 다른 테스트들에서는 2mlp를 사용)
Accurate Object Detection (MS-COCO)
AP^{90}과 같이 high overlap metrics 같은 경우에는 확연히 좋은 성능을 보임. Variance voting+soft-NMS의 결과도 좋음. Fast R-CNN에서는 KL loss가 IoU-NMS나 soft-NMS baseline들보다 좋음.
IoUNet과 비교했을 때,
- variance와 localization이 KL loss를 통해 함께 학습됨으로써 더 좋아지고,
- KL loss는 localization 학습을 위해 별도의 2mlp head가 필요하지 않아서 연산량이 줄어들고,
- var voting이 iterative하지 않기 때문에 더 빠름.
PASCAL VOC 2007
Share article