Wenyu Lv, Yian Zhao, Shangliang Xu, Jinman Wei, Guanzhong Wang, Cheng Cui, Yuning Du, Qingqing Dang, Yi Liu
Baidu Inc. "Detrs beat yolos on real-time object detection." CVPR 2024.
https://zhao-yian.github.io/RTDETR/
YOLO series는 speed와 accuracy 사이의 합리적인 trade-off로
real-time object detection을 위한 가장 인기있는 framework가 되었다.
그러나 우리는 YOLO의 speed와 accuracy가 NMS에 의해 부정적으로 영향을 받는 것을 관찰했다.
최근, end-to-end transformer-based detectors(DETRs)이 NMS를 제거하는 대안을 보였다.
그러나 high computational cost로 인해 실용성이 제한되고 NMS를 제외하는 장점을 완전히 활용하지 못하는 문제가 있다.
이 논문에서는 위 문제를 해결하기 위해 처음으로
real-time end-to-end object detector인, Real-Time DEtection TRansformer(RT-DETR)을 제안할 것이다.
RT-DETR은 두 단계로 구성되어 있다.
먼저 accuracy를 유지하면서 speed를 향상시키는 데 중점을 두고,
그 후 speed를 유지하면서 accuracy를 향상시킵니다.
구체적으로,
또한, RT-DETR은 retraining 없이 다양한 scenarios에 적응함으로써
decoder layer의 수를 조정하여 flexible speed tuning을 할 수 있다.
YOLO와 같은 CNN-based detector들은 일반적으로 post-processing을 위해 NMS가 필요함.
이는 inference speed를 늦출 뿐만 아니라 speed와 accuracy 모두에 instability를 유발하는 hyper-parameters를 도입함.
또한 scenario에 따라 recall과 accuracy에 서로 다른 강조가 필요하기 때문에
적절한 NMS threshold을 신중하게 선택해야 하며,
이는 real-time detector 개발을 방해하는 요소가 된다.
최근에는 end-to-end transformer-based detectors(DETRs)은
간소화된 architecture와 hand-crafted components 제거로 인해 학계에서 큰 관심을 받고 있다.
그러나 high computational cost로 인해 real-time detection 요구 사항을 충족시키지 못하며,
NMS가 없는 구조의 inference speed에서의 이점이 보이지 않음.
DETRs이 real-time을 달성하기 위해,
우리는 DETR에 대해 다시 고민하고 key components를 자세히 분석하여
unnecessary computational redundancy를 줄이고 accuracy를 더 향상시켰다.
전자(unnecessary computational redundancy를 줄이고)의 경우,
multi-scale features의 도입이 training convergence를 가속화하는 데 도움이 되지만([45]),
이는 encoder에 입력되는 sequence length를 상당히 증가시킴.
따라서 real-time DETR을 구현하기 위해서는 encoder를 redesign해야 한다.
후자(accuracy 향상)의 경우,
이전 연구들 [42, 44, 45]은 DETR의 성능을 저해하는 hard-to-optimize(최적화하기 어려운) object queries에 대해 설명하고,
vanilla learnable embedding을 encoder feature 교체하기 위한 query selection scheme을 제안한다.
그러나 우리는 현재의 query 선택이 classification score를 직접 선택에 사용하며,
feature의 quality를 결정하는 object의 category와 location을 동시에 modeling해야 하는 것을 무시한다는 사실을 관찰했다.
이로 인해, localization confidence가 낮은 encoder feature가 초기 queries로 선택되어
uncertainty 정도가 매우 높아지고 DETR의 성능을 저해한다.
그렇기 때문에 query initialization을 통해 성능을 더욱 향상시킬 수 있는 기회로 간주된다.
- 이 논문에서 우리는 처음으로 Real-Time DEtection TRansformer(RT-DETR)을 제안한다.
- multi-scale features를 빠르게 처리하기 위해,
우리는 vanilla transformer encoder를 대체하는efficient hybrid encoder
를 설계하여,
intra-scale interaction과 cross-scale fusion을 분리함으로써
inference speed를 향상시켰다.
- object query로 선택되는 encoder feature의 low localization confidence가 낮은 경우를 피하기 위해,
uncertainty-minimal query selection
을 제안했다.
이는 uncertainty를 명시적으로 optimizing하여
decoder에 high quality initial queries를 제공하여 accuraacy를 높임.
- 게다가 RT-DETR은 DETR의 multi-layer decoder architecture 덕분에
retraining 없이 다양한 real-time scenarios에 대응할 수 있는 flexible speed tuning을 지원함
efficient hybrid encoder
➡️ 속도 향상uncertainty-minimal query selection
➡️ 성능 향상
Carion et al.[4]은 DETR이라고 불리는 Transformer 기반의 end-to-end detector를 처음으로 소개했다.
그리고 그것의 독특한 특징으로 눈길을 끌었다.
특징적으로, DETR은 hand-crafted anchor와 NMS components를 제거했다.
대신에 bipartite matching과 one-to-one object set을 즉시 predict할 수 있다.
이러한 장점에도 불구하고 몇가지 문제들로 인해 고통을 받는다.
많은 DETR variants들은 이 문제를 해결할 수 있도록 제안해왔다.
Deformable-DETR은 multi-scale feature를 이용하여
attention mechanism의 효율성을 강화시킴으로써
training convergence를 가속화했다.
DAB-DETR과 DN-DETR은 iterative refinement scheme과 denoising training을 소개함으로써
performance를 향상시켰다.
Group-DETR은 group-wise one-to-many assignment를 소개함.
Efficient DETR과 Sparse DETR은 encoder와 decoder layer 또는 updated queries의 수를 줄임으로써
computational cost를 줄였다.
Lite DETR은 encoder의 효율성을 높이기 위해 low-level feature의 update frequency를 줄임으로써
efficiency를 향상시켰다.
Conditional DETR과 Anchor DETR은 queries의 optimization difficulty를 감소시켰다.
Zhu et al. [45]는 two-stage DETR을 위한 query selection을 제안했고,
DINO [44]는 better initialize queries를 위한 mixed query selection을 제안했다.
현재의 DETRs들은 여전히 computationally intensive하, real time을 위해 design되지 않았다.
우리의 RT-DETR은 computational cost reduction과 optimize query initialization,
SOTA real-time detector를 능가하는 것을 목표로 연구를 진행했다.
NMS는 overlapping output boxes를 제거하기 위해 object detection에서
널리 사용되는 post-processing algorithm이다.
NMS에는 두 개의 threshold가 필요.
구체적으로,
box가 갖는 score가 confidence threshold 이하이면 직접 filtered out되며,
어떤 두 상자의 IoU가 IoU threshold를 초과하면 lower score box가 discarded된다.
(정리하면,
우선 모든 box들에 대해서 해당 box가 얼만큼의 확신을 갖는지에 대한 confidence score를 confidence threshold로 filtering.
filtering된 후 남은 box들에 대해서 IoU threshold를 적용하여 한 번 더 filtering.
최종적으로 남은 box들에 대해서 NMS 적용.)
이 process는 모든 catecory의 box가 처리될 때까지 반복적으로 수행된다.
따라서 NMS의 execution time은 주로 box의 수와 두 threshold에 의해 결정된다.
➡️ 우리는 이를 관찰을 확인하기 위해 YOLOv5(anchor-based)와 YOLOv8(anchor-free)를 분석하였다.
우리는 먼저 같은 input에 대해 다른 confidence thresholds를 적용하여
filtering 후 남아있는 box의 수를 셌다.
우리는 sample value를 0.001부터 0.25까지의 값에서 confidence threshold를 sampling하여
두 detector의 남은 상자의 수를 세고 이를 bar graph에 ploting했다.
Figure 2는 NMS가 그 hyper-parameter에 민감함을 직관적으로 보여준다.
confidence threshold가 증가함에 따라 더 많은 prediction box들이 filtered out되고,
IoU를 계산해야 하는 남은 box의 수가 감소하므로 NMS의 실행 시간이 줄어듦.게다가 우리는 YOLOv8을 사용하여 COCO val2017에서의 accuracy를 평가하고
다양한 hyper-parameter에서 NMS operation의 execution time을 측정했다.
우리가 채택한 NMS operation은 TensorRT efficientNMSPlugin을 참고하여,
이는 EfficientNMSFilter, FadixSort, EfficientNMS 등의 여러 kernel을 포함한다.
여기서 우리는 EfficientNMS kerenl의 실행 시간만을 보고한다.
우리는 TensorRT FP16에서 T4 GPU에서 속도를 test하며, input 및 preprocessing은 일관되게 유지했다.
hyperparameter와 해당 결과는 Table 1.에 있다.결과에서 보듯이, EfficientNMS kernel의 실행 시간은 confidence threshold값이 감소하거나 IoU threshold값이 증가함에 따라 증가한다.
(Conf thr.를 높게 setting할수록 filtering 후 남은 box가 적기 때문에 NMS 시간이 감소되는 것은 알겠는데,
IoU thr.를 높게 setting할수록 NMS 시간이 왜 증가하지?
IoU thr.를 높게 setting하면, overlapping box들이 더 적어서 NMS 시간이 더 적게 걸려야 하지 않나?)
또한 appendix에서 다른 NMS threshold를 사용한 YOLOv8의 prediction을 시각화했는데,
결과에서 보듯이 부적절한 confidence threshold는 detector에 의해
많은 false positives(object가 아니지만 object라고 detection) or false negatives(object이지만 object가 아니라고 판별)를 만들어낸다.
일반적으로 YOLO detector는 model speed를 보고하고 NMS time은 제외하기 때문에,
최종적으로는 end-to-end speed benchmark
가 수립되어야 한다.
(내가 이해한 내용을 정리)
YOLO variants에 대해서 예전에는 NMS 시간을 고려하지 않았지만,
NMS 시간을 고려한 새로운 benchmarking에 대한 결과, 우리의 RT-DETR이 더 빠르고 성능이 좋다.
또한 anchor-free detector가 anchor-based detector보다 prediction box를 덜 만들어 내서
더 적은 NMS time이 걸리기 때문에 일반적으로 anchor-free detector의 속도가 더욱 빠르다.
그런데 기존의 DETR variants들은 NMS 과정이 없었는데도 속도가 빨라지는 장점을 살리지 못했다.
(뒤에 나올 내용)
그래서 우리는 DETR variants들의 encoder의 computational bottleneck 문제를
efficient hybrid encoder를 통해 효과적으로 줄여 Real-Time에 달성했다.
backbone
,an efficient hybrid encoder
,Transformer decoder with auxiliary prediction heads
RT-DETR의 overview는 Figure 4.에 있다.
- 우리는 encoder의
backbone
의 last three stages인
{}의 feature를 encoder에 입력한다.
The efficient hybrid encoder
는 multi-scale features({})를
intra-scale features interaction과 cross-scale feature fusion을 통해
image feature의 sequence로 변환한다. (Sec. 4.2)
이후, uncertainty-minimal query selection이 적용되어
일정 수의 encoder feature가 decoder의 initial object queries로 선택된다. (Sec 4.3)
마지막으로,decoder with auxiliary prediction heads
는
object queries를 반복적으로 optimize하여 categories와 boxes를 생성한다.
여전히
존재한다.efficient hybrid encoder
를 제안한다.efficient hybrid encoder
는 2개의 module로 이루어져 있다.우리는 hybrid encoder의 calculation을 다음과 같이 formulate했다.
(Efficient Hybrid Encoder 정리)
에 대해서만 Attention-based Intra-scale Feature Interaction (AIFI)를 적용함 ➡️
(, , )에 CNN-based Cross-scale Feature Fusion (CCFF)를 적용
code와 함께 보는 Efficient Hybrid Encoder
DETR에서 object queries를 optimize하는 어려움을 줄이기 위해서, 몇가지 후속 연구들이 있었다.
그 연구들은 모두 confidence score를 사용하여 encoder에서 top 개의 feature를 선택하여 object query를 initialize한다.
이 문제를 해결하기 위해,
우리는 uncertainty minimal query selection scheme을 제안하고,
이 방법은 명시적으로 encoder feature의 joint latent variable(결합 잠재 변수)를 modeling하기 위해
epistemic(지식의) uncertainty를 구성하고 optimize한다.
구체적으로,
feature uncertainty 는 Eq. (2).의 localization 와 classification 의 predicted distiribution의 차이로 정의된다.
(대체 왜 이렇게 정의를 했을까...? 이 식이 feature uncertainty를 대변할 수 있는 값이 어떻게 되는가?)Query의 uncertainty를 최소화하기 위해,
우리는 gradient-based optimization을 위한 loss function Eq.(3)에 uncertainty를 추가하였다.는 어떻게 계산한다는 건지?
(나중에 코드에서 자세히 살펴봐야 할듯)
real-time deteector는 일반적으로 다양한 scenarios를 수용하기 위해 다른 scale의 model을 제공하는데,
RT-DETR도 flexible scaling을 지원한다.
구체적으로,
hybrid encoder의 width는 embedding dimension과 channel 수를 조절하여 제어하고,
depth는 transformer layer 및 RepBlock의 수를 조절하여 제어한다. (RepBlock?)
decoder의 width와 depth는 object queries의 수와 decoder layer를 조절하여 제어한다.
또한 RT-DETR의 속도는 decoder layer의 수를 조절하여 유연하게 조절할 수 있다.
우리는 끝 부분의 몇 개의 decoder layer를 제거하는 것이 accuracy에 미치는 영향이 미미하지만
inference speed를 크게 향상시킨다는 것을 관찰했다.
우선 interaction은 정보 교환을 위한 연산이라고 생각하면 될 듯함.
예를 들어, encoder-decoder attention(=cross attention) 또는 fusion
single-scale Transformer encoder?
multi-scale Transformer encoder?
intra-scale feature interaction?
cross-scale feature fusion?