이번에 다뤄볼 논문은 End-to-End Object Detection with Transformers입니다.
이 논문은 Object Detection에 대한 새로운 프레임워크인 DETR을 제안합니다.
DETR의 주요 구성 요소는 bipartite matching을 통해 고유한 예측을 유도하는 set-based global loss와 transformer encoder-decoder 구조입니다.
DETR은 COCO object detection 데이터 셋에서 이미 검증된 Faster RCNN과 비슷한 성능을 보여줍니다.
게다가 DETR은 panoptic segmentation task에서 경쟁 모델에 비해 큰 성능 향상을 보여줍니다.
Introduction
Objective Detection의 목표는 관심 대상 객체마다 boundary box와 category label을 예측하는 것입니다. 기존 모델은 예측 과제를 간접적인 방식으로 수행하는데, proposal, anchor 또는 window 중심에 대한 대체 회귀 및 분류 문제를 정의합니다. 이러한 모델들의 성능은 중복 예측을 합치는 후처리 단계, 앵커 세트의 설계, 그리고 target box를 앵커에 할당하는 휴리스틱과 같은 요소에 의해 크게 영향을 받습니다.
이러한 파이프라인을 단순화하기 위해, 본 논문은 새로운 프레임워크로 직접적인 예측 방식을 제안합니다.
본 논문은 트랜스포머 아키텍처를 기반으로 하는 encoder-decoder 아키텍처를 도입합니다. 트랜스포머의 self-attention 메커니즘은 시퀀스 내 요소 간의 모든 이진 상호 작용을 명시적으로 모델링하므로, 이러한 아키텍처는 중복 예측을 제거하는 것과 같은 예측의 특정 제약 조건에 특히 적합합니다.
DEtection TRansformer(DETR)는 한꺼번에 모든 객체를 예측하며, 예측과 실제 객체 간의 bipartite matching을 수행하는 loss 함수로 end-to-end로 학습됩니다. 대부분의 기존 모델과 달리 DETR은 사용자 정의 레이어를 필요로 하지 않으며, 따라서 표준 CNN 및 트랜스포머 클래스를 포함하는 어떤 프레임워크에서도 쉽게 재현할 수 있습니다.
직접적인 예측에 대한 기존 연구는 RNN을 사용한 autoregressive decoding에 중점을 둔 반면, DETR의 주요 특징은 bipartite matching loss와 (non-autoregressive) 병렬 디코딩을 사용한 트랜스포머를 결합한 점입니다. 본 연구의 matching loss 함수는 예측을 실제 target object에 고유하게 할당하며, 예측된 object의 순열에 영향을 받지 않기 때문에 이러한 예측을 병렬로 생성할 수 있습니다. 따라서 NMS(Non-maximal suppression)과 같은 후처리 과정이 필요하지 않습니다.
The DETR model
Objective Detection에서 직접적인 예측을 수행하기 위해 중요한 구성 요소는 앞서 말씀드린 것과 같이 다음 두 가지입니다.
예측된 상자와 실제 target 상자 간의 고유한 일치를 강제하는 예측 loss 함수
object들을 한 번에 예측하고 그들 사이의 관계를 모델링하는 아키텍처
Object Detection set prediction loss
DETR은 디코더를 한 번 통과하면서 고정 크기의 N개 예측을 도출합니다.
이 때 N은 일반적으로 이미지 내 객체의 수보다 훨씬 큰 값으로 설정됩니다.
DETR의 loss 함수는 예측된 object와 실제 object 사이의 최적의 bipartite matching을 생성하고, object별 bounding box 손실을 최적화합니다.
y를 실제 object의 집합으로 표시하고, $ \hat y = { \hat y_i}^N_{i=1} $ 를 N개의 예측으로 이루어진 집합으로 표시합니다. N이 이미지 내 객체의 수보다 크다고 가정하므로, 본 연구는 y를 N 크기의 집합으로 생각하며 $ \emptyset $(객체 없음)로 패딩합니다. 이 두 개의 집합 사이에서 bipartite matching을 찾기 위해 가장 낮은 비용을 갖는 N개의 요소 순열 $ \sigma \in S_N $ 을 찾습니다.
이 식에서 $ L_{match} (y_i, \hat y_{\sigma (i)}) $ 는 실제 객체 $ y_i $ 와 예측 값 $ \hat y_{\sigma (i)} $ 사이의 pair-wise 매칭 비용입니다. 헝가리 알고리즘을 사용하여 효율적으로 계산됩니다.
매칭 비용은 클래스 예측과 예측 값 및 실제 값 박스의 유사성을 모두 고려합니다. 실제 객체 집합의 각 요소 $ i $ 는 $ y_i = (c_i, b_i) $ 로 나타내며, 여기서 $ c_i $ 는 target 클래스 레이블이며, $ b_i \in [0, 1]^4 $ 는 실제 박스의 중심 좌표와 이미지 크기에 상대적인 높이와 너비를 정의하는 벡터입니다. 순열 $ \sigma (i) $ 를 가진 예측 값에 대해 클래스 $ c_i $ 의 확률을 $ \hat p_{\sigma (i)} (c_i) $ 로 정의하고 예측한 박스를 $ \hat b_{\sigma (i)} $ 로 정의합니다. 이러한 표기법을 사용하여 $ L_{match} (y_i, \hat y_{\sigma (i)}) $ 를 다음과 같이 정의합니다.
\[L_{match} (y_i, \hat y_{\sigma (i)}) = \mathbb {-1}_{\{c_i \ne ∅\}} \hat p_{\sigma(i)}(c_i) + \mathbb 1_{\{c_i \ne ∅\}} L_{box}(b_i, \hat b_{\sigma(i)})\]이러한 매칭을 찾는 절차는 기존 최신 detection 모델에서 proposal이나 anchor를 실제 객체에 매칭시키는 휴리스틱 할당 규칙과 동일한 역할을 합니다. 차이점은 중복 없이 직접 예측에 대한 일대일 매치를 찾아야 한다는 것입니다.
두 번째 단계는 이전 단계에서 일치한 모든 쌍을 위한 hungarian loss 함수를 계산하는 것입니다. 즉, 클래스 예측에 대한 음의 로그 우도와 box loss의 선형 조합입니다.
$ \hat \sigma $ 은 첫 번째 단계에서 계산된 최적 할당을 나타냅니다. 실제로, 본 논문은 클래스 불균형을 고려하여 $ c_i = \emptyset $ 일 때 로그 확률 항에 가중치를 10으로 줄입니다. 이는 Faster RCNN이 긍정적/부정적 proposal을 subsampling하여 균형을 맞추는 방식과 유사합니다. 객체와 $ \emptyset $ 간의 매칭 비용은 예측에 의존하지 않으며, 이 경우 비용이 일정합니다. 매칭 비용에서 로그 확률 대신 확률 $ \hat p_{\hat \sigma (i)} (c_i) $ 을 사용함으로써 클래스 예측 항이 아래에서 설명된 $ L_{box} $ 와 유사한 값으로 만들어 성능이 향상됩니다.
Bounding box loss
매칭 비용 및 Hungarian loss의 두 번째 부분은 bounding box의 점수를 매기는 $ L_{box} (\cdot) $ 입니다. 본 논문은 상자 예측을 직접 수행하는데, 이러한 방식은 구현을 간단하게 만들지만 loss의 상대적 크기에 대한 문제점을 제기합니다. 가장 흔히 사용되는 $ l_1 $ loss는 상자의 크기가 작을 때의 loss와 클 때의 loss를 동일한 척도로 간주하기 때문에, 이러한 loss가 유사하게 측정됩니다. 이 문제를 완화하기 위해 $ l_1 $ loss와 크기에 무관한 일반화된 IoU loss(GIoU) $ L_{iou}(·, ·) $ 의 선형 조합을 사용합니다. 전체적인 본 논문의 box loss는 $ L_{box}(b_i, \hat b_{\sigma (i)}) $ 로 표시되며, 이는 $ \lambda_{iou} L_{iou} (b_i, \hat b_{\sigma (i)}) + \lambda_{L1} \Vert {b_1 - \hat b_{\sigma (i)}} \Vert_1 $ 로 정의됩니다. 여기서 $ \lambda_{iou}, \lambda_{L_1} \in R $ 는 하이퍼파라미터입니다. 이 두 loss는 batch 내의 객체 수로 정규화됩니다.
DETR architecture
DETR 아키텍처는 매우 간단하며, 세가지 주요 구성 요소인 CNN backbone, encoder-decoder transformer 및 feed forward network로 구성됩니다.
CNN backbone은 조밀한 특성 표현을 추출하는 역할을 하며, FFN은 최종 detection 예측을 생성하는 역할을 합니다.
Backbone
처음 이미지 $ x_{img} \in R^{3 \times H_0 \times W_0} $ 로부터 낮은 해상도의 활성화 맵 $ f \in R^{C \times H \times W} $ 를 생성합니다.
Transformer encoder
먼저, $ 1\times1 $ 합성곱을 사용하여 고수준 활성화 맵 f의 채널 차원을 C에서 더 작은 차원 d로 줄입니다. 이로써 새로운 feature map $ z_0 \in R^{d \times H \times W} $ 가 생성됩니다. 인코더는 입력으로 시퀀스를 기대하기 때문에 $ z_0 $ 의 공간 차원을 하나의 차원으로 축소하여 $ d\times HW $ feature map을 얻습니다. 각 인코더 레이어는 multi-head self-attention 모듈과 feed forward network(FFN)로 구성됩니다. Transformer 아키텍처는 Permutiation-Invariant이기 때문에 고정된 position encoding을 각 어텐션 레이어의 입력으로 추가합니다.
Transformer decoder
디코더는 multi-head self-attention 및 encoder-decoder attention 메커니즘을 사용하여 크기가 d인 N 임베딩을 변환합니다. 기존 Transformer와 차이점은 본 모델이 각 디코더 레이어에서 N개의 객체를 병렬로 디코딩한다는 것입니다. 디코더도 Permutation-Invariant이므로 N개의 입력 임베딩은 서로 다른 결과를 생성하기 위해 서로 다르게 구성되어야 합니다. 이러한 입력 임베딩은 학습된 위치 인코딩으로, 객체 쿼리(Object Queries)라고 지칭하며, 인코더와 마찬가지로 각 어텐션 레이어의 입력에 추가됩니다. N개의 객체 쿼리는 디코더에 의해 출력 임베딩으로 변환됩니다. 그런 다음 이러한 임베딩은 feed-forward network를 사용하여 독립적으로 상자 좌표 및 클래스 레이블로 디코딩되어 최종 예측 N개를 생성합니다. 이러한 임베딩을 사용하여 self-attention 및 encoder-decoder attention을 통해 전체 객체 간의 쌍 관계를 사용하여 전역적으로 모든 객체에 대해 추론하며, 이미지 전체를 컨텍스트로 활용할 수 있습니다.
Prediction feed-forward networks(FFNs)
최종 예측은 ReLU 활성화 함수와 hidden dimension $ d $ 를 가진 3 layer perceptron 및 linear projection layer를 사용하여 계산됩니다. FFN은 입력 이미지와 관련하여 박스의 정규화된 중심 좌표, 높이 및 너비를 예측하고, 선형 레이어는 소프트맥스 함수를 사용하여 클래스 레이블을 예측합니다. 본 연구는 일반적으로 이미지 내 관심 객체의 실제 수보다 훨씬 큰 N개의 바운딩 박스로 고정 크기의 집합을 예측합니다. 이 경우, 슬롯 내에서 객체가 감지되지 않았음을 나타내기 위해 추가적인 특수 클래스 레이블 $ \emptyset $ 을 사용합니다. 이 클래스는 “배경”과 유사한 역할을 합니다.
Auxiliary decoding losses
학습 중에 디코더에서 auxiliary loss를 사용하는 것이 도움이 되었으며, 특히 각 클래스의 올바른 개체 수를 출력하는 모델에 도움이 되었습니다. 본 논문은 각 디코더 레이어 뒤에 예측 FFN과 Hungarian loss를 추가합니다. 모든 예측 FFN은 매개변수를 공유합니다. 또한 서로 다른 디코더 레이어에서 예측 FFN에 입력을 정규화하기 위해 공유된 레이어 정규화를 사용합니다.
Experiments
Comparison with Faster R-CNN
DETR가 COCO dataset에서 Faster RCNN과 경쟁력 있는 결과를 달성함을 보여줍니다.
상단 섹션에서는 3배 스케줄로 학습된 Faster R-CNN 결과를 Detectron2 Model Zoo에서 보여줍니다. 중간 섹션에서는 GIoU(Generalized IoU), random crop augmentation을 사용한 Faster R-CNN 모델을 9배 스케줄로 학습한 결과를 보여주며, 전체적으로 1-2 AP 향상되었습니다. 마지막 섹션에서는 여러 DETR 모델의 결과를 보여줍니다. 모델 파라미터 수를 비슷하게 유지하기 위해 6개의 트랜스포머 레이어 모델을 선택했으며, 디코더 레이어는 256 차원과 8개의 어텐션 헤드를 가집니다. Faster R-CNN의 FPN(Feature Pyramid Network)과 유사하게 이 모델은 41.3M개의 파라미터를 가지며 이 중 23.5M개는 ResNet-50에, 17.8M개는 transformer에 속합니다.
Ablations
트랜스포머 디코더 내의 어텐션 메커니즘은 서로 다른 objective detection의 특성 표현 간의 관계를 모델링하는 핵심 구성 요소입니다. 본 논문의 ablation analysis에서는 아키텍처와 loss의 다른 구성 요소가 최종 성능에 어떻게 영향을 미치는지 보여줍니다.
Number of encoder layers
표 2는 디코더 레이어의 수를 고정시키고 다양한 깊이의 인코더 레이어 실험을 통해 전체 이미지 수준의 self-attention의 중요성을 평가했습니다. 인코더 레이어 수가 많아질수록 성능이 향상됩니다.
그림 3에서는 학습된 모델의 마지막 인코더 레이어의 attention map을 시각화한 것입니다. 인코더는 이미 인스턴스를 분리하는 것처럼 보이며, 이는 디코더에 대한 객체 추출(object extraction)과 위치 지정(localization)을 단순화하는 데 도움이 됩니다.
Number of decoder layers
본 논문은 각 디코딩 레이어 뒤에 auxiliary loss(보조 손실)을 적용합니다. 예측 FFN은 각 디코더 레이어의 출력에서 객체를 예측하는 방식으로 학습됩니다.
그림 4는 디코더 레이어의 중요성을 평가합니다. 레이어가 깊어질수록 AP와 AP50 모두 향상됩니다. 또한 DETR은 디자인 상으로 NMS를 필요로 하지 않음을 확인할 수 있습니다. NMS는 첫 번째 디코더의 예측 결과에 대해서는 성능을 향상시킵니다. 이는 트랜스포머의 단일 디코딩 레이어가 출력 요소 간의 cross-correlations를 계산할 수 없기 때문에 동일한 객체에 대한 여러 예측을 만드는 경향으로 설명될 수 있습니다. 두 번째 레이어부터는 성능 차이가 거의 없고, AP의 경우 마지막 레이어에서는 오히려 성능이 떨어지는 현상을 보여줍니다.
그림 6은 디코더 어텐션을 시각화하여 각 예측된 객체에 대한 어텐션 맵을 다른 색으로 색칠한 것입니다. 디코더 어텐션은 주로 머리나 다리와 같은 객체의 끝부분에 집중하여 지역적인 것을 보여줍니다. 따라서 본 논문은 인코더가 글로벌 어텐션을 통해 인스턴스를 분리한 후, 디코더가 클래스와 객체 경계를 추출하기 위해 끝 부분에 중점을 둘 것이라고 가정합니다.
Importance of FFN
트랜스포머 내부의 FFN(Feed-Forward Network)은 인코더를 어텐션을 보완한 컨볼루션 네트워크와 유사하게 만드는 1x1 convolutional layer로 볼 수 있습니다. 본 논문은 FFN을 완전히 제거하고, 트랜스포머 레이어에서 attention 메커니즘만을 남겨두려고 시도했습니다. 네트워크 파라미터 수를 41.3M에서 28.7M으로 줄였지만, 이로 인해 성능이 2.3AP 하락했습니다. 이를 통해 FFN이 좋은 결과를 위해 중요하다는 결론을 지었습니다.
Importance of positional encodings
모델에서는 spatial positional encoding, output positional encoding(object queries) 두 가지 유형의 positional encoding이 있습니다.
표 3은 이 두 유형의 positional encoding을 다양하게 조합해 실험한 결과입니다.
output positional encoding은 필수로 제거할 수 없으므로, 디코더 입력에서 한 번 전달하거나 디코더 어텐션 레이어마다 쿼리에 추가하는 실험을 수행했습니다. 첫 번째 실험에서는 spatial positional encoding을 완전히 제거하고 output positional encoding을 디코더 입력에서 적용했습니다. 흥미로운 점은 모델이 여전히 32AP 이상을 달성하며 baseline과 7.8AP 차이가 있었습니다.
두 번째 실험에서는 기존 트랜스포머처럼 고정된 sine spatial positional encoding과 output encoding을 입력에서 한 번 적용했습니다. positional encoding을 각 레이어마다 적용하는 것과 비교했을 때 1.4AP 감소하는 것을 발견했습니다.
각 레이어에 learned positional encoding을 적용하는 세 번째 실험도 비슷한 결과를 제공합니다.
놀랍게도, 인코더에서 어떤 spatial encoding도 적용하지 않으면 1.3AP 정도 감소합니다.
어텐션에서 인코딩을 적용할 때, 이는 모든 레이어 간에 공유되며 output encoding(object queries)는 항상 학습됩니다.
Loss ablations
matching cost와 loss의 다양한 구성 요소의 중요성을 평가합니다.
loss에는 세 가지 구성 요소가 있습니다.(classification loss, $ l_1 $ bounding box distance loss, GIoU loss)
실험 결과는 표 4에 나와 있습니다.
GIoU loss만으로도 좋은 성능을 보여줍니다. $ L_1 $ 만 사용하는 경우 결과가 나쁘지만, GIoU와 조합하여 사용하면 성능이 향상됩니다.
이러한 실험을 토대로, 트랜스포머의 구성 요소인 인코더의 global self-attention, FFN, multiple decoder layers, positional encoding 모두 object detection 성능에 상당히 기여한다는 것을 보여줍니다.
Analysis
Decoder output slot analysis
그림 7에서는 COCO 2017 검증 데이터 셋의 모든 이미지에 대한 다양한 슬롯에서 예측한 상자를 시각화합니다. 각 상자 예측은 중심의 좌표로 표현되며, 이미지 크기로 정규화된 1x1 정사각형 내에 표시됩니다. 녹색은 작은 상자, 빨강은 가로로 큰 상자, 파랑은 세로로 큰 상자에 해당합니다.
각 예측 슬롯이 특정 이미지 영역과 상자 크기에 중점을 두고 학습하며 다양한 상자 유형을 예측한다는 것을 관찰할 수 있습니다. 특히, 모든 슬롯은 image-wide boxes(COCO 데이터 셋에서 매우 일반적으로 나타나는 큰 바운딩 박스)를 예측하는 모드를 가지고 있는데, 이것은 그림 중앙에 정렬된 빨간 점들로 나타납니다. 이는 COCO 데이터 셋의 객체 분포와 관련이 있을 것으로 가정됩니다.
Generalization to unseen numbers of instances
COCO 데이터 셋에서는 동일한 클래스의 많은 인스턴스가 동일한 이미지에 잘 표현되지 않는 경우가 있습니다. 예를 들어, 학습 세트에서 13마리 이상의 기린이 있는 이미지는 없습니다. DETR의 일반화 능력을 확인하기 위해 합성 이미지를 만들었습니다.(그림 5 참조) 모델은 처음 보는 이미지에 있는 모든 24마리의 기린을 찾을 수 있었습니다. 이 실험은 각 object query에 강력한 클래스 특화(class-specialization)가 없음을 확인합니다.
DETR for panoptic segmentation
Faster R-CNN에서 Mask R-CNN으로 확장하는 것과 마찬가지로, DETR은 디코더 출력에 마스크 헤드를 추가함으로써 확장될 수 있습니다.
이러한 헤드를 사용하여 stuff 및 thing 클래스를 통합적으로 처리하여 panoptic segmentation을 생성할 수 있는지를 보여줍니다.
DETR을 사용하여 동일한 절차로 COCO 데이터 셋의 stuff 및 thing 클래스 주변에 상자를 예측하도록 학습합니다. Hungarian matching은 상자 간의 거리를 사용하여 계산되기 때문에 상자를 예측하는 것은 필수입니다.
또한 각 예측된 상자에 대한 binary mask를 예측하는 마스크 헤드를 추가합니다.(그림 8 참조) 이 헤드는 각 객체의 트랜스포머 디코더 출력을 입력으로 사용하고, 이 임베딩에 대한 M개의 multi-head attention 점수를 인코더 출력 위에 계산하여 각 객체당 작은 해상도에서 M개의 어텐션 히트맵을 생성합니다. 최종 예측을 수행하고 해상도를 높이기 위해 FPN과 유사한 아키텍처를 사용합니다.
마스크 헤드는 공동으로 학습하거나 먼저 상자만을 위해 DETR을 학습한 다음 모든 가중치를 고정하고 마스크 헤드만을 25에포크 동안 학습하는 두 단계 프로세스로 학습할 수 있습니다. 실험적으로 이 두 가지 접근 방식은 유사한 결과를 제공하며, 총 wall-clock 시간 학습이 더 짧은 결과를 얻기 위해 후자의 방법을 결과로 채택했습니다.
최종 panoptic segmentation을 예측하기 위해 각 픽셀에서 마스크 점수에 대한 argmax를 사용하고 결과 마스크에 해당하는 카테고리를 할당합니다. 이 절차는 최종 마스크가 겹치지 않음을 보장하며, 따라서 DETR은 서로 다른 마스크를 정렬하는 데 자주 사용되는 휴리스틱을 필요로 하지 않습니다.
표 5에서는 사물과 배경을 다르게 처리하는 몇 가지 확립된 방법과 본 논문의 통합 panoptic segmentation 접근 방법을 비교합니다. Panoptic Quality($ PQ $) 및 thing($ PQ^{th} $)와 stuff($ PQ^{st} $) 비교를 보여줍니다.
DETR이 기존 모델인 UPSNet과 Panoptic FPN을 능가한다는 것을 보여줍니다. DETR이 특히 stuff 클래스에서 우위를 점하며, 인코더 어텐션에 의한 전역적인 추론이 중요한 역할을 한다고 합니다. thing 클래스에 대해서는 마스크 AP 계산에서 baseline에 비해 최대 8mAP 뒤쳐짐에도 불구하고 DETR은 경쟁력 있는 $ PQ^{th} $ 를 얻습니다.
Conclusion
DETR은 transformer와 bipartite matching loss를 기반으로 하는 object detection 시스템의 새로운 디자인을 제시했습니다.
이 방법은 최적화된 Faster R-CNN baseline과 유사한 결과를 달성합니다.
DETR은 유연한 아키텍처를 가지므로 구현이 간단하며, 경쟁력 있는 결과를 내는 panoptic segmentation으로 쉽게 확장할 수 있습니다. 또한 self-attention에 의해 수행되는 전역 정보 처리로 Faster R-CNN에 비해 큰 객체에 대한 성능이 훨씬 더 우수합니다.