Skip to content

PublicClassSoomin/DETR-Paper-Review

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

DETR: End-to-End Object Detection with Transformers

논문 리뷰 및 COCO 기반 Faster R-CNN vs DETR 비교 실습


1. 개요 (Introduction)

  • 출처: ECCV 2020, Facebook AI Research
  • 핵심 개념: 기존 Object Detection의 복잡한 파이프라인(Anchor, NMS, RPN 등)을 제거하고, Transformer를 도입하여 객체 탐지를 직접 집합 예측(Direct Set Prediction) 문제로 정의
  • 의의: Computer Vision에 Transformer 구조를 성공적으로 적용하여, ViT(Vision Transformer), Deformable DETR 등 후속 연구의 기반이 됨

2. 모델 구조 (Architecture)

구성 요소 설명
Backbone (CNN) 입력 이미지에서 고차원 특징 맵(Feature Map) 추출 (주로 ResNet)
Transformer Encoder 이미지 전역 문맥(Global Context)을 학습하여 객체 간 관계 파악
Transformer Decoder 100개의 학습 가능한 Object Queries와 Encoder 특징 맵 간 Cross-Attention으로 위치·종류를 병렬 예측
Prediction Heads (FFN) 디코더 출력으로 최종 클래스바운딩 박스 좌표 예측

3. 핵심 메커니즘 (Key Components)

A. 이분 매칭 (Bipartite Matching & Hungarian Loss)

  • DETR은 항상 고정 개수(N=100) 의 예측을 출력
  • 학습 시 예측 100개와 Ground Truth 간 1:1 최적 매칭을 위해 Hungarian Algorithm 사용
  • 그 결과 NMS(Non-Maximum Suppression)가 필요 없음

B. 손실 함수 (Loss Function)

  • Classification Loss: 클래스 분류
  • L1 Loss & GIoU Loss: 바운딩 박스 좌표 정교화

4. Faster R-CNN vs DETR 비교

비교 항목 Faster R-CNN DETR
핵심 철학 앵커 박스 기반 단계적 추론 트랜스포머 기반 직접 집합 예측
구성 요소 RPN, Anchor, RoI Pooling, NMS CNN Backbone, Transformer, Object Queries
후처리 NMS 필수 NMS 불필요
학습 비교적 빠름 많은 Epoch 필요
객체 크기 소형 객체에 강점 대형 객체에 강점 (전역 정보 활용)

5. 실습: COCO 데이터셋 비교 구현

이 프로젝트는 Faster R-CNNDETR의 전처리 차이(정규화 유무)를 반영하여, 동일 이미지에 대한 두 모델의 객체 탐지 결과를 나란히 비교합니다.

결과 예시 이미지

아래는 동일한 주방 이미지를 대상으로 Faster R-CNN(좌)과 DETR(우)의 탐지 결과를 나란히 시각화한 예시입니다.

Faster R-CNN vs DETR 결과 예시

환경 요구사항

  • Python 3
  • PyTorch
  • torchvision
  • matplotlib, PIL

주요 코드 구성

  1. 장치 설정: CUDA 사용 가능 시 GPU, 아니면 CPU
  2. 모델 로드
    • Faster R-CNN: torchvision fasterrcnn_resnet50_fpn (COCO 사전학습)
    • DETR: torch.hub.load('facebookresearch/detr', 'detr_resnet50', pretrained=True)
  3. 전처리
    • Faster R-CNN: ToTensor() 만 (내부 정규화 존재)
    • DETR: Resize(800) + ToTensor + Normalize (ImageNet 통계) 필수
  4. 비교 추론 함수 compare_models(image_path, threshold=0.7)
    • 한 이미지에 대해 두 모델 추론 후 좌측(Faster R-CNN), 우측(DETR) 시각화

실행 방법

  1. 의존성 설치 후 Jupyter에서 DETR 구현 코드.ipynb 실행
  2. 비교할 이미지를 assets/test_img.jpg 경로에 두고 아래 셀 실행:
compare_models('./assets/test_img.jpg')
  1. 다른 이미지 또는 threshold 사용 예:
compare_models('your_image.jpg', threshold=0.5)

파일 구조

DETR/
├── DETR 구현 코드.ipynb           # 논문 리뷰 + 실습 코드
├── README.md                      # 본 문서
└── assets/
    ├── test_img.jpg               # 비교 실습용 테스트 이미지 (사용자 준비)
    └── faster-rcnn-vs-detr.png    # 예시 결과 이미지

6. 참고 문헌

About

DETR(DEtection TRansformer) 논문 핵심 요약 및 상세 분석 저장소입니다.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors