Anchor Box Optimization for Object Detection

Inc Lomin's avatar
Oct 29, 2021
Anchor Box Optimization for Object Detection
이 논문은 2018년에 arxiv에 업로드되고, WACV20에서 발표된 논문입니다.
 

Introduction

Object detection 문제를 푸는 네트워크들에서는 일반적으로 anchor box/default box라는 이름으로 bounding box의 초기 추정치 역할을 하는 값이 포함되어 있습니다. 이 박스들은 이미지 전체에 걸쳐 모든 위치를 중심점으로 하는 anchor가 존재하도록 빽빽하게 분포되어 있기 마련입니다.
이러한 anchor box의 형태(높이, 너비)는 탐지하고자 하는 물체의 형태에 따라 달라지곤 하지만, 이를 결정하는 것은 heuristic의 영역입니다. Anchor box를 어떻게 설계하느냐에 따라 결과가 매우 달라질 수 있으며, 결국 잘해봐야 sub-optimal에 만족해야 하는 경우도 발생할 수 있습니다.
이러한 문제를 해결하기 위해서 anchor의 형태 자체를 학습할 수 있는 방법을 제시합니다. 이 방법은 anchor box의 형태를 네트워크의 학습 영역에 완전히 맡기기 때문에 사람이 따로 손을 댈 필요가 없으며, 심지어 초기화 값에도 robust한 경향을 보입니다. 이 방법은 anchor box에 기반하는 모든 detection framework들에서 사용 가능합니다.
 

Proposed Methodology

Overview

일반적으로 object detection의 학습은 bounding box의 localization loss와 classification loss의 합을 최소화하는 방향으로 이루어집니다.
H*W 크기의 피쳐 맵에서 각 공간적인 위치(cell location)마다 해당 위치를 중심으로 하는 서로 다른 형태의 A개의 anchor box가 존재한다고 하면, 전체 anchor box의 개수는 A*H*W가 됩니다. 이를 N으로 정의하고, 이 anchor box들을 모두 stack해서 i번째 anchor box를 로 나타내겠습니다. (는 anchor 중심의 위치)
모든 피쳐 맵에 대해서 이를 stack 했을 때, 는 조합의 종류가 A개 밖에 되지 않으며, 학습이 아무리 진행되어도 계속 고정된 값입니다.
i번째 anchor box의 네트워크의 출력 값을 라고 합시다. 매칭되는 gt box를 라고 할 때, Localization loss의 형태는 다음과 같이 나타낼 수 있습니다.
는 i번째 anchor box와 j번째 gt box의 연관성을 나타내는 값으로 {0, 1}의 값을 가지며, i번째 anchor box와 j번째 gt box의 IOU가 threshold를 넘고, 서로 가장 큰 매칭관계를 가지고 있으면 1인 것으로 합니다.
Localization loss는 L2 혹은 smoothed L1 loss를 이용합니다. 이 때, w와 h에 대해서도 기존의 log encoding 값을 취합니다. 를 L2 loss로 나타내면 다음과 같습니다.
notion image
전체 localization loss는 두 loss의 합이 되며, 까지도 직접적으로 최적화가 가능하게 됩니다.
 

Anchor Box Optimization

위의 일반적인 object detection 네트워크의 학습은 다음과 같은 최적화 문제 입니다.
기존의 방법들에서는 anchor의 형태 (w,h) 값이 상수였기 때문에 위의 에 포함되지 않지만, 위에서 소개한 방법으로는 trainable parameter이기 때문에 포함되게 됩니다. (논문에서는 조금 다른 notation을 쓰고 있지만, 크게 의미는 없어 보입니다.) 학습 가능한 파라미터의 집합이 늘어났기 때문에, 가능한 해집합(feasible solution set) 또한 커지게 되고, 따라서 최종적으로 더 낮은 값의 loss를 가질 수 있습니다. 또한, anchor shape가 어느 정도 학습이 되고 나면, anchor box 대비 네트워크의 출력값의 offset()이 작아지기 때문에, regression 문제가 더 쉬워지는 효과도 있습니다.
notion image
서로 다른 anchor shape들을 라고 하면 loss 형태로부터 optimize하는 값은 가 아니라 log 값이기 때문에 이를 로 나타내겠습니다. 이 때 k번째 anchor의 width log 값의 gradient는 다음과 같습니다.
notion image
구체적으로 학습을 위해 다음과 같은 방법들을 더 사용했습니다.
  • Soft Assignment Warm-Up
