오늘은 RT-DETR이라는 모델에 대해서 공부해보자. 논문에서 구현 디테일을 다 빼고 굉장히 abstract하게 설명해서 이해하는데 굉장히 골머리를 앓았다. 코드를 뜯어봐야지만 전부 이해할 수 있었다. 그래도 이해하고 나면 굉장히 잘 design한 model이라는 것을 알 수 있다.
https://arxiv.org/abs/2304.08069
DETRs Beat YOLOs on Real-time Object Detection
The YOLO series has become the most popular framework for real-time object detection due to its reasonable trade-off between speed and accuracy. However, we observe that the speed and accuracy of YOLOs are negatively affected by the NMS. Recently, end-to-e
arxiv.org
Preliminaries
이 논문은 DETR의 Architecture를 변형한 논문이므로, DETR을 먼저 이해해야 한다.
https://seokmin-hardstudy.tistory.com/20
Research Paper Review(DeTR) : End-to-End Object Detection with Transformers
오늘은 DeTR(Detection Transformer) 논문에서 소개한 모델을 공부해보도록 하자. https://arxiv.org/abs/2005.12872 End-to-End Object Detection with TransformersWe present a new method that views object detection as a direct set prediction p
seokmin-hardstudy.tistory.com
또한, 논문에서 Multi-Scale information의 결합에 대해서 다루는데, 이 내용을 이해하려면 Deformable-DETR을 읽는 것이 매우 도움이 될 것이다.
https://seokmin-hardstudy.tistory.com/22
Research Paper Review (Deformable DETR) : Deformable Transformers for end2end object detection
이 게시물에서는 Deformable DETR에 대해서 설명하려고 한다. 논문의 notation이 조금 복잡하고, detail이 많아서 읽는데 에너지가 많이 들었다. https://arxiv.org/abs/2010.04159 Deformable DETR: Deformable Transformers fo
seokmin-hardstudy.tistory.com
또한, 논문에서 Multi-Scale feature map을 fusion할 때 CNN기반 방법을 사용하는데, 이 방법들을 이미 알고있다고 가정하고 논문에서 설명을하기 때문에, 밑의 두 블로그를 참조해서 FPN과 PANet을 공부하고 와야한다. 블로그를 전부 읽기 귀찮은 독자들을 위해서 블로그 링크 밑에 요약본을 정리해두었다. 요약본을 읽어보고 이해가 안되면 블로그에 가서 공부하고 오자.
https://ctkim.tistory.com/entry/Feature-Pyramid-NetworkFPN#google_vignette
Feature Pyramid Network[FPN]
☞ 문서의 내용은 가장 하단 참고문헌 및 사이트를 참고하여 필자가 보기 쉽도록 정리한 내용입니다. ☞ 틀린 내용 및 저작권 관련 문의가 있는 경우 문의하시면 수정 및 삭제 조치하겠습니다.
ctkim.tistory.com
https://deep-learning-study.tistory.com/637
[논문 읽기] PANet(2018), Path Aggregation Network for Instance Segmentation
안녕하세요, 오늘 읽은 논문은 PANet, Path Aggregation Network for Instance Segmentation 입니다. PANet은 Mask R-CNN을 기반으로 Instance Segmentation을 위한 모델입니다. 이 논문에서 제안하는 Bottom-up path augmentation과
deep-learning-study.tistory.com
블로그를 보기 귀찮은 독자들을 위해서 FPN을 간단히 설명해보도록 하겠다.
객체 검출에서는 크기가 다양한 물체들을 효과적으로 인식하기 위해 multi-scale feature map을 사용하는 것이 유리하다. 또한 서로 다른 해상도의 feature map끼리 정보를 교환해 서로의 장점을 보완하도록 만드는 것이 더 강한 표현력을 가진 feature를 만드는 데 도움이 된다는 점도 자연스럽게 받아들일 수 있다.
이때 중요한 관찰은, high-level feature map은 low-level feature map을 여러 단계를 거쳐 만들어졌기 때문에 low-level의 정보가 어느 정도 포함되어 있지만, 반대로 low-level feature map은 high-level feature를 전혀 보지 못한다는 비대칭 구조이다. 따라서 low-level feature에 high-level의 semantic 정보를 전달해주면 더 좋은 multi-scale 표현을 만들 수 있다는 것이 FPN의 출발점이다.
이를 구현하기 위해 FPN은 top-down 경로를 만들고, 상위 레벨 feature를 ×2 upsample한 뒤 하위 레벨 feature와 element-wise add한다. 이 과정을 반복하면서 각 scale에서 새로운 feature map을 생성하게 된다.

PANet에서는 high-level feature map이 구조적으로 low-level feature map에서 생성되었기 때문에 이론적으로는 low-level 정보가 포함되어 있다고 볼 수 있지만, 실제로는 그 사이에 너무 많은 layer가 존재해 정보가 점점 희석되는 문제가 발생하는 것을 지적한다. 따라서 PANet은 low-level에서 high-level로 올라가는 과정에서 손실된 low-level feature의 정보를 다시 효과적으로 high-level feature map에 전달해줄 필요가 있다는 관찰에서 출발한다.
이를 위해 PANet은 기존 FPN의 top-down 경로에 더해, bottom-up path augmentation을 추가하여 feature 간의 양방향 정보 흐름을 강화한다. 그 결과 각 scale의 feature map은 더 풍부한 semantic 정보와 더 정확한 localization 정보를 동시에 갖게 된다.
이렇게 bottom-up path를 포함한 PANet의 multi-scale feature fusion 구조를 RT-DETR에서 사용한다.

