Introduction
예전부터 context information, 또는 물체들 사이의 relation이 object recognition을 도와준다는 사실은 잘 알려져 있었습니다. 하지만 최근의 object detection 네트워크들은 대부분 물체들을 개별적으로 인식할 뿐 여러 물체간의 관계에 대한 정보는 추론에 사용하지 않습니다. 이것은 일반적인 CNN의 구조가 너무 단순하고 규칙적(regular)이기 때문에 임의의 위치에 임의의 갯수와 크기로 나타나는 불규칙성에 제대로 대응하기가 어렵기 때문입니다.
본 논문에서 제시하는 알고리즘은 자연어 처리 분야에서 많이 사용되고 있는 attention module에 기초합니다. 자연어 처리 모델과 다른 점은 구성 요소가 word 대신 object이고, 원래의 attention weight에 추가로 geometric weight를 추가하여 확장했다는 점입니다. Geometric weight는 물체들 사이의 공간적 관계만을 학습하고 translation invariant한 특성을 가지기 때문에 object recognition에 적합합니다. 이 Object Relation Module은 instance recognition 단계를 개선하며, NMS를 대체하고 개선합니다.
Proposed Method
Object Relation Module
먼저 Transformer 논문에서 제시한 "Dot-Product Attention" 모듈에 대해 알아보겠습니다. 입력은 d_k 크기의 query와 key, 그리고 d_v 크기의 value 들로 이루어집니다. Dot product는 query와 key들 사이에 이루어져 그들의 유사도를 계산하고, softmax 함수를 통하여 value에 곱할 weight를 계산합니다. 이를 식으로 표현하면 아래와 같습니다.
이와 비슷하게, object relation feature는 아래와 같이 계산합니다. 아래 식에서 f_A는 appearance feature, f_G는 geometric feature를 뜻하며, W_K와 W_Q는 위 Transformer에서 사용한 K와 Q에 대응되는 matrix입니다.
w_G를 계산하는 마지막 식에서 geometric feature인 f_G로부터 embedding을 계산할 때에는 scale과 translation에 invariant하게 하기 위하여 relative geometry feature를 사용합니다. 일반적인 object detection 네트워크에서 사용하는 regression loss와 같은 형식입니다.
이를 그림으로 정리하면 아래와 같습니다. Object relation 모듈은 원래의 visual feature에 N_r개의 relation feature를 계산하여 더하는 식으로 동작합니다.
각각의 relation에 해당하는 feature들은 concatenate 하여 visual feature에 더합니다.
알고리즘으로 정리하면 아래와 같습니다. Geometric weight, Appearance weight, relation weight 순으로 계산하여 최종적으로 relation feature를 계산하는 구조입니다.
모듈은 W_{K, Q, G, V} 네 개의 matrix로 parameterized 되었습니다. 총 parameter의 갯수는
이고, Algorithm 1에 따른 computation complexity 계산은 아래와 같습니다.
일반적인 hyper parameter의 세팅은 N_r=16, d_k=64, d_g=64 입니다. Relation module은 input과 output의 크기가 같기 때문에 임의의 네트워크에 in-place로 붙을 수 있는 기본 모듈로 취급할 수 있습니다. 또한 미분 가능한 연산만으로 이루어져있으므로 back-propagation으로 학습되며, 최근 object detection system에 적용할 수 있습니다.
Relation for Instance Recognition
Faster R-CNN과 같은 일반적인 2-stage detector는 RoI feature를 뽑아낸 후, 각각의 region에 대하여 2 개의 fully connected (fc) 레이어를 사용하여 최종 score와 bbox를 얻습니다.
Object relation 모듈은 feature의 크기를 바꾸지 않으므로, fc layer 다음에 임의의 횟수만큼 반복되어 적용될 수 있습니다. 아래 식에서 r1과 r2가 그 반복 횟수를 나타냅니다. N은 RoI의 총 갯수입니다.
그림으로 나타내면 아래의 (a)와 같습니다.
Relation for Duplicate Removal
NMS는 단순하고 잘 동작하지만, 이것의 greedy한 특성과 일부 manual한 파라미터들이 NMS를 sub-optimal하게 만듭니다. 여기서는 Relation Module이 어떻게 duplicate를 제거하는 것을 학습하여 단순하고 효과적으로 동작할 수 있는지 알아보겠습니다.
Duplicate removal은 detected object들을 correct, duplicate로 분류하는 2-class classification 문제입니다. 여기서 removal network는 Figure 3.(b)와 같이 1024-d feature와 score, bbox를 입력으로 받고 binary classification probability인 s1을 출력합니다. 원래 score인 s0는 마지막에 s1과 곱해지므로 최종적으로 남을 detection은 두 score가 모두 높아야 합니다. Removal network는 우선 score와 1024-d feature로부터 appearance feature를 계산합니다. 그리고 이것과 bbox를 relation module에 통과시켜 최종적으로 linear classification을 수행하게 됩니다.
Rank feature 원래 score (s0)를 그대로 사용하는 것보다 모든 object를 score의 내림차순으로 정렬하고 그 순위(rank)를 사용하는 것이 더 나았습니다. 스칼라 값인 rank와 1024-d feature는 각각 W_f_R, W_f를 사용하여 128-d로 embedding된 후 더해집니다.
Which Object is correct? GT와 비교하여 어떤 detection이 맞았는지 판단하는 기준은 일반적으로 IoU가 0.5 (또는 그 이상의 값) 이상인지 비교하는 것입니다. 그렇다면 duplicate removal network를 학습할 때 loss는 어떤 기준으로 줘야 할까요? 물론 evaluation metric의 IoU threshold가 0.5라면 마찬가지로 0.5를 기준으로 학습한 모델이 이 metric에서 가장 높은 성능을 보여줍니다. 이것은 필요에 따라 학습 시 사용하는 threshold를 다르게 사용하면 된다는 뜻이고, post processing에서 preset parameter를 사용해야 하는 NMS가 가지고 있지 않은 장점입니다. 즉 localization이 중요한 상황에서는 네트워크를 학습할 때 threshold를 높게 잡으면 됩니다. COCO 데이터셋은 0.5-0.95 를 모두 사용하므로, 이에 따라 duplicate removal network의 마지막에 있는 W_s는 다양한 IoU threshold {0.5, 0.6, 0.7, 0.8, 0.9} 각각에 대한 확률을 출력하도록 하고 학습 시 여러 개의 BCE loss를 사용했습니다. Inference 시에는 모든 output을 평균하여 최종 score를 계산합니다.
Training Duplicate removal network에서는 대부분의 detection들이 duplicate이기 때문에 classification 문제가 심각하게 불균형(100배 이상)한 상태입니다. 그럼에도 불구하고 학습에는 문제가 없었는데, 이는 s0와 s1을 곱하는 덕분에 작은 s0 값을 가지는 대부분의 detection들이 학습에 기여하지 못했기 때문입니다. 이는 focal loss와 같은 논리로 이해할 수 있습니다.
Inference COCO 데이터셋과 같이 클래스의 갯수가 많고(80 classes) detection 갯수도 많을(N=300) 때 계산량이 매우 많을 수 있습니다. 하지만 대부분의 detection은 score가 낮기 때문에, s0 값이 0.0보다 작은 것들을 모두 제외하고 계산하니 Titan X 에서 이 과정은 2ms밖에 걸리지 않았습니다. 이는 NMS, Soft-NMS가 CPU에서 5ms 걸린 것에 비해 나은 수준입니다.
Experiment
데이터셋은 일반적인 세팅을 따라 COCO 데이터셋의 80k training + 35k validation = 135k 이미지를 핛브에 사용하였고, 5k minival과 test-dev 셋으로 테스트하였습니다. 학습과 관련된 세팅도 Faster R-CNN과 DCN, FPN 논문에 있는 것을 각각 따랐습니다.
Relation for Instance Recognition
아래 Table 1.은 instance recognition에 사용되는 relation module을 사용함에 따른 성능 변화를 실험한 것입니다. 2fc baseline (Faster R-CNN)에 비하여 의미 있는 향상을 보여주고 있습니다. Relation의 갯수는 16개까지 많을수록, 또 반복되는 relation module의 갯수도 많을수록 더 좋았습니다.
혹시 성능 향상이 parameter 증가 때문은 아닐까요? 이를 알아보기 위하여 2fc head의 파라미터를 고의적으로 늘려서 파라미터와 계산량을 유사하게 맞춘 모델과 비교해보았습니다. 다른 모델들은 성능 향상이 미미하지만 relation module을 사용한 모델은 성능 향상의 폭이 뚜렷하게 큼을 볼 수 있습니다.
아래 Table 3.은 duplicate removal network에서 rank embedding, appearance feature, geometric bbox 등을 제외하였을 때 성능을 비교한 것입니다. 이들 각각이 모두 성능 향상에 의미 있는 기여를 하였거나 필요함을 알 수 있습니다.
아래 Table 4.는 NMS, Soft-NMS와 본 논문에서 제시하는 duplicate removal network의 성능을 비교한 것입니다. NMS와 Soft-NMS는 parameter를 설정하는 것에 정해진 규칙이 없고 결과도 예측하기 어렵기 때문에 trial-and-error로 가장 좋은 값을 찾아야 하는데, 제안된 방법은 파라미터가 바로 원하는 localization accuracy 구역에 대응되기 때문에 더 해석하기 쉽습니다. 즉 0.5를 사용한 모델은 mAP_50에서 가장 성능이 좋고, 0.75를 사용한 모델은 mAP_75에서 가장 높습니다. 모든 threshold를 사용한 모델은 모든 threshold 에서의 값을 평균하는 COCO evaluation에서 가장 높습니다. 마지막 row는 duplicate removal network를 따로 학습하지 않고 end-to-end로 학습한 결과인데, 더 높은 성능을 보여줍니다.
아래 Table 5.는 앞선 실험들에서 backbone을 ResNet-101로 변경하고 FCN, DCN, OHEM 등을 적용한 ablation study 결과입니다.
Conclusions
본 논문에서는 object detector가 검출한 object들 사이의 relation을 활용할 수 있는 relation module을 제안하고, 이를 사용하여 의미 있는 성능 향상을 보여주었습니다. 하지만 실제로 relation module이 학습한 것이 무엇인지는 확실하게 알 수 없습니다.
아래 그림은 relation weight가 높은 object들을 표시한 것입니다. 왼쪽 그림은 같은 물체 위주로 모여 있는 것을, 오른쪽 그림은 사람과 글러브가 높은 relation을 가지고 있음을 보여줍니다. 하지만 이 relation module이 어떻게 동작하는지 알아내는 것은 남겨진 과제라고 할 수 있겠습니다.
Share article