GT 박스의 크기가 매우 극단적인 경우에, 가장 가까운 형태의 anchor 딱 한개만이 채택되어서 나머지 anchor들은 전혀 학습되지 않는 경우들이 있습니다. 이 문제를 해결하기 위해서, 해당 위치에서의 모든 anchor box들에 대해서 softmax를 취하는 soft assignment warm-up을 사용합니다.
이 방법은 학습 초기 단계에서만 사용되며, 초기 1500 iteration 동안 T를 2에서 0으로 annealing 하여 사용했습니다.
  • Online Clustering Warm-Up
Anchor shape와 GT shape 사이의 L2 distance의 자승과 관련된 항을 다음과 같이 Loss 함수에 포함시킵니다.
이 역시 학습 초기 1500 iteration동안만 사용하였으며, 계수 는 1에서 0으로 선형 감소 시켰습니다. 이 방법의 기본 아이디어는 clustering 항을 이용해서 초기화된 anchor를 k-means centroid로 빠르게 조정하기 때문에 Anchor의 초기화 값에 더 robust하며, 이후 학습에서 수렴 속도가 더 빨라질 수 있다는 것입니다.
  • Batch Normalization without Shifting
위의 online clustering 항 ()을 더하면, 네트워크의 출력 값인 는 평균이 0인 어떤 분포를 갖게 됩니다. 이 부분에서 발생하는 학습의 난점을 해결하기 위해서 출력 값 , 에 평균 0, 분산 1로의 normalization을 batch별로 수행해주면, 학습이 더 빨라지게 됩니다.
 

Experiments

실험은 Pascal VOC 07+12, COCO 2017, 그리고 Brainwash에 대해서 진행했습니다. 개인적으로 생소했던 Brainwash 데이터셋은, 2015년에 사람의 두부(head) 탐지용 데이터셋으로 샌프란시스코의 Brainwash라는 카페에서 3일에 걸쳐 100초 간격으로 촬영한 라이브캠 이미지들입니다. 학습, 검증, 평가용 데이터셋이 각각 10k, 0.5k, 0.5k 정도의 규모라고 합니다.
A sample image from Brainwash dataset
A sample image from Brainwash dataset
본 논문에서 제안하는 "앵커 최적화"의 아이디어 자체는 범용적으로, one-stage detector 뿐만 아니라 Faster RCNN, FPN, SSD, RetinaNet 등에도 적용 가능합니다. 실험에서는 YOLOv2를 활용하였습니다. A=5의 anchor shape가 있다고 할 때, 마지막 conv layer는 각 anchor마다 네 방향으로의 regression, 클래스를 무시한 objectness, 그리고 C개의 클래스 점수를 포함하여 5*(4+1+C) 개의 채널을 가진 feature map을 출력하게 됩니다.
 

PASCAL VOC

이 실험에서는 제안한 방법의 robustness를 확인하기 위해서, anchor의 형태를 uniform, identical, k-means의 세 가지 방법으로 초기화 하였습니다. Uniform에서는 [(3, 3),(3, 9),(9, 9),(9, 3),(6, 6)], identical에서는 5개의 anchor를 모두 (5,5)로, k-means에서는 gt 박스들의 k-means center 값들을 사용합니다. 결과는 다음과 같습니다.
notion image
이미지 사이즈 416 실험을 기준으로 비교하면, baseline에서는 1.07% 가량 차이가 나는 반면 Opt에서 0.06%에 불과합니다. 이는 opt 방식이 초기 anchor 세팅에 robust하다는 것을 보여줍니다.
notion image