Background
기존 CNN 기반 object detection 모델들은 NMS의 hyperparameter 의존성이라는 한계를 가지고 있었다. 이를 해결하기 위해 등장한 DETR 계열의 NMS-free 모델들은 이러한 문제를 제거하며 정확도를 크게 향상시키는 데 성공했다. 하지만 DETR류 모델은 여전히 실시간(real-time) 적용에는 속도가 부족하다는 공통된 한계를 가지고 있었다.
이 논문은 이러한 문제를 해결하기 위해, DETR의 구조를 개선해 real-time으로 동작할 수 있을 만큼 속도를 크게 높이는 것을 목표로 한다. 나아가 단순히 빠르기만 한 것이 아니라, 기존 방식보다 정확도까지 향상시켰다는 점에서 중요한 의미를 가진다.
Methods
이 논문에서 accuracy와 speed를 모두 향상시키기 위해서 제안한 방법론은 크게 두 가지가 있다.
첫 번째로, backbone(예: ResNet)을 통과해 생성된 multi-scale feature map 중에서, self-attention이 실제로 필요한 것은 가장 high-level feature map 하나뿐이라는 점을 명확히 제시한다. 다른 픽셀들과 정보를 교환할 때 의미가 있는 것은 high level feature map의 semantic한 정보이지 low level feature map의 local detail한 정보가 아니라는 것이다. 실제 실험에서도 low-level feature map에서 self-attention을 수행하면 오히려 성능을 저해하는 결과가 나타난다. 따라서 high-level feature에만 self-attention을 적용함으로써 속도를 향상시키면서도 정확도를 유지하거나 오히려 높일 수 있다.
두 번째로, decoder query initialization 방식을 개선한다. 기존 DETR은 query를 random으로 초기화해서 모델의 빠른 수렴을 방해했다. 이를 개선하기 위해 등장한 Deformable DETR은 encoder output 중 class confidence가 높은 embedding을 선택하여 query로 사용했다. 하지만 이 방식은 class는 잘 맞추지만 box regression 성능이 낮은 embedding이 선택될 위험이 있다. 즉 class confidence만으로 good query를 판단하기에는 정보가 부족하다. 이를 해결하기 위해 논문에서는 loss 설계를 변경하여 class loss를 IOU(predicted box, ground truth)에 비례하도록 조정한다.
- box를 잘 예측한 token일수록 class loss가 크게 반영되도록 하고,
- box를 못 예측한 token은 class loss를 적게 반영한다.
이렇게 하면 모델은 "box를 잘 예측하는 token일수록 class도 잘 맞도록" 학습하게 되고, 결국 class score 자체가 box 품질을 어느 정도 반영하게 된다. 따라서 decoder query를 선택할 때 단순히 class confidence만 봐도, 해당 embedding이 class와 box 모두 잘 예측하는 token일 가능성이 높아진다.
이 두 가지 개선을 통해 모델은 DETR류의 구조적 장점을 유지하면서도 속도를 올리고 정확도까지 개선하는 데 성공한다.
먼저 첫 번째 방법론의 세부 구조를 살펴보자. 아래 그림을 보면, 가장 high-level feature map인 S5에서만 self-attention을 수행한다는 점을 확인할 수 있다. 또한 이 self-attention은 단 1개의 transformer layer로 구성되어 있어, 의미 있는 semantic reasoning을 수행하면서도 속도 측면에서 큰 이점을 얻는다.

그 다음 단계에서는 CCFF 모듈을 통해 multi-scale feature fusion을 수행한다. CCFF의 전체 구조는 PANet과 매우 유사한데,
- 먼저 top-down 과정(그림의 빨간 경로)을 수행하고,
- 이후 bottom-up augmentation 과정(그림의 파란 경로)을 추가로 지나간다.
이 두 경로를 통해 각 scale의 feature가 상호 보완적으로 정보를 교환하는 구조를 갖는다.
다만 adjacent feature map을 fusion하는 방식은 PANet과 다르다. PANet이 단순 summation 기반의 fusion을 사용했다면, 여기서는 custom fusion block을 사용하여 더 정교한 feature 통합을 수행한다. 이 fusion block을 구성하는 두 경로의 특징은 다음과 같다.
- 상단 경로(top path): 한 픽셀이 자기 자신에만 집중하는 경로로, multi-scale 정보를 pixel-wise하게 정제한다.
- 하단 경로(bottom path): 3×3 convolution이 포함된 RepBlock을 거치며 이웃 픽셀들과도 정보를 공유해 local context를 반영한 multi-scale feature 가공이 이루어진다.

다음으로 두 번째 방법론의 세부 구조를 살펴보자. 기존의 CE 기반 class loss를 밑과 같은 loss로 교체하면 된다. c는 IOU(gt, prediction)을 의미한다. 수식을 보면, IOU가 높은 query에 loss를 강하게 걸어주는 것을 알 수 있다.

Experiments

위의 표를 보면 RT-DETR이 speed와 accuracy모두 다른 모델들에 비해 우수한 것을 알 수 있다.
Comment
코드까지 뜯느라 읽는데 너무 힘들었지만, 방법론 자체는 많은 걸 배울 수 있었던 좋은 논문인 것 같다. 단, 그저 1 layer transformer에 불과한 것을 AIFI(Intra-scale Feature Interaction)으로 네이밍 하는 것은 좀 그랬다. 끝!