안녕하세요. 실수로 집에 아이패드를 두고 오는 바람에, 리뷰 작성이 조금 늦어졌습니다.
지난 주 10번째 버전의 Yolo-v10을 리뷰 했었습니다. 해당 리뷰를 읽으셨다면 실험 파트에서 비교군으로 삼던 RT-DETR을 보셨을텐데, 해당 논문이 CVPR 2024에 등재된 것을 보아 이번에는 해당 논문을 리뷰해보고자 합니다. 또한 이번 논문 작성의 실험에서 NMS-Free 방법에 대해 적용을 할 지에 대해 고민 중에 있는데, 그런 연유에도 본 논문을 읽어보고자 하였습니다. 본 논문의 저자는 이전의 DETR이 Detection 분야에서 새로운 시야를 제공하였지만, Yolo에 비해서는 일정 수준 느리다는 단점이 존재함을 극복하고자 하였으며, 기존 Yolo 모델이 모델의 실행 시간 (Latency)을 기반으로 본인들의 모델이 빠르다고 하나, 이보다는 NMS를 포함한 새로운 실행 시간을 측정하는 벤치마킹을 보입니다. 물론 Yolo, DETR은 누군가에게는 2D Object Detection의 고전적인 방법론으로 와 닿을 수는 있으나, 이 또한 이미 다양한 태스크로 넓게 사용됨을 생각하였을 때 해당 방법이 사학이지는 않음을 알아야 합니다. 그럼, 리뷰 시작하겠습니다.
Introduction
Real-time Object detection의 기준에서는 CNN 기반의 Yolo가 대표적으로 이야기됩니다. 하지만, 해당 Detector는 NMS 후처리 과정이 필요하기에 추론 속도가 다소 저하되는 면이 있으며 그보다도 NMS의 하이퍼파라미터 (NMS 시의 Threshold, NMS 처리 이전, 이후의 Anchor 수 등)에 굉장히 민감하게 반응하여 실제 모델 배포를 고려 시에는 다양한 환경, 장면에서 최적의 하이퍼파라미터가 상이할 수 있으므로 취약점을 보입니다.
Yolo와 대적되는 주류 Detector로 DETR이 있습니다. DETR은 Encoder-Decoder 구조의 NMS-Free 방법으로 학계의 관심을 받아왔으며 Object Detection을 활용하는 다양한 분야에서도 함께 활용되어 유망한 방법론으로 사용됩니다. 그러나, Encoder-Decoder 구조에서 발생하는 Computational cost가 Real-time Object Detector로의 실용성이 떨어진다는 단점이 존재합니다. 저자는 해당 점이 주목하여 Real-time 상황에 활용하고자 변형점을 설계하였으며 Speed와 Accuracy에서 이전 Yolo (Yolo-v8)을 모두 앞서게 됩니다. 우선 Computational redundancy를 고려하였을 때, Multi-scale feature가 분명 학습 시 안정적인 수렴을 위해 이점이 있으나 Encoder의 입력이 되는 Sequence feed에서의 입력 길이가 증가하는 단점이 존재함을 확인합니다. Multi-scale feature 간의 Interaction은 Transformer encoder의 높은 Computational cost을 초래하게 되며, 그러므로 Encoder를 재 구성해야할 필요가 있습니다.
Computational 외 성능 향상을 위해 최근의 DETR 기반의 연구들에서는 Object query의 최적화하기 힘든 문제로 인해 DETR의 성능이 저하된다는 근거 아래, 이를 위해 Vanilla learning embedding을 대체하는 Query selection 구성을 제안합니다. 자세히는 기존의 구성에서는 Encoder를 거친 Feature들이 Object query가 되는 데에 비해, 이 중 특정 몇몇만을 선별하여 레이어를 거친 이후, Decoder의 Query가 되는, 곧즉 유효한 Feature를 미리 선별한 후 Decoder를 거쳐 고품질의 Query로 가공하고자 합니다. 하지만 이는 필연적으로 Encoder의 feature가 classification score만으로 선별되기 때문에, localization에 대해서는 고려되지 않으며 uncertainty가 높아지게 됩니다. 저자는 이 점을 들어, Query의 초기화를 성능 향상의 타개점으로 잡아 새로운 방법을 제안합니다.
추후 언급되겠지만 저자의 방법론을 Real-Time DEtection TRansformer (RT-DETR)로 불리며, 첫 번째의 Real-time End-to-End Object Detector로 선언합니다. Multi-scale feature의 이점을 가져가며 동시에 빠르게 처리하기 위해, 기존의 vanilla Transformer encoder를 대체하는 hybrid encoder를 디자인하며 해당 encoder는 intra-scale interaction을 분리하고 cross-scale fusion 구조를 통해 inference speed를 눈에 띄게 향상시킬 수 있습니다. 또한 기존의 Object query에 대해 low localization으로 인한 성능 발전의 아쉬움을 극복하고자 uncertainty를 최적화하는 query 초기화 방법을 제안합니다.
Method
Analysis of NMS
NMS의 효용성과 반대로 Computational cost에 대해선 워낙 잘 알고 있으실테니 이에 대한 설명은 생각하도록 하겠습니다. NMS에서는 Confidence threshold (Positive/Negative sample을 구분하기 위한)와 IoU threshold (GT와 IoU를 판단하기 위한) 두 종류가 존재하는데, 이 변수들이 결국 환경/장면에 따라 최적의 실수가 달라지다보니 모델 배포에는 적합하지 않습니다. 저자는 다시 한번 NMS의 실행 시간이 bounding box의 수와 threshold에 의존적임을 확인하고자 Yolo-v5 (anchor-based)와 Yolo-v8 (anchor-free)에 대해 실험적으로 증명합니다. 우선 처음으로 사용되는 confidence threshold에 따라 filtering된 이후 남은 bbox의 개수입니다. 다음 Figure 2를 보면, Confidence threshold (X축)에 따른 Number of boxes (Y축)을 볼 수 있으며, 0.001에서 0.25까지 threshold가 높아짐에 따라 더 많은 prediction box가 filtering되며, 이는 곧 NMS를 위한 bounding box의 수가 적어짐과 같으니 NMS의 실행 시간이 줄어듦을 의미합니다.
그에 따른 성능 비교를 확인 시 (COCO val2017) confidence threshold가 감소하거나 또는 IoU threshold가 증가함에 따라 NMS의 실행시간이 증가함을 확인할 수 있습니다. 그 이유야 우리가 잘 아는 바와 같이 높은 confidence threshold는 앞서 말한 바와 같이 더 많은 prediction box를 filtering하며, 반면 높은 IoU threshold는 더 적은 prediction box를 filtering합니다. 이는 다시 각 Threshold가 성능에도 영향을 미치게 되며, 특히 Confidence threshold에 따라 최대 1.7%의 성능 차이 및 약 2배의 NMS 실행 시간 증가를 보입니다. AP 측면에서 Confidence threshold가 0.001, IoU threshold가 0.7일 때 최고 성능을 보이지만, NMS 실행 시간이 가장 높음을 알 수 있습니다. 하지만 Yolo는 model speed를 리포팅하며 NMS 실행 시간을 제외하므로 저자는 end-to-end speed를 고려한 benchmark가 필요함을 말합니다.
End-to-end Speed Benchmark
앞서 말한 바와 같이, 저자는 fair comparison을 위해서는 end-to-end speed에 대한 benchmark를 설립해야 함을 언급합니다. 즉, Yolo Detector에서 NMS의 실행 시간을 고려하여야 한다는 점이죠. Benchmark dataset으로는 COCO dataset을 활용합니다. 비교군 Yolo로는 Anchor-based의 Yolo-v5와 v7, 그리고 Anchor-free의 PP-YoloE, Yolo-v6와 Yolo-v8을 비교합니다. 실험표를 보아 Anchor-based에 비해 Anchor-free 기반의 Yolo Detector가 NMS 시간이 더 적게 소요될 뿐만 아니라, 성능 또한 더 뛰어남을 확인하였습니다. 이는 다시 말하여 Anchor-based 방법론이 Prediction bounding box가 Anchor-free에 비해 최종적으로 세 배 이상 많으며, 그로 인해 NMS 소요 시간과 정확도에서 모두 좋지 않은 성능을 보임을 의미합니다. 해당 표는 Benchmark 표인 만큼 본 논문에서 가장 핵심이 되는 표이니, 짚고 넘어가자면 FPS에 대해 DINO-Deformable-DETR의 FPS 수준이 5로 나오는 반면 (이전 DETR 방법론들은 모두 FPS를 리포팅하지 않아 비워두지 않았나 싶습니다), 본 논문은 앞으로 제안할 방법론으로 무려 이전의 21배 이상의, PPYOLOE-L의 94 FPS와 견주어도 더 빠른 추론 속도를 보이며, 학습 수렴이 빠르고, 성능 또한 모든 평가 지표 (AP@IoU)에서 월등히 뛰어남을 확인합니다.
The Real-time DETR
Efficient Hybrid Encoder
Computational bottleneck analysis
Multi-scale feature가 학습 수렴 속도를 빠르게 함과 동시에 성능 향상에 핵심적임을 언급하였는데 (쉽게 생각해서 FPN), Deformable DETR 구조에서 Deformable 방식이 computational cost를 줄이긴 하지만, Multi-scale feature map으로 부터 기인하는 computational bottleneck을 막기에는 역부족입니다. 이전 연구에 따르면, Multi-scale feature map을 활용하는 Deformable DETR 구조에서 encoder는 GFLOPs 49%가 늘어나지만 성능 향상은 11%에 그친다고 합니다. 해당 bottleneck을 극복하고자 저자는 우선 Multi-scale Transformer encoder에 존재하는 computational redundancy를 분석합니다. 본 논문도, 그리고 Yolo-v10과 그 유사한 논문들도 그렇듯 최근에는 이전 연구의 방법론을 분석하며 문제점을 찾고 이를 극복하는 새로운 모듈을 제안하는 방향의, 시초적인 논문 접근법이 우세해보입니다.
저자는 앞서 언급한 바와 같이 Object에 대한 풍부한 표현력을 가지는 High-level feature가 Multi-scale feature map (PANet)의 Low-level feature map에서 추출되기 때문에, Multi-scale feature map에 대한 feature interaction을 수해ㅔㅇ함이 곧 Computational redundant를 만든다는 것을 증명하고자 Intra-scale 및 Cross-scale fusion 다양한 유형의 Encoder를 갖춘 Variants를 설계합니다.
A는 DINO-Deformable-R(esNet50)의 Transformer Encoder 구성. A->B의 Variant B는 A에 Single-scale Transformer encoder를 넣으며, encoder는 Transformer block 하나로 구성됩니다. Multi-scale features는 intra-scale feature interaction을 위해 encoder를 공유한 이후 concat되어 결과를 뱉습니다. B->C의 Variant C는 B에 cross-scale feature fusion을 도입하며, Multi-scale Transformer encoder로 concat된 feature를 사용하며, 이와 동시에 Intra-scale, cross-scale feature interaction을 수행합니다. 여기까지 보면 결국 A->B->C로 가면서 Transformer encoder에 어떻게 feature를 태울지, 각 feature interaction을 어떤 방식으로 수행할지를 정합니다. C->D의 Variant D는 intra-scale interaction에서는 single-scale Transformer block을, cross-scale fusion에서는 PANet(Path Aggregation Network, FPN과 유사한 구성)-style structure를 사용하여 encoder를 decoupling합니다. D->E의 Variant E는 저자가 설계한 Variant로, intra-scale interaction과 cross-scale fusion을 Variant D 기반으로 하여 저자가 설계한 efficient hybrid encoder를 추가합니다. AIFI와 CCFF, 뒤에서 살펴봅시다. 다음의 Table 3에서 볼 수 있는 바와 같이, AP는 미세하게 높아지는 바에 비해 A에서 D로 갈수록 Latency가 매우 높아짐을 보입니다.
Hybrid design
저자는 Encoder의 구조에 따라 AP가 증가함은 분명하지만 Latency가 높아짐을 지적하며 이를 극복하고자 Encoder에 대해 재고합니다. 우선 Attention-based Intra-scale Feature Interaction (AIFI), 그리고 CNN-based Cross-scale Feature Fusion (CCFF)를 설계하여 encoder에서의 Latency를 줄임과 동시에 효과적인 Multi-scale feature interaction을 구성합니다. 자세히는 AIFI는 S_5 의 최종 feature에 대해서만 single-scale transformer encoder를 거치도록 구성됩니다. 이는 High-level feature가 low-level feature에 대해 풍부한 semantic representation을 가지고 있으며 이들이 객체에 대한 recognition과 localization에 실질적으로 더 도움이 된다고 판단하였습니다. 오히려, low-level feature에서 transformer encoder를 거치면 semantic concept이 부족하여 high-level feature의 interaction에 혼동을 주게 되며, computational cost만 잡아먹는다는 점입니다. 이는 위 Table 3의 D_{S_5} 에서 실험을 통해 35% 더 빠르며 오히려 AP는 0.4% (Variant D 대비) 향상된, 실험을 통해 증명됩니다.
CCFF는 최적화 기반의 cross-scale fusion module로, 자세히는 fusion path 내 여러 convolutional layer로 구성된 fusion block을 삽입했습니다. 자세히는 아래의 그림과 같이, 별 대단하지는 않지만 처음 입력 c로 표현된 feature (예: f_1, f_2 )에 대해 1×1 convolution block을 통해 channel을 조정한 후, 하나의 feature에 대해 RepBlock (Re-parameterization block: training 시에는 3×3 conv와 1xs1 conv를 residual 구성으로 forwarding하나, inference 시에는 1×1 conv만 사용됨)을 통해 인접한 feature map끼리의 fusion을 진행합니다. 사실 대단한 구성은 아닙니다. RepBlock이라 표현되어있지만 예전 연구 (Repvgg: Making vgg-style convenets great again)에서 이미 사용되었었으며 저자는 해당 block으로 multi-scale feature fusion이라는 목적으로 사용했을 뿐입니다만, 이를 통해 기존의 computational bottleneck이였던 multi-scale feature map 활용을 효과적으로 이루어냈습니다.
Uncertainty-minimal Query Selection
object query를 최적화하는데 어려움을 겪는 기존의 DETR 모델의 구성을 극복하고자 이전 연구들에서는 confidence score로부터 encoder에서 Top k개의 feature를 선택하여 object query를 초기화합니다. 다시 말하면 전체가 아닌 Proposal 중 Top-k개만을 선택하여 object query를 구성하며 이는 최적화 (아무래도 Background에 해당할 Negative sample이 많으면 최적화에 어려우니)에 도움을 주었지만, Object detection 특성 상 Categorization 외 Localization이 중요한데 이를 함꼐 모델링하지 않는 것과 같다보니, Uncertainty를 늘려 Detector의 성능을 떨어트리게 됩니다.
저자는 위 고찰을 토대로 Query selection scheme을 변경하고자 Uncertainty를 최소화하는 구성을 제안하였으며 이 방식은 명시적으로 Encoder feature에 대해 latent variable을 함께 (recognition과 localization 동시에) 모델링하기 때문에 uncertainty를 구성하여 이를 loss로 최소화시킬 수 있으며 동시에 학습 시 최적화에 잘 수렴하는 결과를 보입니다. 구체적으로 feature의 uncertainty는 아래의 수식 3과 같이 모델링 되는데, uncertainty에 해당하는 \mathcal{U} 는 localization ( \mathcal{P} )과 classification ( \mathcal{C} )의 차이로 정의됩니다. localization에서 classification을 빼는 것이 uncertainty 자체로 보기에는 어렵다는 개인적인 의견이지만 어찌되었든 저자의 목적은 localization을 포함시키자가 우선적이지 않을까 싶네요. 이 uncertainty를 통해 아래 수식과 같은 loss를 구성하고, 예측과 실제 값에 대한 loss를 구성합니다.
이에 대한 분석으로, 저자는 IoU score와 Classification score의 threshold에 따른 feature 분포를 확인하였으며 scatter plot 결과 상 우측 상단에 가까울 수록 feature quality가 높아짐 (예측과 실제의 분포가 유사함을 간접적으로 의미함)을 의미하게 되는데, 이 때 보라색 점으로 보이는 Uncertainty-minimal 방식이 기존의 Vanilla 방식에 비해 더 많은 유효한 feature 분포를 보임을 확인하였습니다.
Scaled RT-DETR
이외에도 저자는 최신 모델들이 그러하듯, 다양한 장면에 대해 그리고 모델 배포 시 필요에 따라 활용할 수 있도록 여러 scale의 모델을 제공하고자 하는데 (이를 flexible scaling이라고 합니다), 구체적으로는 hybrid encoder의 width는 embedding된 feature의 채널 수를 조절하며 depth는 trasnformer layer block의 수, Repblock의 수를 통해 조절합니다. decoder의 width는 object query의 수, depth는 decoder layer의 수로, 즉 쉽게 말해 저자가 설계한 hybrid encoder, 이후 decoder에서 몇몇 요소들을 더 얕거나 깊게 설계함이 곧즉 모델 구성을 유연하게 만들어준다는 것을 의미합니다.
특히, 다음 표에 확인되는 바와 같이 최종 decoder layer를 줄임이 accuracy에 미치는 영향은 미비하지만 추론 속도 (Latency)를 줄이는 데 큰 기여를 한다는 점을 발견하였습니다.
이렇게하고 실험 파트를 읽으려하니, 위에서 보여준 Table이 전체 다입니다. 하나 더 있자면 Uncertainty-minimal 방식이 AP에 도움이되며 Prop으로 표현된 얼마나 classification score와 classification + localization (both) score가 영향을 미치는데에 관한 표이나, 이는 한 번쯤만 보고 넘어가면 될듯합니다. 해당 저자가 주로 Method를 실험을 통해 증명하다보니, Method를 보며 실험을 읽으니 논문 한 편이 마무리 되었습니다. 음, 제 생각에는 해당 논문이 벌써 Citation이 200회가 넘은 것으로 확인하였는데, 물론 arXiv에 2023년 등록되었지만 본 논문의 성능과 추론 속도를 뛰어넘는 Yolo-v10이 경쟁자로써 벌써 나온만큼, 당장은 코딩의 싸움인듯 느껴집니다. 금일 리뷰는 여기서 마치겠습니다.
리뷰 잘 읽었습니다.
DETR 이후 등장한 top-k object query 초기화 기반 방법론들에서 localization 정보들에 대한 모델링을 하지 않았고, 이를 해결하고자 localization 정보를 반영하여 uncertainty 를 모델링하여 이를 최소화함과 동시에 top-k selection 방식은 유지하는것.인거죠?
그리고 제가 DETR 구조에 대해 정확히는 파악 못하고 있어서 드리는 질문일 수 있습니다,.,, 보통은 속도와 성능이 trade-off 관계인것이 정설인데, 실험 table에서 DINO-Deformable-DETR와 비교했을때 속도는 무려 21배 이상, 그리고 성능도 능가해버리는 결과를 보이고 있습니다.
본 논문에서 제안한 기법의 속도 향상은 그렇다 치고, 성능 향상은 어느 부분에서 비롯되었다고 생각하면 될까요?
감사합니다.
리뷰 읽어주셔서 감사합니다.
말씀하신 바와 같이 Top-k selection 방식은 여전히 많은 연구들에서 유지됩니다. 아무래도 모델의 신뢰성을 높여주기도 하며 학습/추론 시의 시간을 단축 시킬 수 있다는 장점도 존재합니다.
성능 향상은 리뷰 본문에 나와 있는 몇몇의 기법들을 통해 성능 향상이 이루어졌다고 봄이 옳지 않을까 생각합니다. 이에 대한 Ablation도 존재하구요?
안녕하세요 이상인 연구원님. object detection 관련 이해가 필요할때는 이상인 연구원님의 리뷰가 잘 정리되어있기에 찾아보는 편입니다. 좋은 리뷰 작성해주셔서 감사합니다.
yolov10이 얼마 전에 나왔다고 들었는데, DETR쪽도 계속 발전되고 있군요. 읽다보니 궁금한 점들이 있어 질문 드리겠습니다.
1. 제가 2d object detection의 최근 연구 현황을 잘 알지 못하는데, 해당 연구분야는 yolo와 같은 CNN 기반 모델의 성능이 transformer 기반 방법론들보다 성능이 크게 떨어지지 않아 보입니다. 학습 기간이나 수렴 속도, 추론 속도, 검출 정확도 등 고려할 상황이 많긴 하겠지만, 정확도나 추론 속도 등을 고려해서 어떤 모델이 더 자주 사용되나요? CNN기반 detctor들과 Transformer기반 detector들의 장단점에 대해 간단히 비교해서 알려주시면 감사하겠습니다.
2. 리뷰 초반에 yolov8이 anchor-free방법이라고 말씀해주셨는데, 그럼 후보 영역을 사용하지 않는건지, 사용한다면 후보 영역을 어떻게 만드는지 궁금합니다.
3. object detector의 제안에 있어서 FPS는 중요한 지표 중 하나라고 생각되는데, 이전 DETR계열 논문들에서는 FPS를 리포팅하지 않았다는 점이 눈에 띕니다. 혹시 그 이유가 있나요?(측정하기 어렵다거나, 너무 느렸다거나..)
감사합니다!
리뷰 읽어주셔서 감사합니다.
1. 사실, 저도 2d object detection에 국한된 논문을 모두 팔로하지는 않아 최신 동향이 정확히 어찌 되는지는 말씀드리기 어렵지만, 그래도 몇 논문들을 보았을 때 요즘은 Real-Time을 위한 갈래로 뻗어나가는 느낌입니다. Yolo와 같은 CNN 기반 모델의 성능이 Transformer 기반 방법론들보다 성능이 크게 떨어지지는 않는다는 것은 정확히는 옳지 않으며, Yolo에서도 Feature map에 대한 Self-attention 등을 수행합니다. 아마 말씀해주신 바가 ViT 백본을 사용하느냐 마냐의 차이인 것으로 보이는데, 보통 요즘은 ViT 백본 자체를 사용함이 Contribution이 되기는 어려워보입니다. 정확도, 추론 속도 등을 고려해서 Yolo, DETR 모두 연구의 갈래가 진행중이라고 알아주시면 감사합니다.
2. Anchor-free 기반 방법론은 가장 대표적인 시작이 FCOS (Fully Convolutional On-Stage Object Detection)이 있는데요, 본 논문에서는 모든 픽셀에 대해 Bounding Box에 대한 픽셀이 물체가 포함되는지에 따른 Classification과 더해, 각 픽셀에서부터 Bounding Box의 경계를 추론하기 위한 LRTB (Left, Right, Top, Bottom를 예측하도록 수행합니다. 그 이후 논문들은 또 다른 갈래로 픽셀에 대해 객체의 중심점을 예측한다던지와 같은 방식들이 존재합니다.
3. 이전 모든 논문에서 DETR의 FPS를 아예 리포팅하지 않는 것은 아닙니다만, Object Detection도 여전히 성능만 놓고 보았을 때는 과연 Peak를 찍었다고 말하기는 어렵기에 성능을 위주로 Contribution을 제안하는 논문에서는 굳이 또 FPS가 만약 느리다면 이를 리포팅하지 않음이 유리하기 때문에 그렇지 않을까 생각합니다.
안녕하세요 ! 좋은 리뷰 감사합니다.
RepBlock이라함은 결국 Inference 시에만 효율적이기 위해 학습 시 복잡한 구성을 가지는 네트워크로 이해하면 될까요!??!?! 그 전 각각 1×1 convolution을 거치는 이유가 궁금합니다.
감사합니다.
리뷰 읽어주셔서 감사합니다.
네 RepBlock이라 함은 본문에 나와있듯 이전 연구에서 차용한 내용으로, 학습 시에는 3×3, 1×1의 convolution 등을 활용하지만 inference 시에는 속도 향상을 위해 3×3 convolution을 제외하는 등의 작업을 통합니다.
1×1 convolution을 거치는 이유는, 각 feature map의 채널을 동일하게 맞춰주기 위함입니다.