Introduction
Object detection 모델들이 높은 성능을 보여주고 있지만, 여전히 대부분의 알고리즘은 물체 주위의 local information만을 활용하고 있습니다. 일반적으로 이미지는 contextual information을 풍부하게 가지고 있기 때문에 이러한 정보를 활용하지 못하는 것은 성능상에 제약을 줄 수 밖에 없습니다. 예를 들어, 아래 Figure 1. (a)에서는 강 위의 boats 중 일부가 cars로 검출되었고, (b)에서는 mouse가 미검출되었습니다. 일반적으로 강 위에는 보트가 떠 있고 랩탑 근처에는 마우스가 있다는 사실을 고려하였다면 이러한 실수를 예방할 수 있을 것입니다.
지금까지 많은 연구에서 context를 사용하여 인식 성능을 높일 수 있다는 결과가 보고되었습니다. 접근법으로는 크게 두 가지가 있었는데, scene-level context를 활용하는 것과 instance-level에서 물체 간 관계를 활용하는 것입니다. 이 둘은 서로 보완적인 contextual information을 사용하므로 두 방식을 결합해 볼 수 있을 것입니다.
본 논문에서는 visual concept을 구성하는 세 가지 핵심 요소로 scene, object, relationships를 상정하며 물체들이 구조적으로 서로 연관되어 있는 것으로 봅니다. 이에 따라 object detection은 단순한 인식 문제가 아니라 contextual information에 기반하는 추론 문제가 됩니다. 이를 해결하기 위하여, 본 논문에서는 scene과 object들이 node가 되고 relation이 edge가 되는 graph를 정의합니다. Object들은 높은 연관을 가지는 scene, 또는 다른 object로부터 message를 받고 object state를 결정하는데 참고합니다.
Proposed Method
Graphical Modeling
먼저 graphical problem을 정의하기 위한 graph model을 만들겠습니다. Graph는 v로 표현되는 region proposal을 node로 가지고 e로 표현되는 물체들 사이의 관계를 edge로 가집니다. 여기에 더하여 s로 표현되는 scene을 가지고 있습니다. 위의 Figure 2.를 참고하시기 바랍니다.
Node: RPN 이후 NMS를 거쳐 나오는 RoI들은 fully connected layer를 거쳐 visual feature로 만들어져 node가 됩니다. 또한 전체 이미지의 feature도 같은 layer를 통하여 마찬가지로 whole image visual feature로 만들어집니다.
Edge: 두 node v_i와 v_j에 대하여 directed edge_{j→i} 는 두 node의 spatial feature와 visual feature를 모두 사용하여 scalar 값으로 만들어지며, v_j 로부터 v_i 로의 영향을 의미하는 숫자가 됩니다. Node들이 edge를 통하여 상호작용하는 과정은 아래에서 다시 설명하겠습니다.
Message Passing
각각의 node가 상호작용하기 위해서 핵심은 전체 scene과 다른 object로부터 들어오는 message들을 잘 encode하는 것입니다. Message는 여러개이기 때문에, 자기 자신의 node detail과 다른 message들을 잘 융합하여 의미 있는 representation으로 만드는 것이 중요합니다. 이 역할은 memory machine과 같은데, 본 논문에서는 history의 여러 input들이 모두 영향을 미치는 구조인 RNN을 사용하여 이를 해결하고자 하였습니다.
먼저 GRU 셀의 동작 방식을 살펴보겠습니다. 아래 식에서 W로 표기된 변수들은 모두 학습되는 parameter 들입니다.
먼저, reset gate와 update gate는 다음과 같이 계산됩니다.
다음 step의 hidden state는 update gate로부터 다음과 같이 계산됩니다.
다음으로는 GRU를 어떻게 object detection을 위한 message passing에 사용하였는지 알아보겠습니다. 일반적으로 GRU의 initial state는 비어 있거나 랜덤인데, 여기서는 다르게 하였습니다.
- Encode message from scene: Initial state는 fine-grained object detail을 사용하고 scene으로부터의 message를 input으로 사용합니다. GRU 셀은 context와 관련이 없는 object detail을 무시하거나 반대로 object state의 어떤 부분을 강조하기 위해 context를 활용할 수 있습니다.
- Encode message from other objects: 마찬가지로 initial state는 object detail을 사용하고, 다른 node들로부터의 integrated message를 input으로 사용합니다.
Structure Inference
Scene GRU는 nodes visual feature f_i를 initial hidden state로 하고, scene message인 scene context feature f^s를 input으로 합니다.
Edge GRU는 다른 object들로부터의 message를 encode해야 하므로 integrated message m_e를 먼저 계산합니다. 이 message에 기여하는 node들은 각각 다른 weight를 가지고 있으며 이것이 edge (e_{j→i}) 입니다. Message는 아래와 같이 계산됩니다.
물체들간의 관계는 visual feature뿐만 아니라 두 물체 사이의 위치 관계에도 영향을 받을 것이므로 spatial position relationship (R_{j→i})를 edge 계산에 함께 사용하였습니다. Max pooling을 사용한 것은 mean pooling을 사용하면 수많은 관계없는 RoI들에 의해 message가 오염되기 때문입니다.
최종적으로 hidden state는 scene GRU와 edge GRU의 hidden state의 mean pooling으로 얻어집니다.
다음 step, iteration 부터는 마찬가지로 scene GRU는 위에서 업데이트 된 hidden state를 가지며 원래의 scene feature를 다시 input으로 하여 동작합니다. Edge GRU도 새로운 물체간 message를 새로운 input으로 받습니다. 최종적으로 node representation들이 물체의 카테고리와 위치를 결정하게 됩니다.
모델의 전체적인 구조는 아래와 같습니다.
Experiment
Implementation Details
Faster R-CNN을 사용하였으며, backbone은 ImageNet에 pre-trained된 VGG-16을 사용하였습니다. Object proposal을 선택하기 위하여 NMS 이후의 128개의 boxes를 사용하였습니다.
Overall Performance
PASCAL VOC 데이터셋과 MS COCO 데이터셋에 테스트한 결과입니다. 이 논문과 유사하게 context를 모델링하는 ION 모델에 비해서도 높은 결과를 얻었습니다.
Design Evaluation
- Scene Module
Scene GRU만을 사용한 비교 실험 결과입니다. Table 4.에서와 같이 scene GRU만을 사용해도 aeroplane, bird, boat 등등의 카테고리에서 많은 성능 향상이 있었는데 이는 이들 물체가 대체로 배경과 깊은 상관관계가 있기 때문으로 분석할 수 있습니다.
아래는 occlusion, truncation, size등 다양한 물체 속성에 대하여 민감성(sensitivity), 그리고 영향(impact)를 조사한 것입니다. Baseline에 비하여 제인된 방식이 더 robust함을 알 수 있습니다.
아래 그림은 area size에 대한 추가 분석입니다. 본 논문에서 제시된 방식이 매우 작은 물체에서 분명한 향상을 보입니다.
아래는 Scene GRU만 사용하였을 때에도 baseline에서 틀릴 것을 맞추는 경우입니다. (c)는 강가에 비행기가 있어서 boat라고 예측된 failure case입니다.
- Edge Module
Edge GRU만을 사용하였을 때에 localization이 훨씬 정확해졌습니다. 아래 pie chart는 두 가지 클래스 (비행기, 버스)에 대하여 false positive의 원인을 분석한 것입니다. Edge GRU를 사용한 모델의 localization 비율이 훨씬 작게 나타납니다.
Faster R-CNN (baseline)은 비슷한 카테고리의 물체가 겹쳐 있는 것으로 잘못 검출하는 경우가 많았습니다. Edge GRU를 사용한 모델은 이러한 에러를 많이 줄였습니다.
아래 그림은 edge 모듈이 실제로 relation을 학습한 것인지 알아보기 위하여 물체에 연결된 edge들 중 가장 강한 값을 가지는 것들을 연결한 것입니다.
- Ensemble
Scene, Edge GRU를 함께 사용하기 위한 방식을 비교해보았습니다. 두 모듈의 hidden state를 max pooling, mean pooling, concatenation한 결과입니다. 또한 GRU를 학습하기 위한 time step의 갯수를 조절해 보았을 때 2번만 한 것이 가장 좋았습니다. 3번 이상이 더 나쁜 이유는 이 이후로 close loop이 생기기 때문인 것으로 예상됩니다.
아래는 score threshold에 따른 PR 커브입니다. Recall은 비슷한데 precision이 더 높은 것으로 보아 제안된 방식이 더 적지만 정확한 검출을 하도록 도와준다는 것을 알 수 있습니다.
Conclusions
이 논문에서는 scene context와 object relation을 모두 활용하여 detection을 하는 알고리즘을 제안하였습니다. 실험에서 scene-level context는 배경과 밀접한 상관관계가 있는 물체들의 카테고리에서 특히 도움이 되었고, instance-level relation은 localization에 도움이 되었습니다.
Share article