
Ultralytics Hand Keypoints 手部关键点数据集21 点手部姿态估计的 YOLO 训练实战【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics本文围绕 Ultralytics 官方提供的 Hand Keypoints 数据集展开该数据集包含 26,768 张手部图像每张图的手部均以 21 个关键点标注由 Google MediaPipe 自动生成保证标注精度与一致性并可直接对接 YOLO26-pose 系列模型完成训练、验证与部署。读完本文你将掌握该数据集的目录结构与 YAML 配置含义、21 个手部关键点的命名体系、flip_idx翻转映射在数据增强中的底层作用以及用 Python / CLI 两种姿势训练手部姿态估计模型的完整流程。数据集总览Ultralytics Hand Keypoints 数据集的核心规格如下项目说明图像总数26,768 张18,776 张 train / 7,992 张 val类别数1 类hand关键点每只手 21 个每个点为(x, y, visibility)三元组标注来源Google MediaPipe Hand Landmarker确保高准确度与一致性下载体积约 369 MB适用任务Pose 姿态估计手势识别、无触摸交互等该数据集的图像来自公开的手部与手势数据集11k Hands、2000 Hand Gestures、Gesture Recognition 等按各自平台许可收集使用整体以 Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International LicenseCC-BY-NC-SA-4.0分发。若需要超出通用手部 landmark 的自定义手势词表官方建议通过 Ultralytics Platform 在浏览器中完成自有数据集的标注与训练。数据集配套的文档页面位于 hand-keypoints.md同目录下的 coco8-pose.md、dog-pose.md、tiger-pose.md 等是其他姿态数据集的对照参考。21 个手部关键点的定义Hand Keypoints 数据集沿用 MediaPipe 手部 landmark 布局每只手标注 21 个点可归纳为手腕wrist1 个点拇指thumb4 个点食指index4 个点中指middle4 个点无名指ring4 个点小指pinky4 个点。数据集配置文件 hand-keypoints.yaml 中通过kpt_names字段给出了每个索引的解剖学名称这是理解标注数据时最重要的对照表索引名称含义0wrist手腕1-4thumb_cmc / thumb_mcp / thumb_ip / thumb_tip拇指掌骨指节、近节指节、指节、指尖5-8index_mcp / index_pip / index_dip / index_tip食指各关节9-12middle_mcp / middle_pip / middle_dip / middle_tip中指各关节13-16ring_mcp / ring_pip / ring_dip / ring_tip无名指各关节17-20pinky_mcp / pinky_pip / pinky_dip / pinky_tip小指各关节YAML 中该字段的实际写法见 hand-keypoints.yaml 第 24-47 行是按类组织的一级字典# Classes names: 0: hand # Keypoint names per class kpt_names: 0: - wrist - thumb_cmc - thumb_mcp - thumb_ip - thumb_tip - index_mcp # ...middle、ring、pinky 共 21 项 - pinky_tip从源码结构看kpt_names并非可有可无的注释姿态训练器在 train.py 中会显式读取该字段并挂到模型对象上kpt_names self.data.get(kpt_names) if not kpt_names: ... kpt_names {i: names for i in range(self.model.nc)} self.model.kpt_names kpt_names随后 exporter.py 在导出模型时把kpt_names写入导出产物的 metadata因此推理端如端侧推理框架可以按名称而非裸索引渲染骨架点这对“手腕”“指尖”这类语义化关键点尤其重要。数据集目录结构与完整 YAML数据集下载后的目录约定为根目录下包含images/train与images/val两个子目录分别对应 18,776 张训练图与 7,992 张验证图。完整配置文件如下原文照录自 ultralytics/cfg/datasets/hand-keypoints.yaml# Hand Keypoints dataset by Ultralytics # parent # ├── ultralytics # └── datasets # └── hand-keypoints ← downloads here (369 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: hand-keypoints # dataset root dir train: images/train # train images (relative to path) 18776 images val: images/val # val images (relative to path) 7992 images # Keypoints kpt_shape: [21, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible) flip_idx: [0, 1, 2, 4, 3, 10, 11, 12, 13, 14, 5, 6, 7, 8, 9, 15, 16, 17, 18, 19, 20] # Classes names: 0: hand # Keypoint names per class kpt_names: 0: - wrist - thumb_cmc - thumb_mcp - thumb_ip - thumb_tip - index_mcp - index_pip - index_dip - index_tip - middle_mcp - middle_pip - middle_dip - middle_tip - ring_mcp - ring_pip - ring_dip - ring_tip - pinky_mcp - pinky_pip - pinky_dip - pinky_tip # Download script/URL (optional) download: ...hand-keypoints.zip # 指向 ultralytics/assets 仓库的 release 资源约 369 MB各字段逐项解释path数据集根目录。写hand-keypoints时Ultralytics 会按内置路径列表寻找或自动下载到datasets/hand-keypoints。train/val相对于path的图像目录也支持指向*.txt文件列表或多目录列表的写法。kpt_shape: [21, 3]21 个关键点每个点 3 维x, y, visible若只存x, y则为 2 维。这个值必须与标注文件一致否则训练加载会失败。flip_idx水平翻转时关键点的重排映射。手部左右翻转后左右手的关节位置互换食指5-8与拇指1-4对调位置中指9-12与无名指13-16对调位置。对照上面的索引表可以逐项验证flip_idx的映射逻辑。names类别名仅hand一类。kpt_names关键点语义名称用于模型属性与导出 metadata。download自动下载地址。首次使用yolo train datahand-keypoints.yaml时框架会据此自动下载约 369 MB 的压缩数据集并解压无需手动搬运。源码视角flip_idx 如何驱动姿态数据增强flip_idx是本数据集与 COCO-pose 等数据集共有的关键字段它的正确性直接决定水平/垂直翻转增强是否可用。构建 YOLOv8 系列数据增强管线时augment.pyflip_idx dataset.data.get(flip_idx, []) # for keypoints augmentation if self.data.get(kpt_shape, [0, 0])[0] 0: hyp.fliplr 0.0 if isinstance(hyp.mosaic, float): hyp.mosaic hyp.mosaic 0.0 # True and MOSAIC 0.0 if flip_idx: if len(flip_idx) ! kpt_shape[0]: raise ValueError(...) if hyp.fliplr 0.0 or hyp.flipud 0.0: if not flip_idx: # both fliplr and flipud require flip_idx hyp.fliplr hyp.flipud 0.0 LOGGER.warning(No flip_idx array defined in data.yaml, disabling fliplr and flipud augmentations.)上述为 augment.py 中相关逻辑的概括要点有三若数据是 pose 任务但未提供flip_idx框架会自动禁用fliplr与flipud增强并打警告而不是用错误映射去翻转关键点若提供但长度不等于kpt_shape[0]本数据集为 21会直接抛出ValueError翻转真正生效时RandomFlip 用flip_idx对关键点做列重排if params[flip_idx] is not None and instances.keypoints is not None: instances.keypoints np.ascontiguousarray(instances.keypoints[:, params[flip_idx], :])也就是说图像被水平镜像的同时第 1-4 号点拇指与第 5-8 号点食指的坐标位置按flip_idx对调保证“镜像后的手”仍然满足解剖学语义。此外在 Albumentations 增强路径中augment.py也有同样的关键点重排处理。训练 YOLO26-pose 模型文档给出的标准训练方式100 个 epoch、640 输入尺寸Python 与 CLI 两种等价写法from ultralytics import YOLO # Load a model model YOLO(yolo26n-pose.pt) # load a pretrained model (recommended for training) # Train the model results model.train(datahand-keypoints.yaml, epochs100, imgsz640)# Start training from a pretrained *.pt model yolo pose train datahand-keypoints.yaml modelyolo26n-pose.pt epochs100 imgsz640完整的训练参数列表见 Training 模式文档姿态任务的整体说明含验证、预测、导出见 Pose 任务文档标注格式细节见 YOLO Pose 数据集格式指南。需要注意的关键点模型结构上的关键点数量是解耦的。预训练的yolo26n-pose.pt是在 COCO 人体 17 关键点kpt_shape: [17, 3]见 yolo26-pose.yaml上训练的而本数据集是 21 关键点。加载后直接train时框架会依据数据 YAML 重建 pose head 以适配新的kpt_shapebackbone 权重得以迁移。若想从零开始也可用modelyolo26n-pose.yaml构建新结构YOLO26 的 n/s/m/l/x 各档参数与 GFLOPs 见 yolo26-pose.yaml 中的 scales 注释。YOLO26 的 pose 头是Pose26模型 YAML 最后一行为[[16, 19, 22], 1, Pose26, [nc, kpt_shape]]即 P3/P4/P5 三个尺度上各预测一份关键点。Pose26在 head.py 中实现它在经典Pose头nk kpt_shape[0] * kpt_shape[1]个回归值kpts_decode中用 sigmoid 输出可见性、用 stride 放缩坐标基础上引入了 RealNVP 归一化流用于关键点分布建模。这意味着无论 17 点还是 21 点head 都是按kpt_shape动态实例化的手部 21 点任务不需要改任何网络代码。常用训练参数data指定数据集 YAML本数据集可只写hand-keypoints.yaml框架会内置解析epochs100imgsz640即输入图像边长训练时会被保持宽高比地 letterbox 到 640。其余如batch、device、patience、fliplr等详见 default.yaml 与训练文档。Mosaic 增强与手部数据集原文档特别展示了该数据集训练过程中的 Mosaic 批次示例多张手部图像被拼接成单张训练图。Mosaic 是 Ultralytics 训练中默认开启的增强对应hyp.mosaic概率它把最多 4 张图拼接为一张使同一 batch 内出现更多样的手部尺寸、朝向与遮挡关系从而提升模型对不同尺度与上下文的泛化能力。配合前文所述的flip_idx翻转Hand Keypoints 这种 18,776 张的训练集在增强下等效规模进一步放大。典型应用场景Hand Keypoints 数据集支撑的手部关键点能力可落地于手势识别人机交互与无触摸控制界面AR/VR 交互对虚拟物体的精确操控机器人操作机械手的细粒度运动控制医疗手部运动分析辅助诊断动画手部动作捕捉生物特征认证基于手部几何结构的安全系统。验证、常见问题与引用训练完成后model对象会保留训练时的data等属性可直接调用验证例如对最佳权重执行model.val()详见 Pose 任务文档 的 Val 小节。原文档 FAQ 覆盖的问题与答案可归纳为如何训练加载yolo26n-pose.pt并调用model.train(datahand-keypoints.yaml, epochs100, imgsz640)数据集价值26,768 张标注图 MediaPipe 生成的 21 点标注为手部姿态估计提供了规模与精度保障结构train 18,776 张 / val 7,992 张保证训练与验证流程完整YAML 使用把hand-keypoints.yaml作为data参数传入训练脚本或 CLI 即可框架自动完成下载与解析。引用与致谢若在你的研究或开发中使用了 Hand Keypoints 数据集请按 hand-keypoints.md 的 Citations and Acknowledgments 一节致谢图像来源包括 11k Hands、2000 Hand Gestures、Gesture Recognition 三个公开数据集按各自许可使用数据集整体以 CC-BY-NC-SA-4.0 分发并应注明数据集创建者 Rion Dsilva 的贡献。【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考