ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

YOLO 姿态估计数据集完全指南:Ultralytics 标签格式、YAML 配置与实战训练(YOLOv10 仓库视角)

YOLO 姿态估计数据集完全指南:Ultralytics 标签格式、YAML 配置与实战训练(YOLOv10 仓库视角) YOLO 姿态估计数据集完全指南Ultralytics 标签格式、YAML 配置与实战训练YOLOv10 仓库视角【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10本指南以 YOLOv10 仓库中姿态估计Pose Estimation数据集文档为核心系统讲解 Ultralytics YOLO 姿态标签格式、数据集 YAML 配置、官方支持的 COCO-Pose / COCO8-Pose / Tiger-Pose 数据集以及 COCO 标注转 YOLO 格式的转换工具。读完本文你将掌握从数据集准备、配置编写到启动姿态估计模型训练与验证的完整链路并理解底层源码的关键实现细节。姿态估计任务与数据集的核心作用姿态估计Pose Estimation是计算机视觉中的一项核心任务给定一张图像模型需要定位目标对象上的若干关键点Keypoints例如人体的鼻子、眼睛、肩膀、肘部、手腕、臀部、膝盖和脚踝。这些关键点通常以二维[x, y]坐标表示部分数据集还会附加可见性标记形成三维[x, y, visible]表示。在 YOLO 系列模型中姿态估计属于pose任务对应仓库中的 pose 任务文档。与目标检测只输出边界框不同姿态估计在边界框的基础上额外输出每个关键点的位置与置信度。这一任务的落地质量高度依赖数据集的标签格式是否规范——这正是本文要重点展开的内容。在 YOLOv10 仓库中姿态任务的底层实现分布在 pose 预测/训练/验证模块 与 Pose 检测头 中它们全部围绕统一的标签与配置规范工作理解这份规范是使用该仓库进行姿态训练的第一步。Ultralytics YOLO 姿态标签格式训练 YOLO 姿态模型所使用的数据集标签格式遵循以下三条组织规则每个图像对应一个文本文件数据集中每张图片都有一个同名仅扩展名不同的.txt标签文件每行对应一个目标实例文本文件中的每一行描述图像中的一个目标对象每行包含完整的实例信息类别索引、边界框中心坐标、边界框宽高以及全部关键点坐标所有数值均归一化到 01 之间坐标之间以空格分隔。二维格式Dim 2当关键点只有x、y两个维度不记录可见性时每行格式为class-index x y width height px1 py1 px2 py2 ... pxn pyn三维格式Dim 3当关键点包含可见性维度时每个关键点额外携带一个可见性标记class-index x y width height px1 py1 p1-visibility px2 py2 p2-visibility pxn pyn pn-visibility其中class-index是目标类别索引例如 0 代表人、1 代表车x y width height是归一化后的边界框信息中心坐标与宽高px1 py1 ... pxn pyn是归一化后的关键点像素坐标。实际标签示例COCO-Pose 人体 17 关键点COCO-Pose 采用 17 个关键点鼻子、双眼、双耳、双肩、双肘、双腕、双髋、双膝、双踝其标签文件的一行大致如下数值为示意实际以归一化坐标为准0 0.5321 0.6123 0.2245 0.8111 0.5312 0.5112 3 0.5213 0.5122 3 0.5314 0.5222 2 0.5415 0.6033 2 0.5516 0.6044 3 0.5617 0.7025 3 0.5718 0.7133 3 0.5819 0.7422 2 0.5910 0.7431 2 ...注标签文件中的边界框与关键点坐标均为相对于图像宽高的归一化值。生成标签时将像素坐标除以图像宽度/高度即可得到。该归一化逻辑在 COCO 转 YOLO 转换器 中有直接的源码体现box[:2] box[2:] / 2左上角坐标转中心坐标再分别除以w与h。数据集 YAML 配置详解Ultralytics 框架使用 YAML 文件定义数据集与模型配置。姿态数据集的核心 YAML 结构如下节选自仓库中的 coco8-pose.yaml# 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: ../datasets/coco8-pose # 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: [17, 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] # Classes dictionary names: 0: person各字段含义如下字段说明path数据集根目录。train/val/test均相对于该目录解析train/val/test三种写法均可目录路径如images/train、文本文件如train2017.txt列出图片路径、或路径列表kpt_shape关键点配置[数量, 维度]。维度为 2 表示只有x, y维度为 3 表示x, y, visibleflip_idx对称关键点翻转索引可选。数据增强做水平翻转时用于交换左右对称的关键点names类别名字典键的顺序必须与标签文件中的类别索引一一对应flip_idx 的作用与写法当关键点具有左右对称性如人体左右侧、人脸左右眼时数据增强中的水平翻转flip会导致左右关键点互换。flip_idx正是用来描述这种交换关系的索引映射。原文档给出的示例假设人脸关键点为[left eye, right eye, nose, left mouth, right mouth]原始索引为[0, 1, 2, 3, 4]则翻转后索引变为[1, 0, 2, 4, 3]——即交换 0↔1、3↔4鼻子索引 2保持不变。COCO 人体 17 关键点的flip_idx为[0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]本质上是让左右眼、左右耳、左右肩等成对交换。注意如果关键点不具备对称性如 tiger-pose.yaml 中的动物姿态flip_idx应保持为恒等映射[0, 1, 2, ..., n-1]仓库中老虎姿态数据集正是这样配置的。仓库中的三份官方姿态数据集 YAMLcoco-pose.yamlkpt_shape: [17, 3]train指向train2017.txt118287 张、val指向val2017.txt5000 张并内置完整的下载脚本先下载 pose 标签压缩包再下载 train/val/test 图像coco8-pose.yamlkpt_shape: [17, 3]训练/验证各 4 张共 8 张图像download字段直接给出 1 MB 的压缩包地址适合快速跑通流水线tiger-pose.yamlkpt_shape: [12, 2]12 个关键点、无可见性维度、flip_idx为恒等映射训练 210 张、验证 53 张下载地址约 75.3 MB。从源码结构看kpt_shape中的维度数直接决定标签解析与模型输出二维关键点输出2 * n个通道三维关键点输出3 * n个通道这一点在 YOLOv8-pose 模型配置nc: 1、kpt_shape: [17, 3]与 Pose 检测头 中均有体现。使用姿态数据集训练模型在 YOLOv10 仓库中通过ultralytics包加载官方预训练模型即可开始姿态训练。以下以 COCO8-Pose 为例from ultralytics import YOLO # 加载模型推荐加载预训练权重用于迁移学习 model YOLO(yolov8n-pose.pt) # 训练模型 results model.train(datacoco8-pose.yaml, epochs100, imgsz640)对应的 CLI 方式# 从预训练 *.pt 模型开始训练 yolo detect train datacoco8-pose.yaml modelyolov8n-pose.pt epochs100 imgsz640更规范的写法是显式指定任务类型详见 train 模式文档yolo pose train datacoco8-pose.yaml modelyolov8n-pose.pt epochs100 imgsz640训练结束后可以使用model.val()验证精度或使用model.predict(source...)对图像、视频甚至流媒体进行推理。值得留意的是仓库的 PoseValidator 在验证阶段专门引入了姿态指标它继承自DetectionValidator使用OKS_SIGMA与kpt_iou计算基于 OKSObject Keypoint Similarity的关键点相似度并输出 mAP50/mAP50-95 等姿态专用指标——这说明姿态数据的质量直接决定这些指标的可靠性。官方支持的姿态数据集以下是本仓库中与 Ultralytics YOLO 格式兼容、可用于训练姿态估计模型的官方数据集。COCO-Pose大规模人体姿态简介COCO-Pose 是 COCOCommon Objects in Context数据集的姿态专用子集基于 COCO Keypoints 2017 的图像与标注构建用于训练 YOLO 等模型的姿态估计能力规模包含超过 20 万张带关键点标注的图像即 200K labeled imagestrain2017 约 11.8 万张val2017 5000 张类别数1 类Human关键点17 个包括鼻子、双眼、双耳、双肩、双肘、双腕、双髋、双膝、双踝标签格式与前述 Ultralytics YOLO 格式一致评估指标与 COCO 一致提供 OKSObject Keypoint Similarity标准化评估指标便于横向对比模型性能适用场景人体姿态估计模型的训练与评测详细说明见 COCO-Pose 数据集文档。COCO8-Pose微型快速验证集简介由 COCO train2017 前 8 张图像组成的小型姿态数据集训练 4 张、验证 4 张规模仅 8 张图像约 1 MB既能轻松管理又足以暴露训练流水线中的错误类别数1 类Human关键点17 个与 COCO-Pose 相同标签格式与 Ultralytics YOLO 格式一致适用场景模型测试调试、新方法实验、冒烟测试sanity checks与 CI 检查的理想选择详细说明见 COCO8-Pose 数据集文档。Tiger-Pose动物姿态简介由 263 张图像组成的动物姿态数据集源自一段老虎行走视频其中 210 张用于训练、53 张用于验证类别数1 类Tiger关键点12 个且无可见性维度对应 YAML 中kpt_shape: [12, 2]标签格式与 Ultralytics YOLO 格式一致适用场景动物姿态及其他非人体姿态估计任务是验证姿态算法、排查流水线问题的优秀小型数据集详细说明见 Tiger-Pose 数据集文档。以上三份数据集的 YAML 配置均在仓库中可直接查阅coco-pose.yaml、coco8-pose.yaml、tiger-pose.yaml。添加自有数据集如果你拥有自己的姿态数据集并希望用 Ultralytics YOLO 格式训练只需完成两步格式转换将你的标注转换为前述 Ultralytics YOLO 标签格式——每个图像一个.txt标签文件、每行一个实例、数值归一化到 01编写 YAML在 YAML 配置文件中指定图像路径、关键点数量与维度kpt_shape、翻转索引flip_idx对称关键点才需要、类别数量与类别名names参考上文给出的 YAML 模板即可。COCO 标注转 YOLO 格式convert_coco 工具Ultralytics 提供开箱即用的转换工具convert_coco可将 COCO 格式或任何符合 COCO 标注结构的数据集转换为 Ultralytics YOLO 格式from ultralytics.data.converter import convert_coco convert_coco(labels_dirpath/to/coco/annotations/, use_keypointsTrue)use_keypointsTrue表示在转换后的标签中保留关键点姿态任务必需。该函数定义于 ultralytics/data/converter.py核心参数如下参数默认值说明labels_dir../coco/annotations/存放 COCO 标注 JSON 文件的目录save_dircoco_converted/输出目录已存在时自动递增避免覆盖use_segmentsFalse是否输出分割掩码use_keypointsFalse是否输出关键点标注姿态任务需设为Truecls91to80True是否将 COCO 的 91 类 ID 映射为常用的 80 类 ID从源码实现看该转换器的关键处理逻辑包括遍历labels_dir下所有*.json标注文件为每个 JSON 建立 image 与 annotation 的映射converter.py将 COCO 的[左上角 x, 左上角 y, 宽, 高]框格式转换为 YOLO 的[中心 x, 中心 y, 宽, 高]格式并分别除以图像宽高完成归一化converter.py当use_keypointsTrue且标注含keypoints字段时将 COCO 的[x, y, visible]关键点数组归一化后拼接到类别与边界框之后converter.py最终写出cls, box, keypoints组合的标签行converter.py。这一实现与本文第二节的标签格式规范完全对应可作为将任意 COCO 结构标注转换为 YOLO 姿态标签的标准路径。结语从标签文件的三条组织规则到kpt_shape/flip_idx的 YAML 配置再到 COCO-Pose、COCO8-Pose、Tiger-Pose 三份官方数据集与convert_coco转换工具本指南覆盖了 YOLO 姿态估计任务数据侧的全链路。结合实际仓库源码可以看到标签的归一化规则由 converter.py 保证kpt_shape直接决定 Pose 检测头 的输出通道而 OKS 相关指标由 PoseValidator 在验证阶段计算。理解并正确配置数据集格式是姿态模型训练效果可靠的前提也是上手 YOLOv10 姿态任务 的第一步。【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表