概要
记录一下自己通过Ultralytics使用TR-DETR模型,超简单的修改流程。
整体架构流程
RT-DETR的resnet101结构
模型介绍:
百度开发的 Real-Time Detection Transformer(RT-DETR)是一款尖端的端到端物体检测器,可在保持高精度的同时提供实时性能。它基于 DETR(无 NMS 框架)的思想,同时引入基于卷积的主干和高效的混合编码器以获得实时速度。RT-DETR 通过解耦尺度内交互和跨尺度融合来高效处理多尺度特征。该模型具有很强的适应性,支持使用不同的解码器层灵活调整推理速度而无需重新训练。RT-DETR 在带有 TensorRT 的 CUDA 等加速后端上表现出色,优于许多其他实时物体检测器。
主要特点
**1、高效混合编码器:**百度的 RT-DETR 采用高效混合编码器,通过解耦尺度内相互作用和跨尺度融合来处理多尺度特征。这种独特的基于 Vision Transformers 的设计降低了计算成本,并实现了实时物体检测。
**2、IoU 感知查询选择:**百度的 RT-DETR 利用 IoU 感知查询选择改进了对象查询初始化。这使模型能够专注于场景中最相关的对象,从而提高检测准确性。
**3、自适应推理速度:**百度的 RT-DETR 支持通过使用不同的解码器层灵活调整推理速度,而无需重新训练。这种自适应性有利于在各种实时物体检测场景中实际应用。
技术细节
一、下载Ultralytics相关库
pip install ultralytics
二、使用示例
1、Python代码:
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")
2、命令行代码:
# Load a COCO-pretrained RT-DETR-l model and train it on the COCO8 example dataset for 100 epochs
yolo train model=rtdetr-l.pt data=coco8.yaml epochs=100 imgsz=640
# Load a COCO-pretrained RT-DETR-l model and run inference on the 'bus.jpg' image
yolo predict model=rtdetr-l.pt source=path/to/bus.jpg
三、使用自己想用的模型权重
找到目录下面:
yolov11/ultralytics/cfg/models/rt-detr
可以发现有四个模型权重(这是yolov11的代码,v8只有两个权重):
rtdetr-l.yaml
rtdetr-resnet50.yaml
rtdetr-resnet101.yaml
rtdetr-x.yaml
选择自己想用的权重,并添加到model = RTDETR(“”)里面
四、如果是训练自己的数据
修改data=“coco8.yaml”,将数据替换为自己的yaml文件。
小结
至此完成模型修改,是不是超简单、方便!