news 2026/7/16 17:20:25

YOLOv8 姿态估计实战:关键点训练、角度判断与部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
YOLOv8 姿态估计实战:关键点训练、角度判断与部署

YOLOv8 姿态估计实战:关键点训练、角度判断与部署


这篇教程根据我复现 YOLOv8 姿态估计流程时整理,重点演示如何训练关键点模型、读取 keypoints 结果、判断姿态并完成部署。

YOLOv8 的姿态估计和目标检测相比,核心差异在于输出的是关键点而不是框。本文适合做关键点检测、姿态判断和工业检测的入门模板。

本文会重点跑通以下流程:

  • 安装 YOLOv8 姿态依赖
  • 从数据集后台获取关键点数据
  • 训练姿态估计模型
  • 读取 keypoints 并可视化
  • 做姿态角度判断和部署

如果你正在系统学习目标检测、实例分割、OCR、多目标跟踪或视觉大模型,建议收藏本文;配套 notebook、示例图片和运行环境说明后续会继续整理。如果环境配置卡住,可以在评论区说明具体报错。

📚 文章目录

  • YOLOv8 姿态估计实战:关键点训练、角度判断与部署
    • ⚙️ 环境准备
    • 📦 从数据集后台获取关键点数据
    • 🏋️ 开始训练
    • 🧪 推理与可视化
    • 📐 姿态判断
    • 📤 部署说明
    • ☁️ 云端推理示例
    • 📌 小结
    • 📚 同系列教程汇总

⚙️ 环境准备

先检查运行环境并安装依赖。建议优先使用带 NVIDIA GPU 的环境,避免推理和训练阶段显存不足。

!nvidia-smi
importos HOME=os.getcwd()print(HOME)
!pip install ultralytics==8.2.103-q# prevent ultralytics from tracking your activity!yolo settings sync=Falseimportultralytics ultralytics.checks()
fromultralyticsimportYOLOfromIPython.displayimportdisplay,Image

📦 从数据集后台获取关键点数据

下面按 notebook 原流程继续执行。

!mkdir-p{HOME}/datasets%cd{HOME}/datasetsfromtypesimportSimpleNamespace# 从数据集后台下载关键点数据集后,修改 DATASET_DIR 指向解压目录。DATASET_DIR="/content/dataset"# 修改为数据集后台导出的数据集目录dataset=SimpleNamespace(location=DATASET_DIR)
importyamlwithopen(f"{dataset.location}/data.yaml",'r')asf:dataset_yaml=yaml.safe_load(f)dataset_yaml["train"]="../train/images"dataset_yaml["val"]="../valid/images"dataset_yaml["test"]="../test/images"withopen(f"{dataset.location}/data.yaml",'w')asf:yaml.dump(dataset_yaml,f)

🏋️ 开始训练

关键点模型的训练流程和检测略有不同,但核心还是数据路径和权重路径。

%cd{HOME}fromultralyticsimportYOLO model=YOLO('yolov8n-pose.pt')results=model.train(data=f"{dataset.location}/data.yaml",epochs=100,imgsz=640)

🧪 推理与可视化

先把关键点预测可视化,确认骨架和顶点位置正确。

%cd{HOME}model=YOLO('runs/pose/train/weights/best.pt')importosimportrandom random_file=random.choice(os.listdir(f"{dataset.location}/test/images"))file_name=os.path.join(f"{dataset.location}/test/images",random_file)results=model(file_name)print(results[0])
# Bug in Google Colabimportlocale locale.getpreferredencoding=lambda:"UTF-8"
!pip install supervision==0.24.0-qimportsupervisionassvimportcv2 key_points=sv.KeyPoints.from_ultralytics(results[0])vertex_annotator=sv.VertexAnnotator(radius=3,color=sv.Color.WHITE)edge_annotator=sv.EdgeAnnotator(thickness=2,edges=[(0,1)])annotated_frame=cv2.imread(file_name)annotated_frame=edge_annotator.annotate(scene=annotated_frame,key_points=key_points)annotated_frame=vertex_annotator.annotate(scene=annotated_frame,key_points=key_points)annotated_frame=sv.resize_image(annotated_frame,resolution_wh=(900,900),keep_aspect_ratio=True)sv.cv2_to_pillow(annotated_frame)

📐 姿态判断

姿态判断通常是关键点结果上的业务规则。

importmathdefcheck_angle_within_tolerance(xy,tolerance_degrees=5):p1,p2=xy[0]dx=p2[0]-p1[0]dy=p2[1]-p1[1]angle_degrees=math.degrees(math.atan2(abs(dy),abs(dx)))ifdx!=0else90returnabs(angle_degrees-0)<=tolerance_degrees is_glue_upright=check_angle_within_tolerance(results[0].keypoints.xy)is_glue_upright

