JUPPI.log
DETR: DEtection TRansfomer 본문
DETR의 두 가지 핵심 아이디어 !
1. 이분매칭
2. 트랜스포머
1. Introduction
Object Detection의 목표는 관심있는 각 객체에 대한 bounding box 및 category label 집합을 예측하는 것 ! 최신 모델들은 large set of proposal, anchor, window centers에 surrogate regression 및 classification 문제를 정의하여 간접적인 방식으로 해당 set prediction 작업을 처리함
위에 언급한 최신모델들의 성능은 거의 중복된 예측을 축소하기 위한 후처리단계(nms), anchor set의 설계 및 anchor에 target box를 할당하는 heuristic에 의해 크게 영향을 받음
→ 이런 후처리단계 사전지식(prior)을 요구함: bounding box의 형태, bounding box가 겹칠 때의 처리 방법 등..
→ detr은 사전지식 노필요, data-driven
이러한 파이프라인을 단순화하기 위해 DETR에서는 관련된 작업을 우회하는 direct set prediction approach를 제안함 !
end-to-end philosophy는 기계 번역 또는 음성인식과 같은 복잡한 구조적 예측작업에서 상당한 발전을 가져왔지만, 아직 Object Detection에서는 아님
DETR은 ?
-
Object Detection을 direct set prediction 문제로 보고 훈련 파이프 라인을 간소화함
-
sequence prediction을 위한 architecture인 transformer에 기반한 encoder-decoder를 채택함
-
sequence의 요소 간의 모든 pair-wise 상호 작용을 명시적으로 모델링하는 transformer의 self-attention 메커니즘은 architecture의 중복된 예측 제거 같은 set prediction의 특정 제약 조건에 적합하게 만듬
-
DEtection TRansformer는 모든 객체를 한 번에 예측하고 예측 된 객체와 ground truth 객체 간의 이분 일치(bipartite matching)를 수행하는 set loss function으로 end-to-end로 훈련됨
-
DETR은 spatial anchor 및 nms(non-maximal suppression)같은 사전 지식을 인코딩하는 수작업으로 설계된 여러 구성요소를 삭제해서 detection pipeline을 단순화 함
-
기존 방법들과 달리 customize된 layer가 필요하지 않기 때문에 standard CNN 및 transformer class가 포함 된 모든 프레임 워크에서 쉽게 재현할 수 있음
-
direct set prediction에 대한 이전 작업과 비교했을 때 DETR의 주요한 차별점은 (non-auto-regressive) parallel decoding을 사용하는 이분 매칭 손실 (bipartite matching loss) 및 transformer의 결합이다.
—> 이전 연구는 대조적으로 RNN을 사용한 auto-regressive decoding에 중점을 두었음
—> DETR의 matching loss function은 예측을 ground truth 객체에 고유하게 할당하고, 예측된 객체의 순열에 불변하므로 병렬로 내보낼 수 있다.
-
DETR은 transformer의 non-local computation으로 인해 큰 객체에서 더 좋은 성능을 보여줌.
—> 작은 객체에서는 성능이 떨어지고, FPN이 faster RCNN에서 했던 것 처럼 같은 방식으로 향후 작업이 이 문제를 개선할 수 있을 것으로 기대됨.
-
DETR은 매우 긴 훈련 일정이 필요하며, transformer의 auxiliary decoding loss로 인한 이점을 누릴 수 있음
2. Related Work
DETR은 set prediction을 위한 bipartite matching loss, transformer 기반 encoder-decoder architecture, parallel decoding, object detection method 같은 여러 영역의 prior work를 기반으로 함
2.1 Set Prediction
-
집합을 직접적으로 예측하는 canonical deep learning model은 없음
-
기본 set prediction 작업은 baseline approach인 one-vs-rest가 요소들(near-identical) 사이에 기초적인 구조가 있는 detection과 같은 문제에 적용되지 않는 multi-label classification임
-
해당 작업의 첫번째 어려움은 중복을 피하는 것임
—> 대부분의 최신 detector는 이 문제를 해결하기 위해 nms같은 후 처리 작업을 사용
—> direct set prediction은 nms같은 후 처리 작업이 필요 없음
-
중복성을 피하기 위해 모든 예측된 요소 간의 상호작용을 모델링하는 global inference schemes가 필요함
-
일정한 크기의 set prediction을 위한 dense fully connected network는 좋지만 비용이 많이 든다
—> 일반적인 접근 방식은 recurrent neural network같은 auto-regressive sequence model을 사용하는 것임
-
모든 경우에서, loss function은 prediction의 순열에 따라 변하지 않아야함.
—> 일반적인 해결책은 Hungarian algorithm을 기반으로 loss를 설계하여 ground truth와 예측 사이의 bipartite matching을 찾는 것임
—> 이는 순열 불변성을 적용하고 각 대상 요소가 고유한 match를 갖도록 보장함
-
DETR은 bipartite matching loss 접근법을 따름
—> 기존 작업과 달리, auto-regressive model에서 벗어나 parallel decoding이 있는 transformer를 사용함
2.2 Transformers and Parallel Decoding
-
Transformer는 machine translation을 위한 새로운 attention-based building block으로, Vaswani et al에 의해 도입되었음
-
attention 메커니즘은 전체 입력 시퀀스에서 정보를 집계하는 neural network임
-
Transformer는 Non-Local Neural Network와 유사하게, 시퀀스의 각 요소를 스캔하고 전체 시퀀스의 정보를 집계하여 업데이트하는 self-attention layer를 도입함
-
attention based 모델의 주요 장점 중 하나는 global computation과 perfect memory로, 긴 시퀀스에서 RNN보다 더 적합함
-
transformer는 이제 NLP, 음성 처리 및 컴퓨터 비전의 많은 문제에서 RNN을 대체하고 있음
-
transformer는 초기 sequence-to-sequence 모델에 따라 auto regressive model에서 처음 사용되어 출력 토큰을 하나씩 생성해냈음
—> 그러나 엄청 많은 추론 비용(출력 길이에 비례하고 배치하기 어려움)은 오디오, 기계 번역, 단어 표현 학습, 음성 인식의 영역에서 parallel sequence 생성의 발전으로 이어짐
-
또한 computational cost와 집합 예측에 필요한 global computation을 수행하는 능력 간의 trade-off를 통해 transformer와 parallel decoding을 결합함.
2.3 Object detection
w.r.t (with regard to) : ~에 관해서
최근 연구는 아래와 같은 시스템이 최종 성능이 초기 추측이 설정되는 방식에 크게 좌우된다는 것을 보여줌
- 대부분의 최신 object detection method는 초기 추측과 관련하여 예측함
- two-stage detector는 proposal과 관련된 상자를 예측하는 반면, one-stage는 anchor 또는 가능한 객체 중심의 격자와 관련하여 예측함
DETR에서는 이와 같은 수작업을 제거하고, anchor가 아닌 입력 이미지와 관련하여 absolute box prediction으로 탐지 세트를 직접 예측함으로써 detect과정을 간소화할 수 있음
Set-based loss
여러 detector는 bipartite matching loss를 사용함.
그러나 이러한 초기 딥러닝 모델에서는 서로 다른 예측간의 관계가 convolution 또는 FCL로만 모델링되었으며, 수작업으로 설계된 NMS를 통해 성능을 향상시킬 수 있었었음
최근의 Detector는 NMS와 함께 ground truth와 예측간의 고유하지 않은 할당 규칙을 사용함
학습가능한 NMS 및 relation networks는 attention을 사용하여 서로 다른 예측간의 관계를 명시적으로 모델링함
direct set loss를 사용하면 nms같은 후 처리 단계가 필요하지 않음
그러나 이러한 방법은 proposal box coordinate 같은 추가 수작업 context feature를 사용하여 detection간의 관계를 효율적으로 모델링하지만, 모델에 인코딩된 사전 지식을 줄이는 솔루션을 찾게끔함
Recurrent detectors
-
DETR의 접근방식과 가장 비슷한 것은 Object Detection[43] 및 instance segmentation[41,30,36,42]에 대한 end-to-end set prediction임
—> 이들은 CNN activation에 기반한 encoder-decoder architecture와 함께 bipartite-matching loss를 사용하여 bounding box set을 직접 생성함
—> 그러나 이런 접근방식은 최신 기준이 아닌 소규모 데이터 세트에서만 평가되었음
—> 특히 auto-regressive 모델 (더 정확하게는 RNN)을 기반으로 하므로 parallel decoding과 함께 최신 transformer를 사용하지 않음
3. The DETR model
detection에서 direct set prediction을 하기 위해서는 두가지 요소가 필수적임
- 예측된 상자와 ground truth 사이의 고유한 matching을 강제하는 set prediction loss
- 객체 set을 단일 패스로 예측하고, 그 관계를 모델링하는 아키텍처 (Fig. 2)
3.1 Object Detection set prediction loss
-
DETR은 decoder를 통한 단일 패스에서 고정된 크기의 N개의 prediction의 set를 추론함
—> 여기서 N은 이미지의 일반적인 객체 수 보다 훨씬 크게 설정됨.
-
훈련의 주요 어려움 중 하나는 ground truth와 관련해서 예측된 개체 (class, position, size)에 점수를 매기는 것 !
—> 모델의 loss는 예측된 객체와 ground truth 객체 간의 최적의 bipartite matching을 생성한 다음, 객체 별 bounding box loss를 최적화 함
-
물체의 ground truth set을 $y$로 나타내고, $\hat{y} = \{ \hat{y}i \}^N{i=1}$는 N개의 prediction set을 나타냄
-
N이 이미지의 객체 수보다 크다고 가정하면 $y$는 "∅ (no object)"으로 채워진 크기 N의 집합으로 간주됨
→ 이 두 세트간의 이분 매칭을 찾기 위해 가장 적은 비용으로 N개의 요소($σ ∈ \mathfrak{S}_N$)의 순열을 탐색함
$$\hat{σ} = \argmin_{σ ∈ \mathfrak{S}N} \sum^N_i \mathcal{L}{match}(y_i, \tilde{y}_{σ(i)}),$$
-
여기서 $\mathcal{L}{match}(y_i, \tilde{y}{σ(i)})$는 ground truth와 prediction간의 pair-wise matching cost임
-
이 optimal assignment는 사전작업에 따라 Hungarian algorithm으로 효율적으로 계산됨
→ 가중 이분 매칭, loss가 가장 적은 최적의 매칭을 찾는 문제라고 볼 수 잇음
→ 이런 최적 할당 문제는 헝가리안 알고리즘을 이용해 빠르게 계산 가능
-
matching cost는 class prediction과 prediction 및 ground truth box의 유사성을 모두 고려함
-
ground truth의 각 요소 i는 $y_i = (c_i, b_i)$로 볼 수 있음
→ 여기서 $c_i$는 대상 클래스 label (∅ 일 수 있음)이고, $b_i ∈ [0, 1]^4$는 ground truth box의 중심 좌표와 이미지 크기에 비혜한 높이와 폭을 정의하는 vector임.
-
index $σ(i)$를 사용한 prediction의 경우, $c_i$의 클래스의 확률을 $\hat{p}{σ(i)}(c_i)$로 정의하고 predicted box를 $\hat{b}{σ(i)}$로 정의함
→ 해당 표기법을 사용해서 $\mathcal{L}{match}(y_i, \tilde{y}{σ(i)})$를 $-1_{\{c_i\neq \emptyset \} }\hat{p}{σ(i)}(c_i) + 1{\{c_i\neq \emptyset \} }\mathcal{L}{box}(b_i, \hat{b}{σ(i)})$로 정의함
$$\mathcal{L}{match}(y_i, \tilde{y}{σ(i)}) = -1_{\{c_i\neq \emptyset \} }\hat{p}{σ(i)}(c_i) + 1{\{c_i\neq \emptyset \} }\mathcal{L}{box}(b_i, \hat{b}{σ(i)})$$
-
matching을 찾는 이 절차는 match proposal 또는 anchor를 현대 Detector의 ground truth 객체에 매칭하는 데 사용되는 휴리스틱 할당 규칙과 동일한 역할을 함
-
주요 차이점은 중복없이 direct set prediction을 하기 위해 1:1 matching을 찾아야한다는 것임
-
두번째 step은 이전 단계에서 일치하는 모든 쌍에 대한 Hungarian loss인 loss function을 계산하는 것 (일반적인 object detector의 loss와 유사하게 loss를 정의함)
—> 즉, class prediction을 위한 negative log-likelihood와 나중에 정의된 box loss의 선형 조합
$$\mathcal{L}{Hungarian}(y, \tilde{y}) = \sum^N{i=1} [-\log \hat{p}{\hat{σ}(i)}(c_i) + 1{\{c_i\neq \emptyset \} }\mathcal{L}{box}(b_i, \hat{b}{\hat{σ}}(i))]$$
-
여기서 $\hat{σ}$은 첫번째 단계에서 계산된 optimal assignment임
-
실제로 클래스 불균형을 설명하기 위해 $c_i = \emptyset$일 때, log-probability term에 10배만큼 가중치를 줄임
-
이것은 Faster R-CNN의 훈련절차가 sub sampling을 통해 positive/negative proposal의 균형을 맞추는 방법과 유사함
-
객체와 $\empty$ 간의 matching cost는 prediction에 따라 달라지지 않음
→ 이는 그 경우에 cost가 상수라는 것을 의미함
-
matching cost에서 DETR은 log-probability 대신에 probability $\hat{p}_{σ(i)}(c_i)$를 사용함
→ 이것은 class prediction term을 $\mathcal{L}{box}(b_i, \hat{b}{σ(i)})$와 동등하게 만들고, 경험적으로 더 나은 성능을 관찰할 수 있게 해줌
Bounding box loss
-
matching cost와 Hungarian loss의 두 번째 부분은 bounding box에 점수를 매기는 $\mathcal{L}_{box}(.)$
-
몇 가지 초기 추측과 관련해서 box prediction을 ∆로 수행하는 많은 detector들과 달리, box prediction을 직접 수행함
-
이러한 접근 방식은 구현을 단순화하지만, loss의 상대적인 scaling에 문제가 됨
-
가장 일반적으로 사용되는 L1 loss는 상대적인 error가 유사하더라도 큰 상자와 작은 상자에 대해 다른 scale을 가짐
-
이 문제를 완화하기 위해 DETR은 스케일 불변의 L1 loss와 generalized IoU loss $\mathcal{L}_{iou}(. ,.)$의 선형조합을 사용함
-
전반적으로 box loss는 $\mathcal{L}{box}(b_i, \hat{b}{σ(i)})$가 $λ_{iou}\mathcal{L}{iou}(b_i,\hat{b}{σ(i)}) + λ_{L1}||b_i - \hat{b}_{σ(i)}||_1$로 정의 됨
→ $λ_{iou}, λ_{L1} ∈ \mathbb{R}$ 는 hyperparameter임
-
이 두 loss는 batch 내의 객체의 수로 정규화 됨
3.2 DETR architecture
-
전체 DETR architecture는 놀랍도록 간단하며 Figure 2에 설명되어 있음
-
architecture에는 세 가지 주요 구성요소가 포함되어 있음
- compact feature representation을 추출하는 CNN backbone
- encoder-decoder transformer
- 최종 detection prediction을 하는 간단한 feed forward network
-
많은 최신 detector와 달리, DETR은 일반적인 CNN backbone 및 몇백 line의 transformer architecture 구현을 제공하는 모든 딥러닝 프레임워크에서 구현될 수 있음
Backbone
- 초기 이미지 $x_{img}$에서 시작하여 기존 CNN backbone은 저해상도 activation map $f$를 생성
$$x_{img} ∈ \mathbb{R}^{3×H_0×W_0} , f ∈ \mathbb{R}^{C×H×W}$$
- 이 논문에서 사용하는 일반적인 값은 $H, W = \frac{H_0}{32}, \frac{W_0}{32}$, C = 2048임
Transformer encoder
-
첫째, 1x1 convolution은 high-level activation map f의 채널 차원을 C에서 더 작은 차원 d로 줄임
→ 새로운 feature map $z_0 ∈ \mathbb R^{d×H×W }$생성
-
encoder는 입력으로 sequence를 예상하기 때문에 $z_0$의 공간 차원을 하나의 차원으로 축소하여 d x HW의 feature map을 생성
-
각 encoder layer에는 표준 architecture가 있음
→ multi-head self-attention module 및 feed forward network (FFN)로 구성
-
transformer architecture는 permutation-invariant 임
→ 각 attention layer의 입력에 추가되는 fixed positional encoding으로 보완 (appendix에서 설명)
Transformer decoder
-
decoder는 transformer의 표준 아키텍퍼를 따름
-
multi-headed self-attention 및 encoder-decoder attention mechanism을 사용
→ d 사이즈의 N개의 embedding을 변환함
-
원래 transformer와의 차이점
→ DETR은 각 decoder layer에서 N개의 객체를 병렬로 decoding함
→ Vaswani et al이 제안한 transformer는 출력 시퀀스를 한번에 한 요소씩 예측하는 auto-regressive model을 사용
→ 보충자료 참조
-
decoder 또한 permutation-invariant
→ 다른 결과를 생성하려면 N개의 입력 임베딩이 달라야 함 !!
→ 이러한 입력 임베딩은 object query라고 하는 학습된 positional encoding이며, 인코더와 유사하게 각 attention layer의 입력에 추가함
-
N개의 object query는 decoder에 의해 임베딩 된 출력으로 변환됨
-
그런 다음 FFN에 의해 상자 좌표와 클래스 레이블로 각각 디코딩되어 N개의 최종 예측을 생성
-
이러한 self-attention 및 encoder-decoder attention 을 사용하여 모델은 전체 이미지를 context로 사용할 수 있는 동시에 모든 개체 간의 pair-wise 관계를 사용하며 모든 개체에 대해 global하게 추론함
인코더는 글로벌 어텐션을 통해 각각의 인스턴스를 분리해주는 역할
디코더는 말단 정보를 잘 캐치해서 클래스를 적절히 구분
Prediction feed-forward networks (FFNs)
-
최종 예측은 ReLU와 은닉 차원 d 및 linear projection layer를 갖는 3-layer perceptron에 의해 계산됨
-
FFN은 정규화된 중심좌표, 입력 이미지와 관련된 box의 중심좌표, 높이 및 너비를 예측함
-
linear layer는 softmax를 사용하여 클래스 레이블을 예측함
-
고정된 크기의 N개의 bounding box 집합을 예측하기 때문에 N은 일반적으로 이미지에서 실제 관심 대상 객체 수 보다 훨씬 큼 !
-
추가적인 special class label ∅은 slot 내에서 객체가 감지되지 않음을 나타냄
→ background와 유사한 역할
Auxiliary decoding losses
-
훈련 중에 decoder에서 auxiliary loss를 사용하는 것이 도움이 된다는 사실을 발견
→ 특히 모델이 각 클래스의 객체의 수를 정확하게 출력하는 데 도움이 됨.
-
각 decoder layer 뒤에 prediction FFNs과 Hungarian loss를 추가
-
모든 prediction FFNs는 매개변수를 공유함
-
추가적으로 공유된 layer-norm을 사용해 다른 decoder layer의 prediction FFNs에 대한 입력을 정규화 함
5. Conclusion
- 해당 논문은 direct set prediction을 위한 transformer와 bipartite matching loss를 기반으로 한 object detection 시스템인 DETR을 제안함
- 이 접근 방식은 까다로운 COCO dataset에서 optimized Faster R-CNN과 비슷한 결과를 얻어냄
- DETR은 구현이 간단하고, panoptic segmentation으로 쉽게 확장할 수 있는 유연한 아키텍처와 경쟁력 있는 결과를 제공함
- self-attention에 의해 수행되는 global한 정보저리 덕분에 큰 객체에서 faster rcnn보다 더 나은 성능을 달성함
- 한계
- 작은 객체에 대한 훈련
- 최적화 및 성능에 관련된 훈련