Github链接:https://github.com/iMoonLab/yolov13
论文链接:YOLOv13: Real-Time Object Detection with Hypergraph-Enhanced Adaptive Visual Perception
技术简介 💡
YOLOv13——新一代实时检测器,具有前沿的性能和效率。YOLOv13 家族包含四种不同规模的变体:Nano、Small、Large 和 X-Large,其核心技术包括:
-
HyperACE: 基于超图的自适应相关性增强 (Hypergraph-based Adaptive Correlation Enhancement)
- 将多尺度特征图中的像素视为超图顶点。
- 采用可学习的超边构建模块,自适应地探索顶点之间的高阶相关性。
- 利用一个线性复杂度的消息传递模块,在高阶相关性的指导下有效聚合多尺度特征,从而实现对复杂场景的有效视觉感知。
-
FullPAD: 全流程聚合与分发范式 (Full-Pipeline Aggregation-and-Distribution Paradigm)
- 使用 HyperACE 聚合主干网络 (backbone) 的多尺度特征,并在超图空间中提取高阶相关性。
- FullPAD 范式进一步利用三个独立的通道,将这些经过相关性增强的特征分别转发到主干网络与颈部 (neck) 的连接处、颈部内部各层之间,以及颈部与头部 (head) 的连接处。通过这种方式,YOLOv13 实现了整个模型信息流的细粒度控制和表示能力的协同增强。
- FullPAD 显著改善了梯度传播,并提升了检测性能。
-
轻量级基于深度可分离卷积的系列模块
- 将大核卷积替换为基于深度可分离卷积(DSConv, DS-Bottleneck, DS-C3k, DS-C3k2)构建的模块,在保持感受野的同时,极大地减少了参数量和计算量。
- 在不牺牲精度的前提下,实现了更快的推理速度。
YOLOv13 将超图计算与端到端的信息协同无缝结合,提供了一个更准确、更鲁棒、更高效的实时检测解决方案。
模型效果 🏆
1. MS COCO 基准测试
表1. 在 MS COCO 数据集上与其他 SOTA 实时目标检测器的量化比较
模型 | FLOPs (G) | 参数量(M) | mAP | AP50 | AP75 | 延迟 (ms) |
---|---|---|---|---|---|---|
YOLOv6-3.0-N | 11.4 | 4.7 | 37.0 | 52.7 | – | 2.74 |
Gold-YOLO-N | 12.1 | 5.6 | 39.6 | 55.7 | – | 2.97 |
YOLOv8-N | 8.7 | 3.2 | 37.4 | 52.6 | 40.5 | 1.77 |
YOLOv10-N | 6.7 | 2.3 | 38.5 | 53.8 | 41.7 | 1.84 |
YOLO11-N | 6.5 | 2.6 | 38.6 | 54.2 | 41.6 | 1.53 |
YOLOv12-N | 6.5 | 2.6 | 40.1 | 56.0 | 43.4 | 1.83 |
YOLOv13-N | 6.4 | 2.5 | 41.6 | 57.8 | 45.1 | 1.97 |
YOLOv6-3.0-S | 45.3 | 18.5 | 44.3 | 61.2 | – | 3.42 |
Gold-YOLO-S | 46.0 | 21.5 | 45.4 | 62.5 | – | 3.82 |
YOLOv8-S | 28.6 | 11.2 | 45.0 | 61.8 | 48.7 | 2.33 |
RT-DETR-R18 | 60.0 | 20.0 | 46.5 | 63.8 | – | 4.58 |
RT-DETRv2-R18 | 60.0 | 20.0 | 47.9 | 64.9 | – | 4.58 |
YOLOv9-S | 26.4 | 7.1 | 46.8 | 63.4 | 50.7 | 3.44 |
YOLOv10-S | 21.6 | 7.2 | 46.3 | 63.0 | 50.4 | 2.53 |
YOLO11-S | 21.5 | 9.4 | 45.8 | 62.6 | 49.8 | 2.56 |
YOLOv12-S | 21.4 | 9.3 | 47.1 | 64.2 | 51.0 | 2.82 |
YOLOv13-S | 20.8 | 9.0 | 48.0 | 65.2 | 52.0 | 2.98 |
YOLOv6-3.0-L | 150.7 | 59.6 | 51.8 | 69.2 | – | 9.01 |
Gold-YOLO-L | 151.7 | 75.1 | 51.8 | 68.9 | – | 10.69 |
YOLOv8-L | 165.2 | 43.7 | 53.0 | 69.8 | 57.7 | 8.13 |
RT-DETR-R50 | 136.0 | 42.0 | 53.1 | 71.3 | – | 6.93 |
RT-DETRv2-R50 | 136.0 | 42.0 | 53.4 | 71.6 | – | 6.93 |
YOLOv9-C | 102.1 | 25.3 | 53.0 | 70.2 | 57.8 | 6.64 |
YOLOv10-L | 120.3 | 24.4 | 53.2 | 70.1 | 57.2 | 7.31 |
YOLO11-L | 86.9 | 25.3 | 52.3 | 69.2 | 55.7 | 6.23 |
YOLOv12-L | 88.9 | 26.4 | 53.0 | 70.0 | 57.9 | 7.10 |
YOLOv13-L | 88.4 | 27.6 | 53.4 | 70.9 | 58.1 | 8.63 |
YOLOv8-X | 257.8 | 68.2 | 54.0 | 71.0 | 58.8 | 12.83 |
RT-DETR-R101 | 259.0 | 76.0 | 54.3 | 72.7 | – | 13.51 |
RT-DETRv2-R101 | 259.0 | 76.0 | 54.3 | 72.8 | – | 13.51 |
YOLOv10-X | 160.4 | 29.5 | 54.4 | 71.3 | 59.3 | 10.70 |
YOLO11-X | 194.9 | 56.9 | 54.2 | 71.0 | 59.1 | 11.35 |
YOLOv12-X | 199.0 | 59.1 | 54.4 | 71.1 | 59.3 | 12.46 |
YOLOv13-X | 199.2 | 64.0 | 54.8 | 72.0 | 59.8 | 14.67 |
2. 可视化效果
YOLOv10-N/S, YOLO11-N/S, YOLOv12-N/S 和 YOLOv13-N/S 的可视化示例:
自适应超边的代表性可视化示例。第一列和第二列中的超边主要关注前景中目标之间的高阶交互。第三列主要关注背景与部分前景之间的高阶交互。这些超边的可视化可以直观地反映 YOLOv13 建模的高阶视觉关联。
快速上手 🚀
1. 安装依赖
wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
conda create -n yolov13 python=3.11
conda activate yolov13
pip install -r requirements.txt
pip install -e .
YOLOv13 支持 Flash Attention 加速。
2. 模型验证
YOLOv13-N
YOLOv13-S
YOLOv13-L
YOLOv13-X
使用以下代码在 COCO 数据集上验证 YOLOv13 模型。请确保将 {n/s/l/x}
替换为所需的模型规模。
from ultralytics import YOLO
model = YOLO('yolov13{n/s/l/x}.pt') # 替换为所需的模型规模
3. 模型训练
使用以下代码训练 YOLOv13 模型。请确保将 yolov13n.yaml
替换为您想要的模型配置文件路径,并将 coco.yaml
替换为您的 COCO 数据集配置文件。
from ultralytics import YOLO
model = YOLO('yolov13n.yaml')
# 训练模型
results = model.train(
data='coco.yaml',
epochs=600,
batch=256,
imgsz=640,
scale=0.5, # S:0.9; L:0.9; X:0.9
mosaic=1.0,
mixup=0.0, # S:0.05; L:0.15; X:0.2
copy_paste=0.1, # S:0.15; L:0.5; X:0.6
device="0,1,2,3",
)
# 在验证集上评估模型性能
metrics = model.val('coco.yaml')
# 在单张图片上执行目标检测
results = model("path/to/your/image.jpg")
results[0].show()
4. 模型推理
使用以下代码通过 YOLOv13 模型进行目标检测。请确保将 {n/s/l/x}
替换为所需的模型规模。
from ultralytics import YOLO
model = YOLO('yolov13{n/s/l/x}.pt') # 替换为所需的模型规模
model.predict()
5. 模型导出
使用以下代码将 YOLOv13 模型导出为 ONNX 或 TensorRT 格式。请确保将 {n/s/l/x}
替换为所需的模型规模。
from ultralytics import YOLO
model = YOLO('yolov13{n/s/l/x}.pt') # 替换为所需的模型规模
model.export(format="engine", half=True) # 或 format="onnx"