YOLOv8 姿态估计实战关键点训练、角度判断与部署这篇教程根据我复现 YOLOv8 姿态估计流程时整理重点演示如何训练关键点模型、读取 keypoints 结果、判断姿态并完成部署。YOLOv8 的姿态估计和目标检测相比核心差异在于输出的是关键点而不是框。本文适合做关键点检测、姿态判断和工业检测的入门模板。本文会重点跑通以下流程安装 YOLOv8 姿态依赖从数据集后台获取关键点数据训练姿态估计模型读取 keypoints 并可视化做姿态角度判断和部署如果你正在系统学习目标检测、实例分割、OCR、多目标跟踪或视觉大模型建议收藏本文配套 notebook、示例图片和运行环境说明后续会继续整理。如果环境配置卡住可以在评论区说明具体报错。 文章目录YOLOv8 姿态估计实战关键点训练、角度判断与部署⚙️ 环境准备 从数据集后台获取关键点数据️ 开始训练 推理与可视化 姿态判断 部署说明☁️ 云端推理示例 小结 同系列教程汇总⚙️ 环境准备先检查运行环境并安装依赖。建议优先使用带 NVIDIA GPU 的环境避免推理和训练阶段显存不足。!nvidia-smiimportos HOMEos.getcwd()print(HOME)!pip install ultralytics8.2.103-q# prevent ultralytics from tracking your activity!yolo settings syncFalseimportultralytics ultralytics.checks()fromultralyticsimportYOLOfromIPython.displayimportdisplay,Image 从数据集后台获取关键点数据下面按 notebook 原流程继续执行。!mkdir-p{HOME}/datasets%cd{HOME}/datasetsfromtypesimportSimpleNamespace# 从数据集后台下载关键点数据集后修改 DATASET_DIR 指向解压目录。DATASET_DIR/content/dataset# 修改为数据集后台导出的数据集目录datasetSimpleNamespace(locationDATASET_DIR)importyamlwithopen(f{dataset.location}/data.yaml,r)asf:dataset_yamlyaml.safe_load(f)dataset_yaml[train]../train/imagesdataset_yaml[val]../valid/imagesdataset_yaml[test]../test/imageswithopen(f{dataset.location}/data.yaml,w)asf:yaml.dump(dataset_yaml,f)️ 开始训练关键点模型的训练流程和检测略有不同但核心还是数据路径和权重路径。%cd{HOME}fromultralyticsimportYOLO modelYOLO(yolov8n-pose.pt)resultsmodel.train(dataf{dataset.location}/data.yaml,epochs100,imgsz640) 推理与可视化先把关键点预测可视化确认骨架和顶点位置正确。%cd{HOME}modelYOLO(runs/pose/train/weights/best.pt)importosimportrandom random_filerandom.choice(os.listdir(f{dataset.location}/test/images))file_nameos.path.join(f{dataset.location}/test/images,random_file)resultsmodel(file_name)print(results[0])# Bug in Google Colabimportlocale locale.getpreferredencodinglambda:UTF-8!pip install supervision0.24.0-qimportsupervisionassvimportcv2 key_pointssv.KeyPoints.from_ultralytics(results[0])vertex_annotatorsv.VertexAnnotator(radius3,colorsv.Color.WHITE)edge_annotatorsv.EdgeAnnotator(thickness2,edges[(0,1)])annotated_framecv2.imread(file_name)annotated_frameedge_annotator.annotate(sceneannotated_frame,key_pointskey_points)annotated_framevertex_annotator.annotate(sceneannotated_frame,key_pointskey_points)annotated_framesv.resize_image(annotated_frame,resolution_wh(900,900),keep_aspect_ratioTrue)sv.cv2_to_pillow(annotated_frame) 姿态判断姿态判断通常是关键点结果上的业务规则。importmathdefcheck_angle_within_tolerance(xy,tolerance_degrees5):p1,p2xy[0]dxp2[0]-p1[0]dyp2[1]-p1[1]angle_degreesmath.degrees(math.atan2(abs(dy),abs(dx)))ifdx!0else90returnabs(angle_degrees-0)tolerance_degrees is_glue_uprightcheck_angle_within_tolerance(results[0].keypoints.xy)is_glue_upright 部署说明Notebook 原流程包含在线部署。这里保留部署入口说明便于接入你自己的发布流程。project.version(dataset.version).deploy(model_typeyolov8,model_pathf{HOME}/runs/pose/train/)☁️ 云端推理示例云端推理适合部署后的快速验证这里保留调用示例。# Run inference on your model on a persistant, auto-scaling, cloud API# Load modelmodelproject.version(dataset.version).modelassertmodel,Model deployment is still loading# Choose a random test imageimportos,random test_set_locdataset.location/test/images/random_test_imagerandom.choice(os.listdir(test_set_loc))print(running inference on random_test_image)predmodel.predict(test_set_locrandom_test_image).json()pred 小结姿态估计除了训练本身更重要的是关键点后处理和业务规则。先把关键点可视化跑通再做角度判断会更稳。这一类 notebook 建议按“先环境、再数据、再单样例、最后批量推理”的顺序复现。遇到报错时优先检查 GPU、依赖版本、数据集目录和模型权重路径。后续我会继续按源项目顺序整理同系列中的目标检测、实例分割、OCR、多目标跟踪和视觉大模型教程。 同系列教程汇总Google Gemini 3.5 Flash 零样本目标检测教程从提示词到可视化结果GLM-OCR 文档识别实战教程从验证码、公式到车牌 OCRRF-DETR ByteTrack 多目标跟踪实战教程从命令行到 Python 视频轨迹可视化SAM 3 图像分割实战教程文本、框和点提示的多种分割方式SAM 3 视频分割实战教程用文本提示分割并跟踪视频中的目标YOLOv8 姿态估计实战关键点训练、角度判断与部署-本文
YOLOv8 姿态估计实战:关键点训练、角度判断与部署
发布时间:2026/7/16 17:20:29
YOLOv8 姿态估计实战关键点训练、角度判断与部署这篇教程根据我复现 YOLOv8 姿态估计流程时整理重点演示如何训练关键点模型、读取 keypoints 结果、判断姿态并完成部署。YOLOv8 的姿态估计和目标检测相比核心差异在于输出的是关键点而不是框。本文适合做关键点检测、姿态判断和工业检测的入门模板。本文会重点跑通以下流程安装 YOLOv8 姿态依赖从数据集后台获取关键点数据训练姿态估计模型读取 keypoints 并可视化做姿态角度判断和部署如果你正在系统学习目标检测、实例分割、OCR、多目标跟踪或视觉大模型建议收藏本文配套 notebook、示例图片和运行环境说明后续会继续整理。如果环境配置卡住可以在评论区说明具体报错。 文章目录YOLOv8 姿态估计实战关键点训练、角度判断与部署⚙️ 环境准备 从数据集后台获取关键点数据️ 开始训练 推理与可视化 姿态判断 部署说明☁️ 云端推理示例 小结 同系列教程汇总⚙️ 环境准备先检查运行环境并安装依赖。建议优先使用带 NVIDIA GPU 的环境避免推理和训练阶段显存不足。!nvidia-smiimportos HOMEos.getcwd()print(HOME)!pip install ultralytics8.2.103-q# prevent ultralytics from tracking your activity!yolo settings syncFalseimportultralytics ultralytics.checks()fromultralyticsimportYOLOfromIPython.displayimportdisplay,Image 从数据集后台获取关键点数据下面按 notebook 原流程继续执行。!mkdir-p{HOME}/datasets%cd{HOME}/datasetsfromtypesimportSimpleNamespace# 从数据集后台下载关键点数据集后修改 DATASET_DIR 指向解压目录。DATASET_DIR/content/dataset# 修改为数据集后台导出的数据集目录datasetSimpleNamespace(locationDATASET_DIR)importyamlwithopen(f{dataset.location}/data.yaml,r)asf:dataset_yamlyaml.safe_load(f)dataset_yaml[train]../train/imagesdataset_yaml[val]../valid/imagesdataset_yaml[test]../test/imageswithopen(f{dataset.location}/data.yaml,w)asf:yaml.dump(dataset_yaml,f)️ 开始训练关键点模型的训练流程和检测略有不同但核心还是数据路径和权重路径。%cd{HOME}fromultralyticsimportYOLO modelYOLO(yolov8n-pose.pt)resultsmodel.train(dataf{dataset.location}/data.yaml,epochs100,imgsz640) 推理与可视化先把关键点预测可视化确认骨架和顶点位置正确。%cd{HOME}modelYOLO(runs/pose/train/weights/best.pt)importosimportrandom random_filerandom.choice(os.listdir(f{dataset.location}/test/images))file_nameos.path.join(f{dataset.location}/test/images,random_file)resultsmodel(file_name)print(results[0])# Bug in Google Colabimportlocale locale.getpreferredencodinglambda:UTF-8!pip install supervision0.24.0-qimportsupervisionassvimportcv2 key_pointssv.KeyPoints.from_ultralytics(results[0])vertex_annotatorsv.VertexAnnotator(radius3,colorsv.Color.WHITE)edge_annotatorsv.EdgeAnnotator(thickness2,edges[(0,1)])annotated_framecv2.imread(file_name)annotated_frameedge_annotator.annotate(sceneannotated_frame,key_pointskey_points)annotated_framevertex_annotator.annotate(sceneannotated_frame,key_pointskey_points)annotated_framesv.resize_image(annotated_frame,resolution_wh(900,900),keep_aspect_ratioTrue)sv.cv2_to_pillow(annotated_frame) 姿态判断姿态判断通常是关键点结果上的业务规则。importmathdefcheck_angle_within_tolerance(xy,tolerance_degrees5):p1,p2xy[0]dxp2[0]-p1[0]dyp2[1]-p1[1]angle_degreesmath.degrees(math.atan2(abs(dy),abs(dx)))ifdx!0else90returnabs(angle_degrees-0)tolerance_degrees is_glue_uprightcheck_angle_within_tolerance(results[0].keypoints.xy)is_glue_upright 部署说明Notebook 原流程包含在线部署。这里保留部署入口说明便于接入你自己的发布流程。project.version(dataset.version).deploy(model_typeyolov8,model_pathf{HOME}/runs/pose/train/)☁️ 云端推理示例云端推理适合部署后的快速验证这里保留调用示例。# Run inference on your model on a persistant, auto-scaling, cloud API# Load modelmodelproject.version(dataset.version).modelassertmodel,Model deployment is still loading# Choose a random test imageimportos,random test_set_locdataset.location/test/images/random_test_imagerandom.choice(os.listdir(test_set_loc))print(running inference on random_test_image)predmodel.predict(test_set_locrandom_test_image).json()pred 小结姿态估计除了训练本身更重要的是关键点后处理和业务规则。先把关键点可视化跑通再做角度判断会更稳。这一类 notebook 建议按“先环境、再数据、再单样例、最后批量推理”的顺序复现。遇到报错时优先检查 GPU、依赖版本、数据集目录和模型权重路径。后续我会继续按源项目顺序整理同系列中的目标检测、实例分割、OCR、多目标跟踪和视觉大模型教程。 同系列教程汇总Google Gemini 3.5 Flash 零样本目标检测教程从提示词到可视化结果GLM-OCR 文档识别实战教程从验证码、公式到车牌 OCRRF-DETR ByteTrack 多目标跟踪实战教程从命令行到 Python 视频轨迹可视化SAM 3 图像分割实战教程文本、框和点提示的多种分割方式SAM 3 视频分割实战教程用文本提示分割并跟踪视频中的目标YOLOv8 姿态估计实战关键点训练、角度判断与部署-本文