논문 리뷰 및 COCO 기반 Faster R-CNN vs DETR 비교 실습
- 출처: ECCV 2020, Facebook AI Research
- 핵심 개념: 기존 Object Detection의 복잡한 파이프라인(Anchor, NMS, RPN 등)을 제거하고, Transformer를 도입하여 객체 탐지를 직접 집합 예측(Direct Set Prediction) 문제로 정의
- 의의: Computer Vision에 Transformer 구조를 성공적으로 적용하여, ViT(Vision Transformer), Deformable DETR 등 후속 연구의 기반이 됨
| 구성 요소 | 설명 |
|---|---|
| Backbone (CNN) | 입력 이미지에서 고차원 특징 맵(Feature Map) 추출 (주로 ResNet) |
| Transformer Encoder | 이미지 전역 문맥(Global Context)을 학습하여 객체 간 관계 파악 |
| Transformer Decoder | 100개의 학습 가능한 Object Queries와 Encoder 특징 맵 간 Cross-Attention으로 위치·종류를 병렬 예측 |
| Prediction Heads (FFN) | 디코더 출력으로 최종 클래스와 바운딩 박스 좌표 예측 |
- DETR은 항상 고정 개수(N=100) 의 예측을 출력
- 학습 시 예측 100개와 Ground Truth 간 1:1 최적 매칭을 위해 Hungarian Algorithm 사용
- 그 결과 NMS(Non-Maximum Suppression)가 필요 없음
- Classification Loss: 클래스 분류
- L1 Loss & GIoU Loss: 바운딩 박스 좌표 정교화
| 비교 항목 | Faster R-CNN | DETR |
|---|---|---|
| 핵심 철학 | 앵커 박스 기반 단계적 추론 | 트랜스포머 기반 직접 집합 예측 |
| 구성 요소 | RPN, Anchor, RoI Pooling, NMS | CNN Backbone, Transformer, Object Queries |
| 후처리 | NMS 필수 | NMS 불필요 |
| 학습 | 비교적 빠름 | 많은 Epoch 필요 |
| 객체 크기 | 소형 객체에 강점 | 대형 객체에 강점 (전역 정보 활용) |
이 프로젝트는 Faster R-CNN과 DETR의 전처리 차이(정규화 유무)를 반영하여, 동일 이미지에 대한 두 모델의 객체 탐지 결과를 나란히 비교합니다.
아래는 동일한 주방 이미지를 대상으로 Faster R-CNN(좌)과 DETR(우)의 탐지 결과를 나란히 시각화한 예시입니다.
- Python 3
- PyTorch
- torchvision
- matplotlib, PIL
- 장치 설정: CUDA 사용 가능 시 GPU, 아니면 CPU
- 모델 로드
- Faster R-CNN:
torchvisionfasterrcnn_resnet50_fpn(COCO 사전학습) - DETR:
torch.hub.load('facebookresearch/detr', 'detr_resnet50', pretrained=True)
- Faster R-CNN:
- 전처리
- Faster R-CNN:
ToTensor()만 (내부 정규화 존재) - DETR: Resize(800) + ToTensor + Normalize (ImageNet 통계) 필수
- Faster R-CNN:
- 비교 추론 함수
compare_models(image_path, threshold=0.7)- 한 이미지에 대해 두 모델 추론 후 좌측(Faster R-CNN), 우측(DETR) 시각화
- 의존성 설치 후 Jupyter에서
DETR 구현 코드.ipynb실행 - 비교할 이미지를
assets/test_img.jpg경로에 두고 아래 셀 실행:
compare_models('./assets/test_img.jpg')- 다른 이미지 또는 threshold 사용 예:
compare_models('your_image.jpg', threshold=0.5)DETR/
├── DETR 구현 코드.ipynb # 논문 리뷰 + 실습 코드
├── README.md # 본 문서
└── assets/
├── test_img.jpg # 비교 실습용 테스트 이미지 (사용자 준비)
└── faster-rcnn-vs-detr.png # 예시 결과 이미지
- Carion, N., et al. "End-to-End Object Detection with Transformers." ECCV, 2020.
- DETR (Facebook Research)
