Ultralytics YOLO27:

Baidu의 RT-DETR: Vision Transformer 기반 실시간 객체 감지기#

개요#

Baidu가 개발한 실시간 감지 Transformer (RT-DETR)는 높은 정확도를 유지하면서 실시간 성능을 제공하는 최첨단 엔드투엔드 객체 감지기입니다. DETR(NMS가 필요 없는 프레임워크)의 아이디어를 기반으로 하며, 실시간 속도를 확보하기 위해 합성곱 기반 백본과 효율적인 하이브리드 인코더를 도입했습니다. 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 모델 아키텍처 개요 Baidu의 RT-DETR 개요. RT-DETR 모델 아키텍처 다이어그램은 백본의 마지막 세 단계 {S3, S4, S5}를 인코더의 입력으로 보여줍니다. 효율적인 하이브리드 인코더는 스케일 내 특징 상호작용(AIFI)과 스케일 간 특징 융합 모듈(CCFM)을 통해 멀티스케일 특징을 이미지 특징 시퀀스로 변환합니다. IoU 인식 쿼리 선택을 사용하여 고정된 수의 이미지 특징을 선택하고 이를 디코더의 초기 객체 쿼리로 사용합니다. 마지막으로 보조 예측 헤드가 있는 디코더는 객체 쿼리를 반복적으로 최적화하여 박스와 신뢰도 점수를 생성합니다(출처).

주요 기능#

  • 효율적인 하이브리드 인코더: Baidu의 RT-DETR은 스케일 내 상호작용과 스케일 간 융합을 분리하여 멀티스케일 특징을 처리하는 효율적인 하이브리드 인코더를 사용합니다. 이 독특한 Vision Transformer 기반 설계는 계산 비용을 줄이고 실시간 객체 감지를 가능하게 합니다.
  • IoU 인식 쿼리 선택: Baidu의 RT-DETR은 IoU 인식 쿼리 선택을 활용하여 객체 쿼리 초기화를 개선합니다. 이를 통해 모델이 장면에서 가장 관련성이 높은 객체에 집중할 수 있어 감지 정확도가 향상됩니다.
  • 적응형 추론 속도: Baidu의 RT-DETR은 재학습 없이 서로 다른 디코더 레이어를 사용하여 추론 속도를 유연하게 조정할 수 있습니다. 이러한 적응성은 다양한 실시간 객체 감지 시나리오에서 실용적인 적용을 지원합니다.
  • NMS가 필요 없는 프레임워크: RT-DETR은 DETR을 기반으로 하며 비최대 억제 후처리가 필요하지 않아 감지 파이프라인을 단순화하고 효율성을 높일 수 있습니다.
  • 앵커가 필요 없는 감지: 앵커가 필요 없는 감지기인 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 학습 및 추론 예제를 제공합니다. 이러한 예제와 기타 모드에 대한 전체 문서는 Predict, Train, ValExport 문서 페이지를 참조하십시오. Ultralytics Platform을 통해 클라우드 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을 설정하십시오. RT-DETR의 변형 어텐션은 F.grid_sample을 사용하며, 여기에는 결정론적 CUDA backward가 없으므로 deterministic=True로 실행을 재현할 수 없고 학습 처리량이 감소할 수 있습니다. seed은 가중치 초기화, 데이터 순서 및 증강 샘플링을 계속 제어합니다.

더 빠른 추론을 위한 트레이드오프

RT-DETR 사전 학습 가중치는 재학습 없이 지연 시간을 줄일 수 있는 두 가지 추론 시점 설정을 지원합니다:

  • eval_idx: 디코딩을 조기에 중지합니다. 기본 6레이어 디코더의 경우 0부터 시작하는 인덱스(05)를 사용하십시오. eval_idx=5은 모든 레이어를 사용하고, eval_idx=3는 4개 레이어를 사용합니다. TensorRT v10.11을 사용하는 T4 GPU에서 RT-DETR-L은 4개 레이어를 사용할 때 8.0ms / 52.7 mAP에서 7.4ms / 52.5 mAP로 향상됩니다.
  • num_queries: 객체 쿼리 수를 줄입니다(기본값: 300). 동일한 설정에서 100으로 낮추면 COCO에서 7.4ms / 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)

지원되는 태스크 및 모드#

이 표는 모델 유형, 특정 사전 훈련된 가중치, 각 모델이 지원하는 작업, 그리고 이모지로 표시된 지원되는 다양한 모드(Train, Val, Predict, Export)를 보여줍니다.

모델 유형사전 학습된 가중치지원되는 작업학습검증추론내보내기
RT-DETR Largertdetr-l.ptObject Detection
RT-DETR Extra-Largertdetr-x.ptObject Detection
아키텍처 전용 변형

rtdetr-resnet50.yamlrtdetr-resnet101.yaml는 YAML 아키텍처로만 제공됩니다. Ultralytics는 rtdetr-lrtdetr-x에 대해서만 사전 학습 가중치를 출시합니다. YAML에서 ResNet 변형(예: RTDETR("rtdetr-resnet50.yaml"))을 인스턴스화한 다음 필요에 따라 학습하거나 파인튜닝하십시오.

이상적인 사용 사례#

RT-DETR은 높은 정확도와 실시간 성능이 모두 필요한 애플리케이션에 특히 적합합니다:

인용 및 감사의 글#

연구 또는 개발 작업에서 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 팀에 감사드립니다. Vision Transformer 기반 실시간 객체 감지기인 RT-DETR을 개발하여 이 분야에 기여한 점에 깊이 감사드립니다.

FAQ#

  • Baidu의 RT-DETR(실시간 감지 Transformer)은 Vision Transformer 아키텍처를 기반으로 구축된 고급 실시간 객체 감지기입니다. 효율적인 하이브리드 인코더를 통해 스케일 내 상호작용과 스케일 간 융합을 분리하여 멀티스케일 특징을 효율적으로 처리합니다. IoU 인식 쿼리 선택을 사용하여 가장 관련성이 높은 객체에 집중하고 감지 정확도를 향상합니다. 재학습 없이 디코더 레이어를 조정하여 달성하는 적응형 추론 속도 덕분에 RT-DETR은 다양한 실시간 객체 감지 시나리오에 적합합니다. RT-DETR Arxiv 논문에서 RT-DETR 기능에 대해 자세히 알아보십시오.

  • Ultralytics Python API를 활용하여 사전 학습된 PaddlePaddle RT-DETR 모델을 사용할 수 있습니다. 예를 들어 COCO val2017에서 사전 학습되었고 T4 GPU에서 높은 FPS를 달성하는 RT-DETR-l 모델을 로드하려면 다음 예제를 사용할 수 있습니다:

    예시
    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 모델을 학습하십시오. 학습 후 사전 학습 체크포인트에서 이 값을 변경하는 것은 동일하지 않으며, 추가 쿼리를 학습하려면 재학습이 필요합니다.

  • 예. RT-DETR 모델은 학습, 검증, 예측 및 내보내기를 비롯한 다양한 Ultralytics 모드와 호환됩니다. 이러한 모드를 사용하는 방법에 대한 자세한 지침은 해당 문서를 참조하십시오: Train, Val, PredictExport. 이를 통해 객체 감지 솔루션을 개발하고 배포하기 위한 포괄적인 워크플로를 구성할 수 있습니다. Ultralytics 프레임워크는 다양한 모델 아키텍처에서 일관된 API를 제공하므로 RT-DETR 모델을 쉽게 사용할 수 있습니다.

댓글