Skip to main content

DETR — Transformer 기반 객체 탐지

DETR(DEtection TRansformer)은 Transformer를 객체 탐지에 적용한 최초의 모델로, NMS 같은 수작업 후처리 없이 End-to-End로 탐지를 수행합니다.

핵심 아이디어

기존 탐지 모델은 앵커 생성, NMS 등 많은 수작업 컴포넌트가 필요합니다. DETR은 이를 집합 예측(Set Prediction) 문제로 재정의하여, Transformer의 Attention 메커니즘으로 직접 객체 집합을 출력합니다. 헝가리안 매칭(Hungarian Matching)으로 예측과 정답을 일대일 매칭합니다.

동작 방식

Object Query

DETR은 고정 개수(기본 100개)의 학습 가능한 Object Query를 사용합니다. 각 쿼리는 Transformer Decoder를 통과하며 하나의 객체를 담당하게 됩니다. 쿼리 수가 이미지 내 최대 탐지 가능 객체 수를 결정합니다.

헝가리안 매칭

학습 시 N개의 예측과 M개의 정답(M < N) 사이의 최적 일대일 매칭을 헝가리안 알고리즘으로 찾습니다. 매칭되지 않은 예측은 “no object” 클래스로 학습됩니다.

구현

import torch
from transformers import DetrImageProcessor, DetrForObjectDetection
from PIL import Image

# DETR 모델과 프로세서 로드
processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50")
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")

# 추론
image = Image.open("image.jpg")
inputs = processor(images=image, return_tensors="pt")

with torch.no_grad():
    outputs = model(**inputs)

# 후처리 (신뢰도 임계값 적용)
target_sizes = torch.tensor([image.size[::-1]])  # (높이, 너비)
results = processor.post_process_object_detection(
    outputs, target_sizes=target_sizes, threshold=0.7
)

for score, label, box in zip(
    results[0]["scores"], results[0]["labels"], results[0]["boxes"]
):
    box = box.tolist()
    label_name = model.config.id2label[label.item()]
    print(f"{label_name}: {score:.2f} [{box[0]:.0f}, {box[1]:.0f}, {box[2]:.0f}, {box[3]:.0f}]")

RT-DETR: 실시간 DETR

RT-DETR(Real-Time DETR)은 DETR의 정확도를 유지하면서 실시간 추론을 달성한 모델입니다.
비교 항목DETRRT-DETR
학습 수렴느림 (500 에폭)빠름 (72 에폭)
추론 속도느림실시간 가능
NMS불필요불필요
백본ResNetHGNetV2, ResNet
from ultralytics import RTDETR

# RT-DETR 모델 로드 (Ultralytics 지원)
model = RTDETR('rtdetr-l.pt')

# 추론
results = model('image.jpg')

# 학습
model.train(data='dataset.yaml', epochs=100, imgsz=640)

관련 기술 비교

비교 항목YOLOFaster R-CNNDETRRT-DETR
아키텍처CNNCNNCNN + TransformerCNN + Transformer
후처리NMS 필요NMS 필요불필요불필요
학습 속도빠름보통느림보통
추론 속도매우 빠름느림느림빠름
소형 객체보통좋음약함보통
NMS 튜닝이 어려운 밀집 객체 탐지나, End-to-End 파이프라인이 필요한 경우에 적합합니다. 실시간성이 필요하면 RT-DETR을, 최고 정확도가 필요하면 Co-DETR이나 DINO를 검토하세요.
Transformer의 Self-Attention이 수렴하려면 많은 에폭이 필요합니다. Deformable DETR은 Deformable Attention으로 이 문제를 개선하여 10배 빠른 수렴을 달성했습니다.

참고 논문

논문학회/연도링크
End-to-End Object Detection with Transformers (DETR)ECCV 2020arXiv:2005.12872
Deformable DETRICLR 2021arXiv:2010.04159
DETRs Beat YOLOs on Real-time (RT-DETR)CVPR 2024arXiv:2304.08069