이 논문은 object detection 네트워크에서 물체의 크기 다양성을 효과적으로 해결하기 위한 방법을 제시합니다. 핵심적인 아이디어는 dilated convolution을 사용하여 receptive field를 기존의 backbone보다 키운 브랜치를 만들고, 이 브랜치는 크기가 큰 물체만을 검출하도록 하는 것입니다. 논문에서는 총 3개의 브랜치를 만들기 때문에 이름을 TridentNet이라고 붙였는데, 인상적인 것은 그 중 가운데(dilation=2)인 브랜치만 사용하여 approximation을 해도 거의 비슷한 성능 향상을 보인다고 합니다.
Introduction
Motivation
Object detection에서 물체의 scale variation이 큰 것을 다루는 것은 가장 중요한 이슈이다. 직관적인 방법은 image pyramid를 활용하여 multi-scale training을 하는 것이다. 하지만 image pyramid에서는 extreme scale의 물체가 많이 생겨나는 문제가 있다. SNIP에서는 image pyramid의 각 스케일에서 적당한 크기의 물체만을 학습에 사용하는 방식(scale normalization)으로 이 문제를 해결하고자 했지만, 필연적으로 multi-scale testing이 사용되어야 하기 때문에 inference 시간이 늘어나는 문제가 있다. FPN과 같은 또 다른 접근법은 image pyramid 대신 feature pyramid를 사용하는 것인데, 여러 스케일의 물체를 서로 다른 layer의 feature에서 예측하기 때문에 각각의 scale에서 representational power가 다른 문제가 있다. 즉 image pyramid 방식은 inference의 비효율을, feature pyramid 방식은 네트워크의 representational power를 충분히 활용하지 못하는 단점을 각각 가지고 있다. 이 둘의 장점만을 합칠 수 있다면 어떨까?
Contribution
본 논문에서는 scale-specific feature map이 여러 개 존재하는 구조의 네트워크를 제안한다. 이들은 weight sharing과 dilated convolution을 활용하여 효율적으로 다양한 크기의 물체의 학습에 대응할 수 있다. 또한, 단순한 approximation을 통해 inference 속도에 영향 없이 single-scale baseline에 비하여 큰 폭의 성능 향상을 이뤄낼 수 있다.
Proposed Method
Investigation of Receptive Field
Object detection task에서 receptive field가 미치는 영향에 대한 기존 연구가 부족하여, 직접 실험을 해 보았다. Dilated convolution을 사용하면 receptive field의 크기를 선형적으로 늘릴 수 있다. 본 실험에서는 ResNet-50, ResNet-101을 backbone으로 사용하는 Faster R-CNN에서 ResNet의 stage 4에 있는 convolution들의 dilation을 1, 2, 3으로 바꿔가며 실험해 보았다.
Dilation이 클 수록 큰 물체를, dilation이 작을 수록 작은 물체를 더 잘 검출한다.
이 실험을 통해 다음과 같은 사실을 알 수 있다:
- 서로 다른 스케일의 물체에 대한 성능은 네트워크의 receptive field에 영향을 받는다. 가장 적절한 receptive field는 물체의 크기에 강하게 연관되어 있다.
- ResNet-101은 이론적으로 큰 물체를 모두 커버하기에 충분한 크기의 receptive field를 가지고 있지만, dilation rate를 늘림으로써 큰 물체에 대한 성능을 더 끌어올릴 수 있다. 이것은 실효(effective) receptive field의 크기가 이론적인 계산보다 작다는 사실을 뒷받침한다.
이와 같은 결론으로부터, 본 논문에서는 물체의 크기에 맞게 receptive field를 조정하는 구조를 제안한다.
Trident Network
TridentNet은 single-scale의 이미지를 input으로 받고, 같은 파라미터를 가지고 있지만 dilation이 서로 다른 병렬 branch들을 사용하여 scale-specific feature map을 만들어낸다.
Network Structure
TridentNet은 backbone의 convolution block들 중 일부를 trident block으로 교체하여 만들어진다. Stride가 큰 convolution layer의 dilation을 크게 하는 것이 receptive field를 더 크게 바꾸기 때문에 본 논문에서는 backbone의 마지막 stage에 있는 conv block들을 바꾸었다.
Trident block의 각 branch가 독립적인 파라미터를 가질 수도 있지만, 파라미터를 공유하는 것이 더 낫다. 파라미터를 공유하면 우선 파라미터의 갯수가 줄어들어 더 효율적이고, 다른 스케일의 물체가 같은 representational power의 균일한 transform을 거치게 되어 원래 motivation에 더 부합한다. 또한 같은 파라미터가 더 많은 물체에 대하여 receptive field만 다른 채로 학습되기 때문에 학습 샘플 수가 줄어드는 문제가 없다.
Scale-aware Training Scheme
위와 같은 구조를 가지더라도, 여전히 scale-mismatch 문제는 남아 있다. 즉 작은 물체가 큰 dilation을 가지는 branch에서 학습되는 일이 일어난다. 따라서 특정 범위의 스케일을 가진 물체를 그 범위에 맞는 branch에서 따로 검출하도록 학습하는 것이 나을 것이다.
SNIP에서와 비슷하게, 각각의 branch에 valid range [l_i, u_i]를 설정한다. 학습 중에는 이 valid range에 들어가는 proposal과 ground truth만을 사용한다. 구체적으로, w, h의 크기인 ROI는 아래 범위에서 valid하다.
RPN에 대해서는 각각의 branch에 대하여 이 범위에 맞는 ground truth만을 anchor assignment에 사용한다. R-CNN에서는 이 범위의 proposal만을 학습에 사용한다.
Inference and Approximation
Inference시에는 모든 브랜치에서 우선 detection 결과를 만들고, 각각의 branch의 valid range를 벗어나는 것들을 걸러낸다. 그 후 NMS (또는 Soft-NMS)를 통해 최종 결과를 만든다.
Inference시에 세 개의 branch 중 중간 것만 사용해서 inference를 수행하고 valid range는 [0, inf]로 하면 approximation이 된다. 놀랍게도, 이 approximation은 모든 branch를 사용한 원래 모델에 비해 아주 작은 성능의 차이만 있다.
Experiment
Implementation Details
Baseline: Faster R-CNN (구현: MXNet)
Backbone feature: covn4 stage feature. RCNN head: conv5 stage
128 ROIs per-branch
Valid ranges: [0, 90], [30, 160], [90, inf]
COCO dataset, batch size = 16, 12 epochs
Ablation Studies
Multi-branch, scale-aware training, weight sharing 등의 component를 각각 적용한 실험 결과. 모두 Baseline에 비해 큰 성능 향상을 보여준다.
Trident block의 branch 갯수를 달리하며 실험한 결과. Single-scale baseline에 비하여 branch의 갯수가 3개일 때 까지는 AP가 증가하지만 4개에서는 더 향상이 없다.
Backbone에서 trident block을 적용하는 stage를 다르게 하며 실험한 결과. Conv2, conv3, covn4의 stride는 각각 4, 8, 16이다. 예상대로 마지막 conv stage에 적용한 것의 효과가 가장 크다.
ResNet-101의 conv4에서 trident block의 갯수를 다르게 적용한 실험 결과. 10개 이후로는 큰 차이가 없음을 알 수 있다.
TridentNet 각각의 branch의 성능 비교. 예상과 같이, branch-1이 작은 물체에서 가장 좋고 branch-3이 큰 물체에서 가장 좋다. 세 개의 branch를 모두 사용하면 훨씬 높은 성능을 보여준다.
Branch-2의 approximation 결과. (a)는 원래 TridentNet에서 하던 것과 같고, (b)는 branch-2가 학습하는 물체의 크기를 확장, (c)는 모든 브랜치가 모든 크기의 물체를 사용하여 학습된 것이다.
Comparison with State-of-the-Arts
Conclusions
이 논문에서는 동일한 representational power를 가지는 in-network scale-specific feature map을 구현하는 TridentNet을 제안하였습니다. 또한 각각의 branch가 대응하는 scale에 특화될 수 있도록 scale-aware training scheme도 함께 제안되었습니다. TridentNet의 세 branch 중 major branch만 사용하는 approximation 방식은 추가적인 파라미터와 계산 없이 baseline에 비해 큰 폭의 성능 향상을 보여줍니다.
Share article