오늘은 DETR(End-toEnd Object Detection with Transformers)에서 발생한 Small Object Detection과 느린 학습 속도 등의 문제점을 Deformable 방법론을 더하여 해결한 Deformable DETR에 대해 알아보겠습니다.
Zhu, Xizhou, et al. "Deformable detr: Deformable transformers for end-to-end object detection." arXiv preprint arXiv:2010.04159 (2020).
Deformable DETR: Deformable Transformers for End-to-End Object Detection
Introduction
DETR(2020)은 객체 감지에서 많은 수작업 요소들(anchor generation, nms 등)을 제거하면서 좋은 성능을 보였으나 문제점 또한 명확했는데, 기존의 object detectors들 보다 수렴하는데 시간이 더 오래 걸린다는 것
(Faster R-CNN에 비해 10~20배 느리다.)과 작은 물체를 탐지하는 것에 대한 성능이 좋지 못한 것이 있었다.
(작은 물체를 탐지하기 위해선 고해상도의 Feature map을 사용해야 하는데, 이미지 Feature Map 크기에 따라 제곱(H^2 W^2 C)으로 늘어나는 self-attention 계산량을 감당하기 힘들다.)
이미지 도메인에서 Deformable Conv (2017)는 sparse spatial locations를 효율적으로 다루는 메커니즘이다. 이 메커니즘은 자연스럽게 DETR의 문제점을 해결할 수 있게 도와준다.
저자들은 Deformable Attention Module을 제안하였는데, 이는 Feature map pixels들 중에서 핵심 요소들을 샘플링한다.
이 모듈은 FPN의 도움 없이 multi-scale features를 통합할 수 있다는 것을 의미한다
Figure 1에서 볼 수 있듯이, Encoder Part의 기존 Transformer attention 모듈을 Deformable attention module로 변경하였으며, Cross Attention Part에서도 Deformable attention module이 적용된다.
위 방법을 적용한 Deformable DETR을 기존 DETR과 비교했을때, 10배 적은 훈련 시간으로 더 나은 성능(특히 작은 물체에서)를 달성했다고 한다.
Method
그림에서 Encoder의 Reference Point는 각 쿼리 픽셀의 좌표 그대로를 사용하며, Query Feature는 Image pixel이 된다.
Decoder에서 Reference Point는 학습 가능한 Linear projection과 sigmoid를 통해 Query Feature(Object Queries)에서 변환된다.
Sampling Offsets는 Reference Point 주변의 위치에서 Feature를 Sampling하는 offset을 예측한다. 이 오프셋은 2-D 좌표로, Query Feature의 위치를 기반으로 상대적인 위치를 나타낸다.
Deformable Attention Module
Transformer attention을 이미지에 적용하는 것은 가능한 모든 지역 정보(일반적으로 이미지의 정보는 Sparse한 특징을 갖고 있다.)를 본다는 문제점이 있다. 이 문제를 해결하기 위해 Deformable Attention Module을 제안하는데, Figure 2에서 볼 수 있듯, Feature map 공간 크기와 관계없이 Reference Point 주변의 작은 주요 샘플링 지점의 값만 가져와서 계산하는 것을 볼 수 있다.
input feature map $x \in R^{C\times H\times W}$가 주어지고, $q$가 content feature $z_q$와 2차원(2-d) Reference Point $p_q$를 가진 Query Element를 인덱싱한다고 가정할 때, Deformable Attention Module은 아래와 같이 계산된다.
$$ \text{DeformAttn}(z_q, p_q, x) = \sum_{m=1}^M W_m \left[ \sum_{k=1}^K A_{mqk} \cdot W'm x(p_q + \Delta p{mqk}) \right] $$
여기서 $m$은 attention head의 indexes이고, $k$는 샘플링된 keys, 그리고 $K$는 총 샘플링된 key 개수를 의미한다. ($K \ll HW$), *Key에 집중하는 이유, Cross Attention 계산에서 Key가 Image Feature Map이기 때문에
$\Delta p_{mqk}$ 와 $A_{mqk}$는 $m$번째 head와 $k$번째 sampling point에 해당하는 offset과 attention weight를 의미한다.
$$ \text{MSDeformAttn}(z_q, \hat{p}_q, \{x^l\}^L{l=1}) = $$
$$ \sum_{m=1}^M W_m \left[ \sum_{l=1}^L \sum_{k=1}^K A_{mlqk} \cdot W'_m x^l(\phi_l(\hat{p}_q) + \Delta p_{mlqk}) \right] $$
기존 Single DefromAttn과 달라지는 점은 여러 레이어(L)의 input feature map $x$ 와 normalized된 $\hat{p}_q \in [0,1]^2$를 사용한다는 점이다. $\hat{p}_q$는 $\phi_i$ 함수를 통해 l-th level의 feature map 크기에 맞게 re-scales 된다.
Deformable Transformer Encoder
기존 DETR의 Attention Module을 Deformable Attention Module로 교체하였다.
Resnet의 C3 부터 C5의 Multi Scale Feature map을 사용했다. Resnet에서 layer가 한 단계 깊어질 때마다 Feature Map의 크기는 2배 만큼 작아지므로, 가장 저해상도(C6)의 Feature map은 C5에서 3x3 stride 2 Conv Layer를 통해 얻는다.
모든 Feature map의 C는 256으로 고정(1x1Conv 이용)하였으며, Multi Scale Deformable Attention 자체가 Feature Map 사이의 정보를 교환할 수 있으므로 FPN은 사용하지 않았다.
인코더의 attention module에서 query와 key는 모두 feature map의 픽셀(Image pixel)로 구성되며, 각 query 픽셀의 reference point는 해당 픽셀 자체이다.
각각의 query 픽셀에 대해 Feature level을 알기 위해, scale-level embedding을 추가 했다. 고정된 positional embedding과 함께 사용되지만, positional embedding과 다르게, $ \{e_l\}^L_{l=1} $은 random하게 초기화되고, 네트워크와 함께 학습된다.
Deformable Transformer Decoder
Cross Attention Module은 Deformable로 교체하고, Self Attention은 기존의 Transformer Attention을 그대로 사용한다.
Additional Improvements
추가적인 성능 향상을 위해 도입한 방법론들이다.
Iterative Bounding Box Refinement.
탐지 성능을 향상시키기 위해 간단하고 효과적인 Iterative Bounding Box Refinement 메커니즘을 설정한다. 여기서 각 디코더 레이어는 이전 레이어의 예측을 기반으로 Bounding Box를 개선한다.
Two-Stage Deformable DETR.
원본 DETR에서 디코더의 Object queries는 당연하게도 현재 이미지와 관련이 없다. 기존 two-stage object detection에서 영감을 받아 첫 번째 단계로 region proposal을 생성하기 위한 Deformable DETR의 변형을 탐색한다. 생성된 영역 제안은 추가 개선을 위한 Object Query로 디코더에 공급되어 two-stage Deformable DETR을 형성한다.
첫 번째 단계에서는 높은 Proposal Recall을 달성하기 위해 multi-scale feature maps의 각 픽셀이 object query 역할을 한다. 그러나 object query를 픽셀로 직접 설정하면 디코더의 self-attention 모듈이 감당할 수 없을만큼의 계산 및 메모리 비용을 발생(ViT와 마찬가지로)시키며, Query 수에 따라 복잡성이 Quadratic하게 증가한다.
이 문제를 피하기 위해 저자들은 디코더를 제거하고 region proposal generation을 위한 인코더 전용 Deformable DETR을 형성한다.
여기에서 각 픽셀은 bounding box를 직접 예측하는 object query로 할당되며, 최고 점수 bounding box가 region proposals로 선택된다. region proposals를 두 번째 단계에 공급하기 전에 NMS가 적용되지 않는다.
정리
이 논문에서 저자들은 Deformable Conv에서 영감을 받아 Deformable Attention을 제안하였다.
Deformable Attention은 Reference Point로부터 중요한 pixel들만 참조하여 Attention 계산을 수행함으로써 기존 Transformer Attention에 비해 계산량을 많이 줄일 수 있다.
이 장점은 고해상도의 Feature Map을 사용할 수 있게 됨으로써 Small Object Detection 성능을 개선하였고, Key(Image Feature Map)에 해당하는 Attention Weight가 학습해야할 정보가 줄어들며, 학습 속도도 개선할 수 있었다.