
💡💡💡本文解决什么问题:教会你如何用自己的数据集转换成对应格式的数据集以及如何训练YOLOv13-pose关键点检测
Pose mAP50 为0.893,相较于YOLO11的Pose mAP50 为 0.871 ,大幅提升
《YOLOv13魔术师专栏》将从以下各个方向进行创新:

链接:
【原创自研模块】【多组合点优化】【注意力机制】【卷积魔改】【block&多尺度融合结合】【损失&IOU优化】【上下采样优化 】【小目标性能提升】【前沿论文分享】【训练实战篇】
订阅者通过添加WX: AI_CV_0624,入群沟通,提供改进结构图等一系列定制化服务。
定期向订阅者提供源码工程,配合博客使用。
订阅者可以申请发票,便于报销
💡💡💡为本专栏订阅者提供创新点改进代码,改进网络结构图,方便paper写作!!!
💡💡💡适用场景:红外、小目标检测、工业缺陷检测、医学影像、遥感目标检测、低对比度场景
💡💡💡适用任务:所有改进点适用【检测】、【分割】、【pose】、【分类】等
💡💡💡全网独家首发创新,【自研多个自研模块】,【多创新点组合适合paper 】!!!
☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️ ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️
包含注意力机制魔改、卷积魔改、检测头创新、损失&IOU优化、block优化&多层特征融合、 轻量级网络设计、25年最新顶会改进思路、原创自研paper级创新等
🚀🚀🚀 本项目持续更新 | 更新完结保底≥80+ ,冲刺100+ 🚀🚀🚀
🍉🍉🍉 联系WX: AI_CV_0624 欢迎交流!🍉🍉🍉
⭐⭐⭐专栏原价299,越早订阅越划算⭐⭐⭐
💡💡💡 2025年计算机视觉顶会创新点适用于YOLOv12、YOLO11、YOLOv10、YOLOv8等各个YOLO系列,专栏文章提供每一步步骤和源码,轻松带你上手魔改网络 !!!
💡💡💡重点:通过本专栏的阅读,后续你也可以设计魔改网络,在网络不同位置(Backbone、head、detect、loss等)进行魔改,实现创新!!!
☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️ ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️

论文:[2506.17733] YOLOv13: Real-Time Object Detection with Hypergraph-Enhanced Adaptive Visual Perception
摘要—YOLO 系列模型因其卓越的准确性和计算效率在实时目标检测领域占据主导地位。然而,无论是 YOLO11 及更早版本的卷积架构,还是 YOLOv12 引入的基于区域的自注意力机制,都仅限于局部信息聚合和成对相关性建模,缺乏捕捉全局多对多高阶相关性的能力,这限制了在复杂场景下的检测性能。本文提出了一种准确且轻量化的 YOLOv13 目标检测器。为应对上述挑战,我们提出了一种基于超图的自适应相关性增强(HyperACE)机制,通过超图计算自适应地利用潜在的高阶相关性,克服了以往方法仅基于成对相关性建模的限制,实现了高效的全局跨位置和跨尺度特征融合与增强。随后,我们基于 HyperACE 提出了全链路聚合与分配(FullPAD)范式,通过将相关性增强特征分配到整个网络,有效实现了全网的细粒度信息流和表征协同。最后,我们提出用深度可分离卷积代替常规的大核卷积,并设计了一系列块结构,在不牺牲性能的前提下显著降低了参数量和计算复杂度。我们在广泛使用的 MS COCO 基准测试上进行了大量实验,结果表明,我们的方法在参数更少、浮点运算量更少的情况下达到了最先进性能。具体而言,我们的 YOLOv13-N 相比 YOLO11-N 提升了 3.0% 的 mAP,相比 YOLOv12-N 提升了 1.5% 的 mAP。

以往的 YOLO 系列遵循 “骨干网络 → 颈部网络 → 检测头” 的计算范式,这本质上限定了信息流的充分传输。相比之下,我们的模型通过超图自适应关联增强(HyperACE)机制,实现全链路特征聚合与分配(FullPAD),从而增强传统的 YOLO 架构。因此,我们提出的方法在整个网络中实现了细粒度的信息流和表征协同,能够改善梯度传播并显著提升检测性能。具体而言,如图 2 所示,我们的 YOLOv13 模型首先使用类似以往工作的骨干网络提取多尺度特征图 B1、B2、B3、B4、B5,但其中的大核卷积被我们提出的轻量化 DS-C3k2 模块取代。然后,与传统 YOLO 方法直接将 B3、B4 和 B5 输入颈部网络不同,我们的方法将这些特征收集并传递到提出的 HyperACE 模块中,实现跨尺度跨位置特征的高阶关联自适应建模和特征增强。随后,我们的 FullPAD 范式利用三个独立通道,将关联增强后的特征分别分配到骨干网络与颈部网络的连接处、颈部网络的内部层以及颈部网络与检测头的连接处,以优化信息流。最后,颈部网络的输出特征图被传递到检测头中,实现多尺度目标检测。

ultralytics/cfg/models/v13/yolov13.yaml
超图自适应相关性增强机制 HyperACE

代码位置ultralytics/nn/modules/block.py
全流程聚合 - 分发范式 FullPAD

代码位置ultralytics/nn/modules/block.py
基于深度可分离卷积的轻量化模块

代码位置ultralytics/nn/modules/block.py
# 安装labelme
pip install labelme直接在python环境下运行
labelme关键点标记主要使用
1)Create Rectangle生成矩形框;
2)Create Point生成关键点;


一张图片对应一个json文件

