DETR 모델의 논문 이름은 End-to-End Object Detection with Transformers다. (링크)
저자는 Nicolas Carion, Francisco Massa, Gabriel Synnaeve, Nicolas Usunier, Alexander Kirillov, Sergey Zagoruyko다.
트랜스포머 구조를 사용한 유명한 object detection 모델인데 드디어 리뷰를 하게 되었다.
Abstract
기존에는 hand-designed components, non-maximum supression (NMS)나 anchor generation을 이용해서 태스크에 대한 사전 지식을 명시적으로 인코딩하는 방법이 주류를 이루었다. 하지만 DEtection TRansformer (DETR)이라고 하는 set-based global loss를 활용하여 bipartite matching 을 통해 unique predictions를 달성하는 새로운 프레임워크를 제시한다. 이때 transformer 구조는 encoder-decoder다. 고정된 학습된 객체의 쿼리의 작은 셋이 주어지면 DETR은 이를 활용해서 객체들의 관계를 추론하고, 글로벌 이미지 컨텍스트로 최종 예측의 집합을 결과로서 직접적으로 추론한다. 이때 병렬적인 개념으로 처리한다.
Faster R-CNN에 버금가는 정확도와 런타임 성능을 COCO object detection 데이터셋에 대해서 달성했다. 또한 panoptic segmentation을 통합된 방법으로 쉽게 일반화할 수 있다.
DETR의 대략적인 구조는 아래 Fig. 1에 나와있다.
3. DETR
DETR의 자세한 구조는 아래 Fig. 2에 묘사되어 있다.
우선 전통적인 CNN 백본으로 원본 입력 이미지에 대한 2D representation을 가져오고 이를 flatten한 다음 positional embeddings를 더해서 transformer 인코더에 삽입한다. 디코더는 인코더의 아웃풋에 더해서 object queries라고 불리는 positional embeddings를 추가로 받아서 shared FFN을 거친다음 detection (class, box) class 혹은 no object class를 예측하게 된다.
원래 논문과는 다르게 DETR 아키텍처를 먼저 쓰고 그 다음 prediction loss를 다룬다.
3.2. DETR Architectures
Backbone
이미지는 본래 $x_{img} \in \mathbb{R}^{3 \times H_0 \times W_0}$의 크기를 갖는다. 이때 3은 RGB 채널이다.
CNN은 저해상도의 map인 $f \in \mathbb{R}^{C \times H \times W}$을 생성하며 저자들은 $C = 2048$, $H, W$ = $\frac{H_0}{32}, \frac{W_0}{32}$로 설정했다.
Transforemr encoder
high-level activation map인 $f$에 1x1 conv를 적용해서 채널의 차원을 축소해서 $d$로 변경한다. 이를 거친 새로운 feature map $z_0 \in \mathbb{R}^{d \times H \times W}$가 된다. 이를 다시 Spatial dimensions를 collapse하면 최종 feature map $z_0 \in d \times HW$의 차원을 갖는다. 개별 인코더 레이어는 self-attention과 feed forward network (FFN)으로 이루어진다.
트랜스포머는 permutation-invariant기 때문에 fixed positional encodings를 각각의 어텐션 레이어에 덧붙인다.
Transforemr decoder
기존의 트랜스포머는 $N$ embeddings of size $d$와 multi-head self-attention, encoder-decoder attention을 활용한다.
하지만 DETR에서는 $N$ objects를 parallel 병렬적으로 각각의 디코더 레이어에 삽입되어 디코딩된다.
디코더 역시 permutation-invariant기 때문에 $N$ input embeddings는 서로 다른 결과를 도출해야 한다. 이런 input embeddings는 learnt positional embeddings며 object queries라고 부른다. 인코더 레이어와 비슷하게 각각의 어텐션 레이어에 object queries를 덧붙인다. $N$개의 object queries는 독립적으로 FFN에 의해서 박스의 좌표와 클래스 라벨로 디코딩된다.
Self-attention과 인코더-디코더 어텐션을 통해서 모델을 글로벌리 객체들과 각각의 객체 사이의 pair-wise 관계를 학습하며 이는 결국 하나의 전체 이미지를 컨텍스트로 학습한다는 의미가 된다.
Prediction FFNs
최종 예측은 3-layer perceptron with ReLU activation과 linear projection layer에 의해서 수행된다. FFN은 박스에 대한normalized center 좌표와 높이, 너비를 예측한다. 그리고 선형 프로젝션 레이어는 클래스 라벨을 예측하는데 소프트맥스를 사용한다. 보통 $N$이 실제 객체의 수보다 훨씬 큰 경우가 많기 때문에 $\emptyset$ 클래스 라벨을 도입하여 "no object"로 사용한다. 기존의 "background" 클래스와 유사하게 동작한다.
3.1. Object detection set prediction loss
DETR은 고정된 $N$ 개의 예측을 추론한다. 보통 $N$은 하나의 이미지에 있는 객체의 수 보다 유의미하게 크다.
학습에서의 주된 어려움 중 하나는 predicted object (class, position, size)를 groun truth와 비교하여 점수를 매기는 점이다.
본 연구에서 제시하는 loss는 예측과 그라운드 트루스 사이의 optimal bipartite matching을 통해서 object-specific (bounding box) losses를 최적화한다.
객체 집합의 ground truth를 $y$로 표기하고 $\hat{y} = \{ \hat{y_i} \}_{i=1}^{N}$은 $N$개의 예측의 집합이다.
$N$이 이미지 안에 있는 객체의 수 보다 많다고 가정할 때 $y$는 no object인 $\emptyset$에 의해 padded 된 크기 $N$의 집합이다. 위 두 집합 사이의 bipartite matching을 위해서 $N$개의 element 원소들에 대한 permutation 순열을 찾아야 한다.
이때 개별 원소는 $\sigma \in \mathbb{G_N}$이며 이때 lowest cost를 가져야한다.
$\hat{\sigma} = \underset{\sigma \in \mathbb{G_N}}{\text{argmin}} \sum_{i}^{N} L_{match}(y_i, \hat{y_{\sigma (i)}}) $ - (1)
이때 $L_{match}(y_i, \hat{y_{\sigma (i)}})$는 pair-wise matching cost로 그라운드 트루스 $y_i$와 인덱스 $\sigma(i)$에 대한 예측 이다. Optimal assignment 최적의 배치는 Hungarian algorithm으로 효율적으로 계산할 수 있다.
그라운드 트루스의 원소 $i$는 $y_i = (c_i, b_i)$로 볼 수 있다.
$c_i$는 타켓 클래스 라벨이며 ($\emptyset$일수도 있는) $b_i \in \left[ 0, 1 \right]^4$는 그라운드 트루스 박스의 중앙 좌표와 길이와 너비를 의미한다. 그리고 위 4가지 숫자는 원본 이미지 크기에 비례한다. 인덱스 $\sigma(i)$에 대한 예측은 $c_i$일 확률 $\hat{p}_{\sigma(i)}(c_i)$와 예측된 박스 $\hat{b}_{\sigma(i)}$로 정의할 수 있다. 따라서 Matching loss를 다음과 같이 정의한다. 역시나 indicator function을 $\mathbb{I}$로 대체하여 표기한다.
$L_{match}(y_i, \hat{y_{\sigma (i)}})$ = $- \mathbb{I}_{c_i \neq \emptyset} \hat{p}_{\sigma(i)}(c_i) + \mathbb{I}_{c_i \neq \emptyset} L_{box}(b_i, \hat{b}_{\sigma(i)}) $.
Hungarian loss를 모든 페어에 대해서 정의하면 클래스 예측과 박스 로스에 대한 negative log-likelihood의 선형 조합으로 표시할 수 있으며 아래와 같다.
$L_{Hungarian}(y, \hat{y}) = \sum_i^N \left[ -log \hat{p}_{\sigma(i)}(c_i) + \mathbb{I}_{c_i \neq \emptyset} L_{box}(b_i, \hat{b}_{\sigma(i)}) \right]$ - (2)
이때 $\hat{\sigma}$는 (1)에서 계산한 optimal assignment다. 실제로 적용할 때 저자들은 log-probability term을 down weight 하기 위해서 $c_i = \emptyset$일 때 factor를 10으로 주어서 class imbalance 클래스 불균형을 완화하려고 했다. 객체와 $\emptyset$ 사이의 cost는 예측에 의존하는게 아니라 상수다. 예측시에는 log 확률이 아닌 그냥 확률인 $\hat{p}_{\sigma(i)}(c_i)$을 사용한다.
Bounding box loss
두번째 파트는 bbox에 대한 loss다.
다른 탐지기들과 다르게 여기서는 직접적으로 상자를 예측한다. 흔히 사용하는 L1 loss의 경우 상자의 크기에 따른 스케일의 차이가 생기므로 이를 선형 결합한 generalized IoU loss $L_{iou}$ 사용해서 scale-invariant를 유지한다. 따라서 $L_{box}(b_i, \hat{b}_{\sigma(i)}) $는 다음과 같이 정의된다.
$L_{box}(b_i, \hat{b}_{\sigma(i)}) = \lambda_{iou} L_{iou} (b_i, \hat{b}_{\sigma(i)}) + \lambda_{L1} || b_i - \hat{b}_{\sigma(i)} ||_1 $이고 두 개의 람다는 각각 실수인 하이퍼파라미터다.
이 두 loss는 batch 안에서 객체의 개수에 따라서 normalized 된다.
4. Experiments
COCO 2017 object detection과 panoptic segmentation datasets를 사용한다.
DETR은 AdamW를 사용했으며 initial transormer's learning rate는 10^-4며 백본은 10^-5이며 weight decay는 10^-4다.
백본은 torchvision에 있는 ImageNet-pre-trained ResNet을 사용했으며 각각 ResNet-50과 101을 사용했다.
Faster R-CNN보다 좋은 결과를 달성했음을 확인할 수 있다.
Fig.3 에서는 레퍼런스 포인트에 대한 인코더의 셀프 어텐션이 제대로 객체를 탐지함을 알 수 있다.
Fig. 6은 COCO에 대한 탐지 결과를, Fig. 8과 9는 panoptic에 대한 결과를 보여준다.
References:
https://kimjy99.github.io/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0/detr/
https://herbwood.tistory.com/26
'Computer Vision' 카테고리의 다른 글
DeepLab V3 (2017) 논문 리뷰 (0) | 2025.04.28 |
---|---|
Inception V3 (2015) 논문 리뷰 (0) | 2025.04.28 |
YOLO v4 (2020) 논문 리뷰 (0) | 2025.04.27 |
FPN (2017) 논문 리뷰 (0) | 2025.04.25 |
CRAFT (2019) 논문 리뷰 (1) | 2025.04.15 |