Deformable Attention
변형 어텐션은 특성 맵의 모든 위치 대신 각 쿼리가 기준 위치 주변에서 학습된 소수의 샘플링 지점에 어텐션을 적용하도록 합니다.
변형 가능한 어텐션은 컴퓨터 비전을 위한 어텐션 메커니즘으로, 각 쿼리가 특징 맵의 모든 위치가 아니라 기준 위치 주변의 고정된 소수 샘플링 지점에 어텐션합니다. 쿼리 자체가 기준점으로부터의 오프셋으로 각 지점의 위치를 예측하고, 각 지점의 가중치도 결정하므로 비용은 이미지 해상도가 아니라 쿼리와 지점의 수에 따라 증가합니다. SenseTime, 중국과학기술대학교, 홍콩중문대학교의 Xizhou Zhu, Jifeng Dai와 동료들은 ICLR 2021 구두 발표 논문인 Deformable DETR에서 이 방식을 소개했습니다. 이 방식은 기존 DETR 감지 트랜스포머의 두 가지 약점을 해결했습니다. 완전한 어텐션은 저해상도 특징으로 제한했고 학습에는 500 에포크가 필요했습니다. Deformable DETR은 에포크 수를 10분의 1로 줄였으며 작은 객체를 더 잘 감지했습니다.
변형 가능한 어텐션의 작동 방식#
이 개념은 Dai도 공동 개발한 변형 가능한 합성곱을 확장한 것으로, 합성곱 커널의 탭에 대한 오프셋을 학습합니다. 기준점이 있는 각 쿼리에서 모든 어텐션 헤드는 쿼리 특징에 두 개의 선형 레이어를 적용합니다. 하나는 K개의 샘플링 오프셋을 예측하고 다른 하나는 소프트맥스로 정규화된 K개의 어텐션 가중치를 예측합니다. 오프셋은 소수점 단위이므로 이동된 각 지점의 값 특징은 쌍선형 보간으로 읽고, 헤드는 가중합을 반환합니다. 논문은 헤드 8개와 K = 4개 지점을 사용하므로, 쿼리 하나가 각 특징 맵에서 32개 위치를 읽습니다. 반면 표준 셀프 어텐션은 모든 픽셀에 점수를 매깁니다. 단일 헤드, 단일 스케일 버전은 PyTorch 코드 몇 줄로 구현할 수 있습니다.
import torch
import torch.nn.functional as F
torch.manual_seed(0)
dim, n_points, n_queries = 32, 4, 100
value = torch.randn(1, dim, 64, 64) # a 64x64 feature map: 4,096 positions
query = torch.randn(n_queries, dim)
ref = torch.rand(n_queries, 2) * 2 - 1 # reference points in grid_sample's [-1, 1] coordinates
# Each query predicts where to look (offsets) and how much each sample counts (weights)
to_offsets, to_weights = torch.nn.Linear(dim, n_points * 2), torch.nn.Linear(dim, n_points)
offsets = 0.1 * to_offsets(query).view(n_queries, n_points, 2)
weights = to_weights(query).softmax(dim=-1)
# Bilinearly sample the value map at reference + offset, then take the weighted sum
grid = (ref[:, None] + offsets)[None] # (1, n_queries, n_points, 2)
sampled = F.grid_sample(value, grid, align_corners=False)[0] # (dim, n_queries, n_points)
out = (sampled * weights).sum(dim=-1).T # (n_queries, dim)
print(f"Output {tuple(out.shape)} from {n_queries * n_points} samples, not {n_queries * 64 * 64:,} dense scores")Output (100, 32) from 400 samples, not 409,600 dense scores을 출력합니다. 쿼리 100개 각각이 위치 4,096개 중 4개를 읽습니다. 학습 과정에서 오프셋 및 가중치 레이어를 조정하므로, 태스크에 도움이 되는 이미지 영역을 향해 지점이 이동합니다.
멀티스케일 변형 가능 어텐션#
객체의 크기는 크게 다르므로 Deformable DETR은 여러 특징 맵에서 지점을 동시에 샘플링합니다. L개 레벨에서 각 헤드는 모든 레벨마다 K개의 지점을 가져오고 L × K개 지점 전체에 걸쳐 가중치를 함께 정규화합니다. 이로써 세밀한 특징과 거친 특징을 한 번에 혼합하고, 인코더에서 특징 피라미드 네트워크(FPN)를 대체했습니다. 인코더는 모든 레벨의 모든 픽셀을 쿼리로 사용해 셀프 어텐션으로 적용하고, 디코더는 객체 쿼리에서 이미지 특징으로 크로스 어텐션을 적용합니다.
Ultralytics 패키지에서 사용할 수 있는 Baidu의 실시간 감지 트랜스포머 RT-DETR은 6개 디코더 레이어의 크로스 어텐션에 멀티스케일 변형 가능 어텐션을 사용합니다. 객체 쿼리 300개 각각은 스트라이드 8, 16, 32 특징 맵에서 헤드 8개마다 지점 4개씩, 총 96개 위치를 샘플링합니다. 640픽셀 이미지의 해당 맵 전체에 완전한 크로스 어텐션을 적용하면 8,400개 위치에 점수를 매겨야 합니다.
응용 분야#
- 객체 감지: DINO와 RT-DETR을 포함한 Deformable DETR의 후속 모델은 디코더에서 변형 가능한 크로스 어텐션을 유지하므로 작은 객체를 위한 고해상도 특징을 읽을 수 있습니다.
- 자율주행차: BEVFormer는 여러 차량 카메라의 이미지를 조감도 그리드로 투영하며, 각 그리드 셀은 자신이 보이는 카메라 뷰에서 변형 가능한 지점을 샘플링합니다.
- 파놉틱 세그멘테이션: Mask2Former는 마스크를 예측하기 전에 변형 가능한 어텐션으로 멀티스케일 픽셀 특징을 구성합니다.
변형 가능한 어텐션과 관련 용어 비교#
- 슬라이딩 윈도 어텐션: 위치에 따라 정해지는 고정된 주변 영역에 어텐션하며, 모든 입력에 동일하게 적용됩니다.
- 희소 어텐션: 미리 선택한 토큰 쌍의 고정된 부분 집합에 점수를 매깁니다.
- Flash attention: 온칩 GPU 메모리에서 타일 단위로 처리해 일반적인 조밀 어텐션을 더 빠르게 계산하며 표준 어텐션과 동일한 결과를 냅니다.
- 비전 트랜스포머(ViT) 어텐션: 모든 이미지 패치를 서로 비교하므로 비용은 패치 수의 제곱에 비례해 증가합니다.