json部分内容如下:
{
"version": "5.1.1",
"flags": {},
"shapes": [
{
"label": "Ulna",
"points": [
[
474.71929824561397,
1443.4035087719294
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "Radius",
"points": [
[
639.6315789473683,
1445.1578947368416
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "FMCP",
"points": [
[
832.6140350877192,
1222.3508771929824
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "FPIP",
"points": [
[
1023.8421052631577,
1089.0175438596489
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "FDIP",
"points": [
[
1157.1754385964912,
987.2631578947367
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "MCP5",
"points": [
[
430.85964912280696,
946.9122807017543
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "MCP4",
"points": [
[
543.1403508771929,
910.0701754385964
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "MCP3",
"points": [
[
657.1754385964912,
881.9999999999998
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "MCP2",
"points": [
[
797.5263157894736,
896.035087719298
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "PIP5",
"points": [
[
401.0350877192982,
864.4561403508769
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "PIP4",
"points": [
[
529.1052631578947,
801.2982456140348
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "PIP3",
"points": [
[
678.2280701754386,
773.2280701754385
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "PIP2",
"points": [
[
843.1403508771929,
810.0701754385964
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "MIP5",
"points": [
[
329.1052631578947,
696.035087719298
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "MIP4",
"points": [
[
513.3157894736842,
562.7017543859647
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "MIP3",
"points": [
[
713.3157894736842,
515.3333333333333
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "MIP2",
"points": [
[
944.8947368421052,
608.3157894736839
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "DIP5",
"points": [
[
313.31578947368416,
601.2982456140348
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "DIP4",
"points": [
[
509.8070175438596,
411.8245614035086
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "DIP3",
"points": [
[
727.3508771929824,
345.15789473684185
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "DIP2",
"points": [
[
994.017543859649,
492.52631578947353
]
],
"group_id": null,
"shape_type": "point",
"flags": {}
},
{
"label": "hand",
"points": [
[
204.82608695652186,
183.95652173913044
],
[
1265.695652173913,
1775.2608695652175
]
],
"group_id": null,
"shape_type": "rectangle",
"flags": {}
}
],
"imagePath": "1525.png",labelme2yolo-keypoint
详见:
YOLOv13-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程-CSDN博客
生成的txt内容如下:
0 0.48481 0.47896 0.70079 0.77886 0.31308 0.70597 2 0.42206 0.70695 2 0.54954 0.59785 2 0.67569 0.53278 2 0.76420 0.48288 2 0.28402 0.46282 2 0.35865 0.44521 2 0.43395 0.43102 2 0.52642 0.43836 2 0.26486 0.42270 2 0.34941 0.39188 2 0.44782 0.37818 2 0.55680 0.39628 2 0.21731 0.34051 2 0.33884 0.27495 2 0.47094 0.25196 2 0.62351 0.29746 2 0.20674 0.29403 2 0.33620 0.20108 2 0.48018 0.16879 2 0.65654 0.24070 2 讲解:
第一个0代表:框的类别,因为只有hand一类,所以为0
0.48481 0.47896 0.70079 0.77886 代表:归一化后的 框的中心点横纵坐标、宽、高
0.31308 0.70597 2代表:归一化后的 第一个关键点的横纵坐标、关键点可见性
关键点可见性理解:0代表不可见、1代表遮挡、2代表可见
hand_keypoint:
-images:
--train: png图片
--val:png图片
-labels:
--train: txt文件
--val:txt文件参考coco8-pose.yaml即可
# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
# Example usage: yolo train data=coco8-pose.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8-pose ← downloads here (1 MB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ./ultralytics-7.31/data/hand_keypoint # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)
# Keypoints
kpt_shape: [21, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15,17,18,19,20]
# Classes
names:
0: hand
# Download script/URL (optional)
#download: https://ultralytics.com/assets/coco8-pose.zip修改为21个关键点和一个类别nc:1
# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLO11-pose keypoints/pose estimation model. For Usage examples see https://docs.ultralytics.com/tasks/pose
# Parameters
nc: 1 # number of classes
kpt_shape: [21, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
scales: # model compound scaling constants, i.e. 'model=yolov13n.yaml' will call yolov13.yaml with scale 'n'
# [depth, width, max_channels]
n: [0.50, 0.25, 1024] # Nano
s: [0.50, 0.50, 1024] # Small
l: [1.00, 1.00, 512] # Large
x: [1.00, 1.50, 512] # Extra Largeimport warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO
if __name__ == '__main__':
model = YOLO('ultralytics/cfg/models/v13/yolov13-pose.yaml')
#model.load('yolov13n.pt') # loading pretrain weights
model.train(data='data/hand_keypoint.yaml',
cache=False,
imgsz=640,
epochs=200,
batch=16,
#close_mosaic=10,
device='0',
optimizer='SGD', # using SGD
project='runs/train',
name='exp',
)200个epoch以后,训练结果可视化如下:

Pose mAP50 为0.893,相较于YOLO11的Pose mAP50 为 0.871 ,大幅提升
YOLO11-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程(一)_yolov11 pose-CSDN博客
YOLOv13-pose summary: 554 layers, 2,821,743 parameters, 0 gradients, 7.7 GFLOPs
Class Images Instances Box(P R mAP50 mAP50-95) Pose(P R mAP50 mAP50-95): 100%|██████████| 2/2 [00:04<00:00, 2.07s/it]
all 64 64 0.998 1 0.995 0.874 0.691 0.922 0.922 0.893 0.893 0.72PosePR_curve.png

预测结果如下:


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。