Baidu의 RT-DETR: 비전 Transformer 기반 실시간 객체 검출기#
개요#
Baidu가 개발한 RT-DETR(Real-Time Detection Transformer)은 높은 정확도를 유지하면서 실시간 성능을 제공하는 최첨단 엔드투엔드 객체 검출기입니다. 이 모델은 NMS가 필요 없는 프레임워크인 DETR의 개념을 기반으로 하며, 동시에 컨볼루션 기반 백본과 효율적인 하이브리드 인코더를 도입하여 실시간 속도를 달성합니다. RT-DETR은 스케일 내 상호작용과 스케일 간 융합을 분리하여 다중 스케일 특징을 효율적으로 처리합니다. 이 모델은 재학습 없이 다양한 디코더 계층을 사용하여 추론 속도를 유연하게 조절할 수 있어 적응성이 매우 뛰어납니다. RT-DETR은 TensorRT가 적용된 CUDA와 같은 가속 백엔드에서 탁월한 성능을 발휘하며, 다른 많은 실시간 객체 검출기보다 뛰어난 성능을 보여줍니다.
Watch: How to Use Baidu's RT-DETR for Object Detection | Inference and Benchmarking with Ultralytics 🚀
Baidu RT-DETR 개요. RT-DETR 모델 아키텍처 다이어그램은 백본의 마지막 세 단계인 {S3, S4, S5}를 인코더의 입력으로 보여줍니다. 효율적인 하이브리드 인코더는 스케일 내 특징 상호작용(AIFI)과 스케일 간 특징 융합 모듈(CCFM)을 통해 다중 스케일 특징을 이미지 특징 시퀀스로 변환합니다. IoU 인식 쿼리 선택은 디코더의 초기 객체 쿼리로 사용할 고정된 수의 이미지 특징을 선택하는 데 사용됩니다. 마지막으로, 보조 예측 헤드가 있는 디코더가 객체 쿼리를 반복적으로 최적화하여 박스 및 신뢰도 점수를 생성합니다(출처).
주요 특징#
- 효율적인 하이브리드 인코더: Baidu의 RT-DETR은 스케일 내 상호작용과 스케일 간 융합을 분리하여 다중 스케일 특징을 처리하는 효율적인 하이브리드 인코더를 사용합니다. 이 독창적인 비전 Transformer 기반 디자인은 연산 비용을 줄이고 실시간 객체 검출을 가능하게 합니다.
- IoU 인식 쿼리 선택: Baidu의 RT-DETR은 IoU 인식 쿼리 선택을 활용하여 객체 쿼리 초기화를 개선합니다. 이를 통해 모델이 장면 내에서 가장 관련성이 높은 객체에 집중할 수 있어 탐지 정확도가 향상됩니다.
- 적응형 추론 속도: Baidu의 RT-DETR은 재학습 없이 서로 다른 디코더 레이어를 사용하여 추론 속도를 유연하게 조정할 수 있습니다. 이러한 적응성은 다양한 실시간 객체 탐지 시나리오에서의 실제 적용을 용이하게 합니다.
- NMS 프리 프레임워크: DETR을 기반으로 하는 RT-DETR은 비최대 suppression 후처리를 제거하여 검출 파이프라인을 단순화하고 효율성을 잠재적으로 향상시킵니다.
- 앵커 프리 검출: 앵커 프리 검출기인 RT-DETR은 검출 프로세스를 단순화하고 다양한 데이터셋에 걸쳐 일반화 성능을 향상시킬 수 있습니다.
사전 학습된 모델#
Ultralytics Python API는 다양한 스케일의 사전 학습된 PaddlePaddle RT-DETR 모델을 제공합니다:
- RT-DETR-L: COCO val2017에서 53.0% AP, T4 GPU에서 114 FPS
- RT-DETR-X: COCO val2017에서 54.8% AP, T4 GPU에서 74 FPS
또한, Baidu는 2024년 7월에 향상된 성능 지표를 갖춘 RTDETRv2를 출시하여 기존 아키텍처를 더욱 개선했습니다.
사용 예제#
이 예제는 간단한 RT-DETR 학습 및 추론 예제를 제공합니다. 이들 및 기타 모드에 대한 전체 문서는 예측, 학습, 검증 및 내보내기 문서 페이지를 참조하세요. 모델은 Ultralytics 플랫폼을 통해 클라우드 GPU에서 학습할 수도 있습니다.
from ultralytics import RTDETR
# Load a COCO-pretrained RT-DETR-l model
model = RTDETR("rtdetr-l.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the RT-DETR-l model on the 'bus.jpg' image
results = model("path/to/bus.jpg")PyTorch 2.0 이상 버전과 CUDA 환경에서 RT-DETR을 학습할 때 deterministic=False을 설정하십시오. 이 모델의 변형 어텐션(deformable attention)은 결정론적 CUDA 백워드가 없는 F.grid_sample을 사용하므로, deterministic=True를 설정해도 실행을 재현 가능하게 만들 수 없으며 학습 처리량을 저하시킬 수 있습니다. seed은 가중치 초기화, 데이터 순서 및 증강 샘플링을 계속해서 제어합니다.
RT-DETR 사전 학습 가중치는 재학습 없이 지연 시간을 줄이기 위해 두 가지 추론 시간 설정을 지원합니다:
eval_idx: 조기 디코딩 중지. 기본 6계층 디코더의 경우 0부터 시작하는 인덱스(0~5)를 사용합니다.eval_idx=5은 모든 계층을 사용하고,eval_idx=3는 4개의 계층을 사용합니다. TensorRT v10.11이 탑재된 T4 GPU에서 RT-DETR-L은 4개 계층을 사용할 때 8.0 ms / 52.7 mAP에서 7.4 ms / 52.5 mAP로 성능이 향상됩니다.num_queries: 객체 쿼리 수 줄이기(기본값: 300). 동일한 설정에서 COCO 기준 100개로 줄이면 7.4 ms / 51.7 mAP에 도달할 수 있습니다. 이미지당 객체 수가 적은 데이터셋에서는 mAP 하락 폭이 일반적으로 더 작지만, 이미지당 예상되는 최대 객체 수보다 높은 값을 유지하세요.
두 설정 모두 mAP를 낮출 수 있으므로 배포 전에 데이터셋에서 트레이드오프를 검증하십시오.
from ultralytics import RTDETR
rtdetr = RTDETR("rtdetr-l.pt")
head = rtdetr.model.model[-1]
# Choose one or both settings after validating the speed/accuracy trade-off.
head.decoder.eval_idx = 3 # Use 4 of 6 decoder layers.
head.num_queries = 100 # Use fewer object queries.
results = rtdetr("path/to/image.jpg")
# Export uses the same decoder and query settings, including TensorRT exports.
rtdetr.export(format="engine", device=0, quantize=16)지원되는 작업 및 모드#
이 표는 모델 유형, 특정 사전 학습된 가중치, 각 모델이 지원하는 작업, 그리고 ✅ 이모지로 표시된 지원되는 다양한 모드(학습 , 검증, 예측, 내보내기)를 보여줍니다.
| 모델 유형 | 사전 학습된 가중치 | 지원되는 작업 | 학습 | 검증 | 추론 | 내보내기(Export) |
|---|---|---|---|---|---|---|
| RT-DETR Large | rtdetr-l.pt | 객체 탐지 | ✅ | ✅ | ✅ | ✅ |
| RT-DETR Extra-Large | rtdetr-x.pt | 객체 탐지 | ✅ | ✅ | ✅ | ✅ |
rtdetr-resnet50.yaml 및 rtdetr-resnet101.yaml은 YAML 아키텍처로만 제공됩니다. Ultralytics는 rtdetr-l 및 rtdetr-x에 대해서만 사전 학습된 가중치를 배포합니다. YAML에서 ResNet 변형을 인스턴스화하고(예: RTDETR("rtdetr-resnet50.yaml")) 필요에 따라 학습시키거나 파인튜닝하세요.
이상적인 사용 사례#
RT-DETR은 특히 높은 정확도와 실시간 성능이 모두 요구되는 애플리케이션에 매우 적합합니다:
- 자율 주행: 속도와 정확성이 모두 중요한 자율 주행 시스템에서 안정적인 환경 인식을 위해 사용됩니다. 자율 주행차의 AI에 대해 알아보기.
- 고급 로보틱스: 로봇이 동적 환경에서 정확한 객체 인식 및 상호작용이 필요한 복잡한 작업을 수행할 수 있도록 지원합니다. 로보틱스에서 AI의 역할 살펴보기.
- 의료 영상: 진단에 객체 검출의 정밀도가 결정적일 수 있는 헬스케어 응용 프로그램에 사용됩니다. 헬스케어에서의 AI 알아보기.
- 감시 시스템: 높은 검출 정확도로 실시간 모니터링이 필요한 보안 응용 프로그램에 사용됩니다. 보안 경보 시스템에 대해 알아보기.
- 위성 이미지 분석: 전역 컨텍스트 이해가 중요한 고해상도 이미지의 상세 분석에 사용됩니다. 위성 이미지의 컴퓨터 비전에 대해 읽어보기.
인용 및 감사의 글#
연구 또는 개발 작업에서 Baidu의 RT-DETR을 사용하는 경우 원본 논문을 인용해 주세요:
@misc{lv2023detrs,
title={DETRs Beat YOLOs on Real-time Object Detection},
author={Wenyu Lv and Shangliang Xu and Yian Zhao and Guanzhong Wang and Jinman Wei and Cheng Cui and Yuning Du and Qingqing Dang and Yi Liu},
year={2023},
eprint={2304.08069},
archivePrefix={arXiv},
primaryClass={cs.CV}
}RTDETRv2의 경우 2024년 논문을 인용할 수 있습니다:
@misc{lv2024rtdetrv2,
title={RTDETRv2: All-in-One Detection Transformer Beats YOLO and DINO},
author={Wenyu Lv and Yian Zhao and Qinyao Chang and Kui Huang and Guanzhong Wang and Yi Liu},
year={2024},
eprint={2407.17140},
archivePrefix={arXiv},
primaryClass={cs.CV}
}컴퓨터 비전 커뮤니티를 위해 이 귀중한 리소스를 만들고 유지 관리해 준 Baidu와 PaddlePaddle 팀에 감사를 표합니다. 비전 Transformer 기반의 실시간 객체 검출기인 RT-DETR 개발을 통해 해당 분야에 기여한 바에 깊이 감사드립니다.
FAQ#
Baidu의 RT-DETR(Real-Time Detection Transformer)은 비전 Transformer 아키텍처를 기반으로 구축된 고급 실시간 객체 검출기입니다. 효율적인 하이브리드 인코더를 통해 스케일 내 상호작용과 스케일 간 융합을 분리하여 다중 스케일 특징을 효율적으로 처리합니다. IoU 인식 쿼리 선택을 채택하여 모델이 가장 관련성이 높은 객체에 집중하도록 함으로써 검출 정확도를 향상시킵니다. 재학습 없이 디코더 계층을 조정하여 달성하는 적응형 추론 속도 덕분에 RT-DETR은 다양한 실시간 객체 검출 시나리오에 적합합니다. RT-DETR Arxiv 논문에서 RT-DETR 기능에 대해 자세히 알아보세요.
Ultralytics Python API를 활용하여 사전 학습된 PaddlePaddle RT-DETR 모델을 사용할 수 있습니다. 예를 들어, COCO val2017에서 사전 학습된 RT-DETR-l 모델을 로드하고 T4 GPU에서 높은 FPS를 달성하려면 다음 예제를 사용할 수 있습니다:
예시from ultralytics import RTDETR # Load a COCO-pretrained RT-DETR-l model model = RTDETR("rtdetr-l.pt") # Display model information (optional) model.info() # Train the model on the COCO8 example dataset for 100 epochs results = model.train(data="coco8.yaml", epochs=100, imgsz=640) # Run inference with the RT-DETR-l model on the 'bus.jpg' image results = model("path/to/bus.jpg")Baidu의 RT-DETR은 효율적인 하이브리드 인코더와 IoU 인식 쿼리 선택 기능 덕분에 높은 정확도를 유지하면서 연산 비용을 대폭 줄여줍니다. 재학습 없이 다양한 디코더 계층을 사용하여 추론 속도를 조절할 수 있는 독보적인 기능은 뛰어난 유연성을 제공합니다. 이는 TensorRT가 탑재된 CUDA와 같은 가속 백엔드에서 실시간 성능이 요구되는 응용 프로그램에 특히 유리하며, 다른 많은 실시간 객체 검출기들을 압도합니다. 또한 transformer 아키텍처는 전통적인 CNN 기반 검출기에 비해 더 나은 전역 컨텍스트 이해도를 제공합니다.
Baidu의 RT-DETR은 재학습을 요구하지 않고 다양한 디코더 계층을 사용하여 추론 속도를 유연하게 조절할 수 있습니다. 이러한 적응성은 다양한 실시간 객체 검출 작업에서 성능을 확장하는 데 매우 중요합니다. 낮은 정확도 요구사항을 위해 더 빠른 처리가 필요하든, 더 느리지만 정확한 검출이 필요하든, RT-DETR은 특정 요구사항에 맞게 맞춤화할 수 있습니다. 이 기능은 연산 기능이 다른 다양한 장치에 모델을 배포할 때 특히 유용합니다.
아니요. RT-DETR의 경우
max_det은 추론 후 반환되는 예측의 상한선을 설정할 뿐, 디코더가 생성하는 객체 쿼리 수를 늘리지는 않습니다. Ultralytics RT-DETR 사전 학습된 체크포인트는 300개의 객체 쿼리를 사용하므로,max_det을 더 큰 값으로 설정하더라도 이미지당 300개를 초과하는 검출 결과를 반환할 수 없습니다.신뢰도가 높은 예측을 적게만 반환받고 싶을 때는
max_det을 사용하여 반환되는 검출 수를 줄이세요(예:max_det=100). 데이터셋에 이미지당 300개 이상의 객체가 포함될 수 있는 경우, 모델 YAML에서 더 높은 디코더 쿼리 수(nq)로 커스텀 RT-DETR 모델을 학습시키세요. 학습 후 사전 학습된 체크포인트에서 이 값을 변경하는 것은 동등하지 않으며 추가 쿼리를 학습하기 위해 재학습이 필요합니다.