본문 바로가기
논문 리뷰/CV

[X:AI] Detr 논문 리뷰

by hyeon827 2024. 7. 23.

 

논문 원본 : https://arxiv.org/abs/2005.12872

 

End-to-End Object Detection with Transformers

We present a new method that views object detection as a direct set prediction problem. Our approach streamlines the detection pipeline, effectively removing the need for many hand-designed components like a non-maximum suppression procedure or anchor gene

arxiv.org

 

 

1. Introduction

  • Object Detection의 목표는 관심 있는 객체의 bounding box와 category label의 집합을 찾는 것
  • 현대 detector들은 set prediction task를 간접적 방식으로 접근
    • 수많은 proposals, anchor, 또는 window centers 위에 regression 및 classification 문제를 정의하여 처리
  • 이러한 기존 방식은 NMS, anchor set의 설계, anchor와 GT 간의 할당 규칙(heuristics)에 큰 영향을 받음
  • 본 논문은 object detection을  direct set prediction 문제로 보고 학습 파이프라인 간소화
  • 이를 위해 Transformer 기반의 Encoder-Decoder 구조 채택
  • 내부의 Self-Attention 매커니즘은 요소 간의 관계를 모두 모델링할 수 있어, 중복 예측 제거에 적합

  • DETR (DEtection TRansformer)는 모든 객체를 한 번에 예측
  • bipartite matching 기반의 set loss function을 통해 end-to-end 학습됨 (예측한 객체들과 실제 객체들을 1:1로 매칭 학습)
  • anchor나 NMS 등과 같은 사전 지식 기반 구성 요소를 제거하여 파이프라인 단순화
  • 또한, 기존 탐지기들과 달리 커스텀 레이어(ex. RPN, anchor generator)가 전혀 필요 없으며, CNN과 Transformer만 있다면 어떤 프레임워크에서도 쉽게 재현 가능

 

3. The DETR model

 

   3.1 Object detection set prediction loss

  • DETR은 N개의 예측 결과를 한 번에 출력하며, 이 N은 이미지 안에 실제 존재하는 객체 수보다 충분히 큰 수로 설정
  • 정답 객체 수보다 예측 수가 많으므로, 정답 객체 세트도 빈 객체(∅) 로 패딩하여 크기를 N으로 맞춤

   Bipartite Matching

  • 예측 결과와 정답 객체를 1:1로 짝지어야 함 (중복 없이)
  • 예측된 객체 집합(y hat)과 실체 객체 집합(y) 사이의 최적의 bipartite matching을 찾음
  • 두 집합 사이의 matching loss의 합을 가장 작게 만들어주는 σ(최적의 matching 결과)를 찾음
  • 이 과정을 Hungarian algorithm 으로 최적화

 

  • matching cost는 class 예측과 예측 박스와 정답 박스 간의 유사도를 모두 고려하여 계산
  • ground truth 집합의 각 요소는 yi = (ci,bi)이며, ci는 class label (∅일 수도 있음) , bi는 bounding box
  • bounding box는 중심 좌표, 높이, 너비에 대한 정보를 담고 있고 관련 값들은 0~1사이로 normalize 함
  • Matching Loss
    • class가 잘 매칭이 됐고, bounding box가 유사할 때 Loss 값이 줄어드는 형태
    • 즉, 클래스가 존재할 경우(cᵢ ≠ ∅), 클래스 예측 확률이 높을수록 비용이 낮아지고, 박스 오차가 작을수록 비용이 낮아짐
      • -log(확률)은 값의 범위가 0~무한대라서, 박스 손실이랑 값 범위가 안 맞음
      • p̂는 0~1 사이 값이므로, 박스 손실과 크기를 맞춰서 비교하기 쉬움
      • 정답이 ∅인 경우 비용을 고정값 1.0으로 처리

 

  • Hungarian Loss
    • bipartite matching이 수행된 이후에 모델의 output 값과 실제값이 유사하게 만들어 줘야 됨
    • 클래스 예측에 대한 음의 로그 우도 손실과 박스 오차 손실의 선형 결합 (σ̂는 1단계에서 구한 최적 매칭)
    • 실제로는 클래스가 없는 경우(cᵢ = ∅), log 확률 항의 가중치를 10배 줄여서 클래스 불균형 문제를 보완

 

  • Bounding box loss
    • L1 Loss : 박스의 중심 좌표, 높이/너비가 얼마나 차이 나는지를 숫자로 계산 (단점 : 큰 박스일수록 손실 커짐)
    • GIoU Loss : 두 박스가 얼마나 겹치는지 비율로 비교 (장점 : 상대적 크기 차이에 강함)
    • λ : 가중치를 사용하여 작은 박스, 큰 박스 모두에 대해 균형 잡힌 학습 가능

 

 

   3.2  DETR architecture

  • pytorch에서 DETR의 추론 코드는 50줄 미만으로 구현 가능
  • 그만큼 DETR은 간단한 구조

 

   CNN Backbone

  • 초기 이미지에서 시작하여 CNN backbone을 거쳐

  • activation map 추출 (일반적으로 C=2048, H,W = H0/32,W0/32)

 

   Transformer Encoder

  • 먼저, 1x1 Conv로 activation map 차원 C를 더 작은 차원 d로 줄임

  • encoder의 입력으로 sequence를 기대하므로, z0의 공간 차원을 하나의 차원으로 축소하여 dxHW feature map 생성
  • positional encoding 추가 -> 위치 정보 보존
  • Multi-head Self Attention + FeedForwrad 구조로 global feature 추출

   Transformer decoder

  • N개의 learnable한 object queries가 입력으로 들어감
  • 각 object query는 encoder에서 온 시각 정보와 attention
  • 한 번에 N개의 객체 예측 → 병렬 디코딩
  • 각 디코더 층 후마다 보조 예측과 Loss 계산 (auxiliary loss)

   Prediction Head (FFN)

  • 각 object query → 3-layer FFN에 들어감
  • 출력
    • Bounding Box: 중심좌표, 높이, 너비 → 정규화된 값
    • Class label: softmax 통해 C+1 클래스 분류 (∅ 포함)

   Auxiliary decoding losses

  • 각 디코더 층마다 예측을 하게 하고,
  • 해당 예측도 Hungarian Loss로 학습에 반영
  • 목적: 학습 초기에 정확한 객체 수를 예측하도록 도움

 