MS COCO

 
 
notion image
notion image
 
 
notion image
notion image
 

Brainwash

COCO에서의 k-means anchor를 계산해서, baseline에서 이를 초기값으로 사용한 결과를 추가했습니다. 사람의 머리는 COCO의 물체들보다 훨씬 작기 때문에, COCO의 anchor 5개 중 단 한개의 anchor만이 학습 시 활성화되는 것을 발견했습니다. 이 경우 하나의 박스가 모든 w, h의 variation을 커버해야 하기 때문에 학습의 양상이 optimal이라고 볼 수는 없습니다. 자연히, 이러한 현상은 다른 데이터셋들에서도 발생할 수 있기 때문에 anchor box의 형태 자체를 학습하는 것이 중요하다고 볼 수 있습니다.
notion image

Ablation Study

먼저 제안의 주 내용인 anchor optimization 이외에 추가적으로 제안한 학습법이 정말로 anchor optimization의 학습에 도움이 되는지를 실험하였습니다. 이 방법들을 사용하지 않아도, Opt가 기존의 학습법보다 좋은 결과를 보이기는 했지만, 제안하는 학습 방법들을 사용하면 전반적으로 더 큰 성능의 향상이 있었습니다. 다만 BN만을 단독으로 사용하는 것은 baseline 대비 0.1% 내외의 향상으로, 크게 도움이 되지 않았다고 합니다. 따라서 제안하는 학습법들은 꼭 anchor optimization과 함께 사용해야 의미가 있는 것으로 볼 수 있겠습니다.
notion image
다음으로는 anchor 갯수에 따른 실험을 했습니다. 모든 anchor 갯수에서 Opt는 Baseline의 성능을 0.5-1.2% 상회하는 결과를 보였으며, 특히 anchor 갯수에 대한 성능 편차가 더 적은 편이었습니다.
notion image
마지막으로는 two-stage detector에서도 anchor optimization이 잘 적용되는지 확인하였습니다. Faster R-CNN을 대상으로 실험하였는데, batch size가 작은 관계로 BN은 적용하지 않았습니다. 아래의 table을 보면 모든 경우에, 모든 데이터셋에서 일관되게 좋은 결과를 보이는 것을 확인할 수 있습니다.
notion image
다만 최종적으로 one-stage detector에서만큼의 큰 성능 향상을 보이지는 않았는데, 이는 잘못된 형태나 크기의 anchor가 채택되었더라도 두번째 stage에서 보정되는 two-stage detector의 특성 때문인 것으로 보입니다. 그럼에도 불구하고 미미한 학습 cost 증가 및 동일한 추론 cost로 더 좋은 성능을 냈다는 것 자체로도 충분히 의미가 있어 보입니다. 학습 시간의 경우에는 Faster R-CNN R50-FPN, pytorch/4GPU 환경에서 iteration당 0.8027s → 0.8154s 정도의 증가가 있었습니다.
 

Conclusions/Discussions

Anchor box의 크기 및 종횡비는 실제로 최종 학습 모델의 성능에 영향을 미치는 것에 비해서, heuristic의 영역으로 남아있는 것 같습니다. 아마 anchor box를 박아두고 학습하는 방법을 생각한 사람도 처음부터 이렇게 하려던건 아니고, 한번쯤은 anchor box를 학습하려고 하다가 실패하지 않았을까요? 그 후로 여러 다른 부분에서 발전이 있었던 덕분인지, 아니면 이 논문에서 제안한 초기 학습의 개선 포인트들 덕분인지 2년 전쯤 에서야 유의미한 결과가 나온 것 같습니다. 특히 초기치에 민감하지 않다는 점이 매우 고무적인데, 결과 bbox들의 크기나 종횡비의 분포 편차가 큰 task들에서 유용하게 쓰일 수 있을 것 같습니다.
 
Share article