본 논문은 object detection을 direct set prediction의 문제로 바라보는 새로운 방법을 제시한다. 그들의 접근 방법은 detection을 진행하는 일련의 pipeline에서 수작업으로 만들어진 NMS 과정이나 anchor를 생성하는 과정을 효과적으로 제거했다. 논문의 저자는 DEtection TRansformer(DETR)이라고 부르는 새로운 framework를 제안한다.
이 framework의 주요한 특징은 set 기반의 global loss이고, 이것은 encoder-decoder구조를 가진 transformer 가 이분법을 통한 unique prediction을 갖게 한다.
작은 set에서 객체를 찾아야 할 때, DETR은 객체와 전체 이미지의 관계에 대해 병렬적으로 final set 예측을 직접적으로 Output으로 내보낸다.
이 새로운 모델 (DETR)은 단순한 컨셉을 지니고, 특수한 library를 필요로 하지 않는다고 한다. DETR은 MSCOCO 데이터셋에서 Faster R-CNN만큼의 정확도와 run-time성능을 보여준다고 한다. 또한, DETR는 panoptic segmentation을 쉽게 일반화할 수 있다.
Object detection의 목표는 bounding box 및 label 예측을 하는 것이다. 최근 detector들은 예측을 하는 작업에서 간접적인 방식을 취하는데, 그것은 anchor나 window center에서 surrogate regression와 classification으로 처리하는 것이다.
최근 detector들의 성능은 anchor set으로 bounding box를 생성하는 방법이 heuristic하기 때문에 post-processing 부분의 NMS 과정에서 영향을 많이 받는다.
end-to-end 방식은 번역머신이나 음성인식에서 주로 사용되었지만 아직 object detection에서는 사용되고 있지 않았다. 이전의 연구들은 prior knowledge을 추가하거나 까다로운 형태와 경쟁하지 않는다. 본 논문은 그러한 격차를 해소하는 것을 목표로 한다.
본 논문의 모델은 direct set prediction으로 object detection을 바라본다. 이 모델은 encoder-decoder 구조를 기반에 두는 transformer를 채택하여 sequence한 prediction을 가진다.
transformer의 Self-Attention 메커니즘은 sequence의 모든 요소가 쌍으로 소통하며 중복된 prediction을 제거하는데 적합하다.
위 그림과 같은 구조는 실제로 번역머신의 가장 기본적인 형태라고 할수 있는데, seq2seq 구조를 object detection 분야에 적용한 것으로 보여진다. 학습 과정에서는 CNN을 통해 생성된 feature들이 인코더에 들어간 후 디코더에 전달이 되면 ground truth 데이터를 통해 bounding box의 형태로 학습하게 되고, 그것들이 prediction이 되는 것이다. 이 과정에서 Self-Attention을 통해 feature들의 연관성을 찾아내므로 여러 개가 아닌 객체 당 하나의 prediction이 나오게 된다.
DETR은 모든 객체를 한번에 예측한다. 그리고 ground-truth와 prediction사이에서 end-to-end의 set loss를 통해 이분 매칭을 학습한다. DETR은 수작업(anchor box, NMS) component가 없기 때문에 간단한 pipeline을 가진다. 다른 detector모델과 다르게 DETR은 customized layer가 필요하지 않아서 재 구현하기가 쉽다.
Direct set prediction 작업을 하는 대부분의 모델과 DETR을 비교했을 때, DETR의 특징은 병렬 디코딩을 통해 이분 매칭을 한다는 것이다. RNN의 경우 auto-regressive에 포커스를 맞췄는데, DETR의 loss function은 predict할 때, predicted object의 순열이 변하지 않기 때문에 병렬적으로 작동한다는 것이다.
DETR은 COCO dataset에서 Faster R-CNN을 기준으로 굉장히 경쟁력이 있다고 한다. 정확하게는 DETR은 large object에 대해 좋은 결과를 나타내며, 이 결과는 local 계산을 하지 않기 때문에 가능하다. 하지만 small object대해서는 낮은 결과를 나타낸다고 한다. 추후에는 FPN을 통해 개선하고자 한다.
NMS나 anchor를 사용하지 않기 때문에 image-level에서도 작은 객체의 feature는 encoder-decoder까지 명확하게 전달되기 힘들 것이다. Pyramid구조로 해결할 수 있다고 적혀 있기에 나중에 해결되면 성능이 좋아질 것 같다.
소개의 마지막 부분에서는 DETR은 어려운 작업을 쉽게 확장시킬 수 있다고 하는데, segmentation의 head부분을 pre-trained DETR의 외형을 이용해서 Panoptic Segmentation 에서 경쟁력을 가질 수 있었다.
컴퓨터 비전 분야의 정식 딥러닝 모델 중 직접적인 predict를 하는 모델은 없다. 보통의 모델은 multi-label classification을 통해 예측을 한다. 이러한 모델은 요소들 사이에 가려진 구조를 detection하기 어렵다. 어려움의 첫 번째 이유는 가까운 중복 prediction을 피하기 때문이다. 대부분의 detector들은 NMS같은 post-processing방법을 사용하는데 direct set prediction은 post-processing 방법을 사용하지 않는다. 대부분은 detector는 global inference 과정에서 요소들 간의 상호작용의 여분을 남기는 걸 피한다. 일정한 사이즈 set을 prediction하는 모델은 dense층으로 이루어진 fully connected network가 존재하고 이것은 global inference하기에 충분하지만 비용이 비싸다. RNN의 경우 auto-regressive sequence 모델을 이용하기 때문에 loss function은 변하지 않는 순열의 prediction을 한다. 이러한 구조는 target 값에 대해 unique한 매칭을 가져오기 때문에 병렬적 predict가 가능하다.
Transformers는 Vaswani에 의해 기계번역의 attention기반의 block으로 소개되었다. Attention 메커니즘은 input sequence의 집합 정보 layer이다. transformers는 self-attention layer를 가지고 있고 이것은 각각의 요소들을 검사하여 집합 정보 layer를 업데이트 하기에 non-local 네트워크와 비슷하다. attention기반의 모델의 가장 큰 이점은 global한 계산으로 완벽한 메모리를 사용한다는 것이다. 이는 RNN같은 긴 sequence 모델에 적합하다. transformers는 현재 NLP,음성처리, 컴퓨터 비전 분야에서 RNN의 문제점을 대체할 수 있는 수단이다. transformer는 처음으로 seq2seq 모델에 auto-regressive 모델을 사용하였다.
Prohibitive inference cost는 오디오, 번역머신, 단어 표현 학습 그리고 최근에는 음성인식 영역에서 병렬 sequence를 생성하는 것이 개발되고 있다. transformer와 병렬decoding을 결합하는 일은 계산 비용과 global계산 사이에서 trade-off되는 것에 적합하다.
최근 object detection 방법으로는 2-stage detector의 경우 proposal을 이용하고, 1-stage detector의 경우 anchor를 이용하거나 grid를 통해 object의 중심을 찾는다. 최근 연구에서는 1-stage detector는 최초로 object를 찾아낼 때, anchor 또는 grid이용 과정에 크게 의존한다고 증명했다. DETR은 이런 과정을 제거하고, anchor 대신에 input 이미지에서 절대적인 bounding box를 예측한다.
어떠한 detector는 이분 매칭 loss를 사용하지만, 이 것은 convolution 이나 fully connected layer의 서로 다른 prediction의 연관성을 NMS post-processing으로 성능을 향상 시킬 뿐이다.
Direct set losses를 사용하면, 더 이상 NMS 과정이 필요 없다. Prior정보를 줄이는 방법을 찾는 동안 기존의 detector들은 아직도 proposal box를 수작업으로 추가하고 있다고 한다.
DETR과 비슷한 detector가 있지만 그들은 작은 dataset에서 평가되었으며 최신 기준에는 평가되지 않았다. 그들은 RNN구조를 사용하지만 병렬 decoding에 전혀 좋은 점이 없다.
DETR은 N개의 고정된 prediction을 추론한다. decoder를 지나는 1개의 pass는 이미지의 object 숫자보다 더 커진다. 가장 어려웠던 점은 ground truth에 맞춰 예측된 object의 score를 학습하는 것이다. 제안 되는 loss는 이분 매칭 과정을 통한 bounding box를 예측함에 최적화 되었다.
위 식을 설명하면, 가 ground truth라고 할 때 이다. 이때, N은 객체 수 보다 많다고 가정하므로 가 N크기가 되게 끔 (no object)를 추가한다. 하나의 요소가 N요소의 순열에 포함 되는 것을 이분 매칭을 통해 찾았을 때 cost가 낮아진다.
쉽게 설명하면, ground truth가 N의 크기가 될 수 있게 (no object)가 추가되고, transformer의 디코더가 예측하는 객체의 class가 ground truth 객체에 포함이 될 때, loss가 낮아 진다.
ground truth 데이터를 라고 할때, 가 class label이 되고, 가 bounding box의 중심 좌표와 높이, 넓이를 가진다고 가정하자. prediction 요소인 의 class는 로 표현하고, bounding box는 로 표현할 때 는
이렇게 표현된다. 이런 과정은 다른 detector와 다르게 중복되는 prediction이 나오지 않는다. 이 후 Hungarian loss로 모든 쌍을 매칭 하며 linear combination of a negative log-likelihood 를 통해 class와 box의 loss를 정의 한다.
실험 결과 class가 (no object)일 때, log-probability term인 경우 가중치에 10배의 감소를 준다. log-probability term 대신 constant term 를 사용한 경우 class가 (no object)일 때 prediction에 영향이 없기 때문에 가중치가 일정하다고 한다.
Bounding box를 예측할때 L1 loss는 큰 상자와 작은 상자의 오차가 유사하더라도 다른 scale을 가지기 때문에 L1 loss와 GIOU loss를 조합하여 scale을 다양하지 않게 만듦으로 이런 문제를 완화 했다. box의 경우에는 예측 값과 ground truth의 차이와 함께 IOU계산을 사용한다.
결론적으로 bounding box loss는
이렇게 표현이 된다.
2) DETR architecture
DETR의 매우 구조는 간단하다. CNN backbone(ResNet) 모델을 통해 feature map을 생성하고 encoder-decoder transformer를 거친 다음 FFN(feed forward network)을 통해 결과 값을 출력한다. DETR은 굉장히 간단한 구조를 가져서 PyTorch 코드로 50줄도 안된다.
Input image 부터 backbone은 CNN연산을 통해 lower-resolution의 activation map 를 생성한다. 로 설정했다고 한다.
Transformer는 encoder-decoder의 전형적인 구조를 따른다. Transformer를 통해 이미지의 모든 object를 한번에 추론한다. 마지막 prediction에 있는 FFN은 이름대로 perceptron으로 이루어진 NN이고, 3층의 layer로 ReLU활성화 함수를 사용한다. (no object)가 클래스에 추가 되었기 때문에 배경을 알아내는 것에도 사용될 수 있다.
Decoding을 도와주는 loss로는 위에서 언급한 것과 같이 decoder 뒤에 FFN과 Hungarian loss를 추가하여 FFN끼리 매개변수를 공유하기 때문에 다른 decoder layer에서의 FFN을 정규화 한다.
비교 모델: Faster R-CNN
Dataset: COCO minival
Optimizer: AdamW (Faster R-CNN의 경우 SGD)
Backbone: ResNet50(pre-train ImageNet), ResNet101(pre-train ImageNet)
추가 기능: Conv5 layer의 stride를 삭제하고 resolution을 증가시킴(이름에 DC5가 붙은 부분)
Scale augmentation(input 이미지를 480px~1333px까지 resize)
Random crop augmentation
Add dropout 0.1 (transformers)
GPU: 16개의 V100 GPU
Epoch: 300 (Faster R-CNN의 경우 500)
학습 시간: 72 시간
표를 보면 , 에서 Faster R-CNN이 높고 나머지는 DETR이 높다. 논문의 내용대로 작은object에서 약한 성능을 보이고 있다. 는 사실 차이가 거의 없다. 하지만 확실히 에서 DETR이 훨씬 좋은 성능을 보여주고 있다.
연산량 측면에서 보면 DETR이, FPS에서는 Faster R-CNN이 좋은 성능을 보인다. 하지만 이 두 모델 모두 Real-time이나 경량화가 목표가 아니라 비교 대상은 아니다.
Number of encoder layers
Encoder의 크기에 따른 영향을 나타낸 표이다. Encoder의 layer수가 늘어날 수록 AP가 증가 하는 것을 확인할 수 있다. 이런 실험 결과를 통해(Encoder layer 6개를 기준으로) encoder layer가 없을 때는 의 경우 3.9, 의 경우 6.0까지 떨어 지는 것을 확인했고, self-attention이 있는 encoder layer의 개수가 영향을 끼치는 것을 볼 수 있다.
위 그림을 보면 인코더의 self-attention과정을 볼 수 있는데, 이렇게 instance가 잘 나누어 진다면 decoder에서 object의 위치와 class를 예측하는 것은 매우 쉬운 일이다.
Number of decoder layers
또한 object detection할 때, decoder의 단계가 매우 중요하다는 것을 알아 냈다. 위 그래프를 보면 차이가 크다는 것을 알 수 있다. 이를 통해 하나의 decoder만 있는 transformers는 output 요소들 간의 연관성을 계산할 수 없다는 것을 설명할 수 있다.
위 그림을 보면 decoder attention은 상당히 local하다는 것을 알 수 있다. 다른 색상으로 decoder의 prediction을 표시하였는데, 보는 바와 같이 object의 head나 legs 쪽을 attention하는 것을 확인 했다고 한다. Encoder가 global하게 attention하여 object의 instance를 분리하는 반면 decoder는 object의 경계를 추출하기 위해 head와 legs에 attention하는 것으로 보인다.
Importance of FFN
Transformer구조 내에 있는 FFN은 1x1 conv와 비슷하게 볼 수 있다. 이것은 encoder와 비슷하게 attention증가를 만든다. FFN을 지우고 테스트를 해보았더니 parameter의 수는 줄었지만 AP는 2.3만큼 떨어졌다.
Importance of positional encodings
위 표는 self-attention과 출력 부분에 변화를 주며 실험한 결과이다. 이 중 encoder의 출력 부분은 삭제 할 수 없어 실험 대상에는 뺐다. 표의 내용은 아래와 같고, 수치는 표를 통해 확인할 수 있다.
Loss ablations
위 표는 Loss function에서 L1 loss와 GIOU loss 를 적용해가며 실험한 결과 이다. 이러한 실험 결과를 통해 본 논문에서 사용하는 Loss function이 어떻게 결정 되었는지 알 수 있다.
Decoder output slot analysis
위 그림은 COCO 2017 val dataset의 서로 다른 slot으로 예측한 bounding box의 위치들을 시각화 한 것이다. DETR은 query slot마다 다른 것을 학습한다. 각각의 slot에는 bounding box의 영역이나 크기를 다르게 focusing 하는 mode들이 있다고 한다. DETR은 중심 좌표과 높이, 넓이로 output이 나오므로 위 그림은 bounding box의 중심 좌표 들의 위치를 표현한 것으로 볼 수 있다. 가운데에 빨간 점이 있는 걸 보면 이미지 전체에 bounding box를 그리는 mode도 있다는 것을 알 수 있다.Generalization to unseen numbers of instances
COCO dataset은 한 이미지에서 같은 class의 많은 instance들이 존재하지 않는다. 결국 이미지를 새로 생성해서 사용했는데 예측 결과에서 24개의 기린을 예측함에 문제가 없다.
DETR은 panoptic segmentation에 이용 될 수 있는데 원래 DETR의 구동 방식 대로 bounding box를 예측하고 mask head를 추가해 segmentation을 진행한다.
구조를 그림을 보면 DETR의 output이 input이 되어 FPN-style CNN으로 들어가게 되고, instance 별 출력으로 나오는 mask를 합쳐 output을 생성하는 구조이다. mask를 생성할 때는 DICE/F-1 loss 와 Focal loss를 사용한다. 논문에는 DETR의 bounding box 학습 weight를 완전freeze 시키고 mask head만 25 epoch 학습 시켰다고 한다. 그 결과는 아래의 표와 같다.
DETR은 panoptic segmentation 결과를 생성할때, mask의 점수를 argmax를 통해 해당 mask에 할당한다고 한다. 이러한 과정은 최종 mask가 겹치지 않게 해준다.
학습 모델: DETR, DETR-DC5, DETR-R101
Dataset: COCO panopic
Epoch: DETR(freeze), mask head(25)
위 그림은 DETR panoptic segmentation 의 결과이다. 향후 연구에서 완전히 통합된 panoptic모델을 연구할 때, 이러한 DETR의 접근 방식이 도움이 될 것이다.
Object detection 분야에서 end-to-end 방식의 새로운 구조를 제안했으며, DETR은 Faster R-CNN에 견주어도 부족하지 않다. 또한, DETR은 panoptic segmentation으로 확장이 쉽고, 경쟁력 있는 결과를 가진다. Large object에서는 Faster R-CNN보다 좋은 성능을 보여준다. 추후에는 학습, 최적화, small object 성능 개선 등에 도전할 예정이다.