Introduction
Object detection의 정의는 input image에서 object에 관한 정보들 ([bbox, class])의 set을 찾아내는 문제로 생각할 수 있습니다. 하지만 기존방법들은 이러한 set을 직접 찾아내지않고 anchor box, box center 등을 이용한 classification + regression 문제로 접근을 하고있습니다. 이런식으로 접근하는 기존방법들은 anchor에 대한 prior, nms할때의 hyper-parameter등의 값에 따라 성능이 변화가 생길 수 있고, 데이터셋의 특성에 따라 hyper-parameter값도 변화해야하는 경우들이 있습니다.
본 논문에서는 transformer를 이용하여, object 정보들을 element로 가지는 set을 예측할 수 있는 모델(DETR, DEtection TRansformer)을 제시하여, 많은 hyper-parameter와 customized layer를 사용하지않는 방법론을 제시했습니다.
Proposed Method
제시하는 방법론을 일단 아래 그림과 같습니다.
일단 image가 input으로 들어갑니다. 그리고 backbone과 transformer 등을 통과하여 최종 output으로는 object 정보인 [bbox, class]들의 set을 output해줍니다. 이 때, prediction set의 element 갯수(=N)는 hyper-parameter이며, 실험에서는 데이터에서 나올수 있는 최대 object 숫자(=63)보다 큰 100으로 사용하였습니다.
Object detection set prediction loss
먼저, 모델을 학습하기 위한 loss function을 설명하겠습니다. 이전 detection들 연구에서 처럼 Prediction set과 GT set의 element들을 matching을 시켜줍니다. 이전 연구들에서는 1개의 GT box에 여러개의 anchor box가 matching 될수 있었지만, 여기에서 prediction과 GT 들의 매칭은 1대1로만 진행됩니다.
prediction set의 경우 element의 갯수가 N개이지만, GT는 그렇지 않습니다. 그래서 1대1 매칭을 위해서 GT set에 추가적으로 background에 해당하는 element들을 추가해줍니다.
그렇게 해서 아래의 Match loss가 최소화되는 match 방법을 찾아줍니다.
Naive 하게 따진다면 O(N!)개의 경우를 전부 살펴봐야하지만, Hungarian algorithm을 사용한다면 O(N^4)에 optimal permutation을 찾을수 있습니다. matching loss는 아래와 같이 구할 수 있습니다.
위 방법을 통해 optimal matching을 찾았다면, 모델 학습에 사용할 loss를 구합니다. 모델 학습에 사용되는 loss는 matching loss와 유사한 형태입니다.
Match loss와 Hungarian loss(=training에 사용하는 loss)는 사소한 차이점이 있는데 1) probability를 바로 사용하는지, log probability를 사용하는지 2) background 인 경우에 대해서 loss를 계산하는지 입니다. Hungarian loss에서 back ground가 loss에 반영되는 경우에는 class imbalance로 인한 영향을 줄이기 위해서 0.1을 곱해줍니다.
Network Architecture
네트워크의 구조는 크게 4가지 부분으로 구성이 되어있습니다. 1) Backbone, 2) Transformer Encoder, 3) Transformer Decoder, 4) Prediction heads 총 4개의 모듈로 구성되어있습니다.
처음인 backbone은 여타 다른 detection과 비슷하게 feature extraction을 진행합니다. 그 후, positional encoding을 위해 spatial position encoding map을 더해줍니다. 그 후에 C x H x W 인 feature map을 reshape하여 C x (HW)로 바꿔준 후 transformer의 encoder에 넣어줍니다.
Transformer decoder의 경우, 일반적인 경우와 다르게 작동을 합니다. 일반적인 경우는 time step에 대해서 decoding이 되기때문에 autoregressive하게 동작하지만, detection 에서는 time step 1번에 대해서만 inference를 하면 되기때문에 parallel하게 decoding이 가능합니다. time step에 대해서는 1번만 동작을 하는 대신, prediction의 최대숫자인 N개에 대해서 decoding을 해줘야 합니다. Decoder의 input인 object query는 처음에는 randomly initialize되고, learnable parameter 입니다.
마지막 부분인 prediction head는 3 layer perceptron + relu로, class probability와 bounding box 정보를 output 해줍니다.
추가적으로 각 Decoder layer에서 나오는 output feature에 prediction heads를 붙여서 각 단계에서 나오는 output도 학습에 이용하는 auxiliary decoding loss도 학습에 사용합니다.
Experiment
Benchmark
학습과 테스트는 COCO 2017 데이터셋에서 진행하였습니다.
1~3번째 줄에 있는 Faster RCNN은 Detectron2 model zoo에 있는 model의 성능입니다.
4~6번째 줄에 있는 Faster RCNN+ 는 DETR과의 비교를 위해 Faster RCNN에 여러가지 방법들을 추가한것입니다. 추가한 방법들은 DETR에서도 사용하는 random augmentation, long training time, IoU loss, Adam optimizer 등을 추가하였습니다.
Attention Map Visualization
Encoder와 Decoder의 Attention map을 visualization 한 결과입니다.
Encoder attention map
Encoder에서 물체간의 분리가 잘 일어난다는것을 attention map을 통해 알 수 있습니다.
Decoder attention map
Decoder attention map의 경우, 예측하는 물체의 말단부위(다리, 머리 등)에 attention weight가 작용되어 bbox boundary를 잘 예측할 수 있습니다.
BBox prediction visualization
Object query 100개중 20개가 예측한 bbox들의 중심을 visualization한것입니다. 초록색은 small bbox의 중심, 빨간색은 large horizontal bbox들의 중심 파란색은 large vertical bbox의 중심을 나타냅니다. 해당 그림을 봤을때 각 query들 마다 담당하는 region이 있음을 알 수 있고, 학습에 의해 해당 region이 잘 나눠짐을 알 수 있습니다. 모든 query에 대해서 가운데 빨간 줄이 생기는것은 COCO dataset의 특성 때문입니다.
Ablation study for positional encoding
Positional encoding에 대해서 ablation study를 진행했습니다. Transformer에서 각 layer마다 positional encoding 을 해주는것이 성능이 제일 좋았습니다.
Panoptic Segmentation
Transformer decoer의 output를 이용하여 panoptic segmentation에 적용을 하였습니다.
이러한 구조를 head에 추가하였을때, DETR는 panoptic segmentation task에도 확장이 가능합니다.
Conclusions
해당 논문에서는 transformer를 이용하는 detection model을 제시하였습니다. Transformer를 사용함으로써 여러가지 tuning할 hyper-parameter들이 줄어들고, 구현도 훨씬 간단해졌습니다. 하지만 small object에 대한 성능은 낮고, inference time이나 model parameter의 숫자 그리고 전체적인 detection 성능은 기존 baseline과 거의 동일한 수준이라는 점에서는 한계가 아직 존재합니다. (그리고 max_detections_per_img 가 바뀔때마다 학습을 새로 해야한다는점 + 실험에서 여러가지 dataset을 바꿔가면서 실험을 해서 baseline은 hyper-parameter tuning이 필요하고 detr은 필요없다는것을 제시할수있었다면 좋았을듯)
Share article