📤 部署说明

Notebook 原流程包含在线部署。这里保留部署入口说明,便于接入你自己的发布流程。

project.version(dataset.version).deploy(model_type="yolov8",model_path=f"{HOME}/runs/pose/train/")

☁️ 云端推理示例

云端推理适合部署后的快速验证,这里保留调用示例。

# Run inference on your model on a persistant, auto-scaling, cloud API# Load modelmodel=project.version(dataset.version).modelassertmodel,"Model deployment is still loading"# Choose a random test imageimportos,random test_set_loc=dataset.location+"/test/images/"random_test_image=random.choice(os.listdir(test_set_loc))print("running inference on "+random_test_image)pred=model.predict(test_set_loc+random_test_image).json()pred

📌 小结

姿态估计除了训练本身,更重要的是关键点后处理和业务规则。先把关键点可视化跑通,再做角度判断会更稳。

这一类 notebook 建议按“先环境、再数据、再单样例、最后批量推理”的顺序复现。遇到报错时,优先检查 GPU、依赖版本、数据集目录和模型权重路径。

后续我会继续按源项目顺序整理同系列中的目标检测、实例分割、OCR、多目标跟踪和视觉大模型教程。

📚 同系列教程汇总

  • Google Gemini 3.5 Flash 零样本目标检测教程:从提示词到可视化结果

  • GLM-OCR 文档识别实战教程:从验证码、公式到车牌 OCR

  • RF-DETR + ByteTrack 多目标跟踪实战教程:从命令行到 Python 视频轨迹可视化

  • SAM 3 图像分割实战教程:文本、框和点提示的多种分割方式

  • SAM 3 视频分割实战教程:用文本提示分割并跟踪视频中的目标

  • YOLOv8 姿态估计实战:关键点训练、角度判断与部署-本文

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/16 17:16:38

OpenClaw Skill:轻量级智能体行为协议与零代码执行原理

1. OpenClaw Skill到底是什么&#xff1a;不是插件&#xff0c;也不是脚本&#xff0c;而是一套可执行的智能体行为协议 OpenClaw Skill这个词最近在开发者社区里频繁刷屏&#xff0c;尤其在2026年初的几场技术分享会上被反复提及。但很多人点开GitHub仓库、翻完文档、甚至跑通…

作者头像 李华
网站建设 2026/7/16 17:15:45

5分钟告别平台切换烦恼:Simple Live一站式直播聚合解决方案

5分钟告别平台切换烦恼&#xff1a;Simple Live一站式直播聚合解决方案 【免费下载链接】dart_simple_live 简简单单的看直播 项目地址: https://gitcode.com/GitHub_Trending/da/dart_simple_live 你是否经历过这样的场景&#xff1f;晚上想看看喜欢的游戏直播&#xf…

作者头像 李华
网站建设 2026/7/16 17:15:06

构建主动防御体系:SIP态势感知如何成为企业的“安全大脑”

1. SIP态势感知&#xff1a;企业安全防御体系的"智慧中枢" 想象一下&#xff0c;如果企业的网络安全系统是一个人体&#xff0c;那么SIP态势感知平台就是其中的"大脑"。这个比喻可能有些老套&#xff0c;但确实非常贴切。就像大脑通过神经系统感知身体各部…

作者头像 李华
网站建设 2026/7/16 17:14:17

koa-jwt与JWKS集成:如何实现动态密钥管理和OAuth 2.0兼容

koa-jwt与JWKS集成&#xff1a;如何实现动态密钥管理和OAuth 2.0兼容 【免费下载链接】jwt Koa middleware for validating JSON Web Tokens 项目地址: https://gitcode.com/gh_mirrors/jwt2/jwt 在现代Web应用开发中&#xff0c;JSON Web Token (JWT) 已经成为身份验证…

作者头像 李华
网站建设 2026/7/16 17:14:17

单片机总线技术:原理、架构与优化实践

1. 单片机总线基础概念解析在嵌入式系统开发中&#xff0c;总线&#xff08;Bus&#xff09;是连接单片机与各外设之间的高速公路网络。就像城市中的交通网络连接各个区域一样&#xff0c;总线系统负责在单片机内部和外部传递各类关键信息。根据功能不同&#xff0c;单片机总线…

作者头像 李华
网站建设 2026/7/16 17:14:11

cuSignal软件定义无线电(SDR)应用:实时信号解调与处理完整教程

cuSignal软件定义无线电(SDR)应用&#xff1a;实时信号解调与处理完整教程 【免费下载链接】cusignal cuSignal - RAPIDS Signal Processing Library 项目地址: https://gitcode.com/gh_mirrors/cu/cusignal cuSignal是RAPIDS开源生态系统中的高性能信号处理库&#xff…

作者头像 李华