YOLO26N 姿态估计模型训练全流程1. 环境准备pipinstallultralytics8.3.02. 数据集配置# data_pose.yamlpath:./datasettrain:train/imagesval:valid/imagestest:test/imagesnames:0:personnc:1task:posekpt_shape:[17,3]3. 模型训练#!/usr/bin/env python3train_pose.py - YOLO26N 姿态估计训练fromultralyticsimportYOLO# 加载预训练姿态模型modelYOLO(yolo26n-pose.pt)# 训练resultsmodel.train(datadata_pose.yaml,epochs100,imgsz640,batch16,device0,workers8,patience20,saveTrue,save_period10,projectruns/pose,nameyolo26n_pose_custom,exist_okTrue,pretrainedTrue,optimizerauto,lr00.01,lrf0.01,momentum0.937,weight_decay0.0005,warmup_epochs3,# 姿态专用参数pose12.0,# 关键点损失权重kobj1.0,# 关键点目标性损失box7.5,# 边界框损失cls0.5,# 分类损失dfl1.5,# DFL 损失# 数据增强mosaic1.0,mixup0.0,# 姿态任务不推荐 MixUpcopy_paste0.0,flipud0.0,# 不上下翻转fliplr0.5,# 左右翻转degrees10.0,scale0.3,plotsTrue,)print(f最佳 mAP50:{results.best_map50:.4f})print(f最佳 mAP50-95:{results.best_map50_95:.4f})4. 从检测模型迁移训练# 如果没有预训练姿态模型从检测模型迁移fromultralyticsimportYOLO# 加载检测模型modelYOLO(yolo26n.pt)# 微调为姿态模型resultsmodel.train(datadata_pose.yaml,epochs100,imgsz640,batch16,taskpose,freeze10,# 冻结 backbone)5. 训练监控# 查看训练曲线fromultralyticsimportYOLO# 加载训练结果resultsYOLO(runs/pose/yolo26n_pose_custom/weights/best.pt)# 查看指标print(fmAP50:{results.metrics.box.map50})print(fmAP50-95:{results.metrics.box.map})print(f关键点 mAP:{results.metrics.pose.map})6. 超参数调优# 关键超参数pose:12.0# 关键点损失权重增大提升关键点精度kobj:1.0# 关键点目标性损失box:7.5# 边界框损失cls:0.5# 分类损失dfl:1.5# DFL 损失# 调优建议# 关键点不准 → 增大 pose 权重15-20# 漏检多 → 增大 box 权重10-15# 误检多 → 增大 cls 权重1.0-2.07. 多尺度训练# 多尺度训练提升小目标关键点model.train(datadata_pose.yaml,epochs100,imgsz640,multi_scaleTrue,# 启用多尺度scale0.5,# 缩放范围)8. 训练结果分析训练结果示例 ┌──────────────────┬──────────┐ │ 指标 │ 数值 │ ├──────────────────┼──────────┤ │ mAP50 (bbox) │ 92.5 │ │ mAP50-95 (bbox) │ 78.3 │ │ mAP50 (pose) │ 88.2 │ │ mAP50-95 (pose) │ 68.5 │ │ Precision │ 89.1 │ │ Recall │ 85.6 │ └──────────────────┴──────────┘总结配置推荐值说明模型yolo26n-pose.pt预训练权重epochs100-200足够收敛batch16-32根据显存imgsz640标准尺寸pose loss12.0关键点权重flipud0.0不翻转fliplr0.5左右翻转
YOLO26N 姿态估计模型训练全流程
YOLO26N 姿态估计模型训练全流程1. 环境准备pipinstallultralytics8.3.02. 数据集配置# data_pose.yamlpath:./datasettrain:train/imagesval:valid/imagestest:test/imagesnames:0:personnc:1task:posekpt_shape:[17,3]3. 模型训练#!/usr/bin/env python3train_pose.py - YOLO26N 姿态估计训练fromultralyticsimportYOLO# 加载预训练姿态模型modelYOLO(yolo26n-pose.pt)# 训练resultsmodel.train(datadata_pose.yaml,epochs100,imgsz640,batch16,device0,workers8,patience20,saveTrue,save_period10,projectruns/pose,nameyolo26n_pose_custom,exist_okTrue,pretrainedTrue,optimizerauto,lr00.01,lrf0.01,momentum0.937,weight_decay0.0005,warmup_epochs3,# 姿态专用参数pose12.0,# 关键点损失权重kobj1.0,# 关键点目标性损失box7.5,# 边界框损失cls0.5,# 分类损失dfl1.5,# DFL 损失# 数据增强mosaic1.0,mixup0.0,# 姿态任务不推荐 MixUpcopy_paste0.0,flipud0.0,# 不上下翻转fliplr0.5,# 左右翻转degrees10.0,scale0.3,plotsTrue,)print(f最佳 mAP50:{results.best_map50:.4f})print(f最佳 mAP50-95:{results.best_map50_95:.4f})4. 从检测模型迁移训练# 如果没有预训练姿态模型从检测模型迁移fromultralyticsimportYOLO# 加载检测模型modelYOLO(yolo26n.pt)# 微调为姿态模型resultsmodel.train(datadata_pose.yaml,epochs100,imgsz640,batch16,taskpose,freeze10,# 冻结 backbone)5. 训练监控# 查看训练曲线fromultralyticsimportYOLO# 加载训练结果resultsYOLO(runs/pose/yolo26n_pose_custom/weights/best.pt)# 查看指标print(fmAP50:{results.metrics.box.map50})print(fmAP50-95:{results.metrics.box.map})print(f关键点 mAP:{results.metrics.pose.map})6. 超参数调优# 关键超参数pose:12.0# 关键点损失权重增大提升关键点精度kobj:1.0# 关键点目标性损失box:7.5# 边界框损失cls:0.5# 分类损失dfl:1.5# DFL 损失# 调优建议# 关键点不准 → 增大 pose 权重15-20# 漏检多 → 增大 box 权重10-15# 误检多 → 增大 cls 权重1.0-2.07. 多尺度训练# 多尺度训练提升小目标关键点model.train(datadata_pose.yaml,epochs100,imgsz640,multi_scaleTrue,# 启用多尺度scale0.5,# 缩放范围)8. 训练结果分析训练结果示例 ┌──────────────────┬──────────┐ │ 指标 │ 数值 │ ├──────────────────┼──────────┤ │ mAP50 (bbox) │ 92.5 │ │ mAP50-95 (bbox) │ 78.3 │ │ mAP50 (pose) │ 88.2 │ │ mAP50-95 (pose) │ 68.5 │ │ Precision │ 89.1 │ │ Recall │ 85.6 │ └──────────────────┴──────────┘总结配置推荐值说明模型yolo26n-pose.pt预训练权重epochs100-200足够收敛batch16-32根据显存imgsz640标准尺寸pose loss12.0关键点权重flipud0.0不翻转fliplr0.5左右翻转