4. Experiments

 

   4.1 Comparison with Faster R-CNN

  • DETR은 COCO 2017에서 Faster R-CNN과 유사하거나 더 나은 성능을 보여줌
  • 특히 큰 객체 탐지에서 매우 뛰어남 (+7.8), 반면 작은 객체 에서는 다소 약함 (-5.5)
  • 학습 스케줄: 300~500 에폭, AdamW 옵티마이저, ResNet-50/101 백본 사용

 

   4.2 Ablations

  • Encoder : 글로벌 관계 학습에 필수. 없으면 성능 -3.9
  • Decoder 층 수 : 층이 깊을수록 AP 크게 향상됨 (+8.2)
  • FFN : 없으면 AP -2.3 → 중요
  • Positional Encoding : object queries는 필수. 입력 위치 인코딩은 성능 향상에 도움됨

 

   4.3 Loss Ablations

  • Classificaiton loss : 필수
  • GIoU loss : 매우 효과적, 단독으로도 좋은 성능
  • L1 loss : GIoU 없이 사용하면 성능 저조

 

   4.4 Decoder output slot analysis

  • 각 object query는 특정 위치/크기에 전문화된 예측 경향 보임
  • 심지어 COCO에 없는 24마리 기린이 있는 합성 이미지도 잘 탐지 → 일반화 능력 우수

 

 

   4.4  DETR for panoptic segmentation

  • DETR에 mask head만 붙이면 바로 panoptic segmentation 가능
  • 객체와 배경 구분 없이 통합 처리 가능
  • 기존 방법들보다 stuff 클래스에서 특히 우수한 성능
  • FPN 스타일 업샘플링과 DICE+Focal Loss 사용

 

5. Conclusion

  • Transformer + Bipartite matching Loss 사용을 통해 Direct Set Prediction Problem 해결
  • Large Object에서는 Faster R-CNN보다 더 좋은 성능을 보임
  • Small Object에 대한 성능 향상이 앞으로의 과제

'논문 리뷰 > CV' 카테고리의 다른 글

[X:AI] NeRF 논문 리뷰  (0) 2024.07.28
[X:AI] VAE 논문 리뷰  (1) 2024.07.26
[X:AI] MOFA-Video 논문 리뷰  (1) 2024.07.20
[X:AI] GAN 논문 리뷰  (2) 2024.07.17
[X:AI] SimCLR 논문 리뷰  (3) 2024.07.14