【人工智能】【Python】计算机视觉人体姿态估计实验(YOLOv11)

我总结了论文的计算机视觉人体姿态估计实验。实验旨在选择、搭建、训练并优化基于YOLOv11模型的人体姿态估计网络,并在现实场景中进行测试。我利用MPII Human Pose数据集进行了预处理,搭建了YOLOv11模型,该模型在目标检测基础上加入了关键点回归能力,提升了复杂姿态下的精度与实时性。最终,经过100轮训练,模型在数据集上达到了88.62%的OKS指标,验证了其在人体姿态估计任务中的有效性。

实验目的

1.基于问题需求选择并搭建合适的人体姿态估计模型;
2.对搭建的人体姿态估计模型进行训练评估并优化;
3.对优化的模型进行现实场景数据测试。

实验原理

人体姿态估计的核心目标是从图像中精准定位人体关键关节(如头、颈、肩、肘、腕、髋、膝、踝等),并建立关节间的空间关联,形成完整的人体姿态描述。其本质是结合图像语义分割技术与关键特征点提取的深度学习任务,既要捕捉人体整体的高级语义信息,又要保留关节位置的精细空间信息,最终实现像素级的姿态结构化识别。

卷积姿势机(CPM)作为早期经典的端到端人体姿态估计模型,核心通过多阶段卷积回归实现关节位置的逐步优化。首先在全局特征阶段,依托深层卷积网络(VGG19)提取图像全局语义特征,捕捉人体整体姿态结构(如站立、弯腰等),初步预测所有关节的大致位置,保障姿态的整体合理性;随后在局部特征阶段,针对全局预测中误差较大的难关节(如被遮挡的肘、踝),通过局部区域裁剪与精细化卷积操作,聚焦关节周围的纹理、边缘等细节特征,修正关节坐标以提升局部定位精度;监督信号设计上,每个阶段均以关节坐标偏移量为目标,借助 L2 损失函数最小化预测坐标与真实标注的差异,实现端到端训练。该模型的优势在于能平衡整体姿态合理性与局部关节精度,适用于单人、无严重遮挡的姿态估计场景,如动作捕捉、健身姿态矫正等。

实验环境

系统环境基础配置信息

CPU 12th Gen Intel(R) Core(TM) i7-12650H
GPU NVIDIA GeForce RTX 4060 Laptop
内存大小 32G
网络带宽 100Mbps
操作系统 Windows11

实验环境基础配置信息

CUDA 12.9
Python 3.9
PyTorch 2.8

实验内容及步骤

数据集下载与预处理

(1)本项目使用MPII Human Pose数据集,MPII Human Pose数据集是评估关节式姿势估计的最新基准。该数据集包含约25K图像,其中包含超过4万名带注释的人体关节的人
(2)下载数据集并解压至当前目录。
(3)据集预处理,将MPII数据集格式转换为YOLO格式

搭建人体姿态估计网络

图片[1] - AI科研 编程 读书笔记 - 【人工智能】【Python】计算机视觉人体姿态估计实验(YOLOv11) - AI科研 编程 读书笔记 - 小竹の笔记本

YOLO的全名是:You Only Look Once,表示只需要看一次即可完成识别,主要是为了与之前的两阶段(看两次)进行区分。我们人类看到某个场景时,并不会先看一下有没有物体,物体在哪,然后再确定这个物体是什么,而是“只看一次”,就完成目标位置和内容的判断。

YOLO11系列是YOLO家族中最先进、最轻量级、最高效的模型,其表现优于其前辈。它由Ultralytics创建,该组织发布了YOLOv8,这是迄今为止最稳定、使用最广泛的YOLO变体。

YOLO11是Ultralytics的YOLO系列的最新版本。YOLO11配备了超轻量级模型,比以前的YOLO更快、更高效。YOLO11能够执行更广泛的计算机视觉任务。Ultralytics根据规模发布了五种YOLO11模型,在所有任务中发布了25种模型:

YOLO11n——适用于小型和轻量级任务的Nano(微型模型)。
YOLO11s——Nano的小幅升级,具有更高的准确性。
YOLO11m——适合通用的中等版本。
YOLO11l——大型,可实现更高的准确度和更高的计算量。
YOLO11x——超大尺寸,可实现最高准确度和性能。

图片[2] - AI科研 编程 读书笔记 - 【人工智能】【Python】计算机视觉人体姿态估计实验(YOLOv11) - AI科研 编程 读书笔记 - 小竹の笔记本
图片[3] - AI科研 编程 读书笔记 - 【人工智能】【Python】计算机视觉人体姿态估计实验(YOLOv11) - AI科研 编程 读书笔记 - 小竹の笔记本
图片[4] - AI科研 编程 读书笔记 - 【人工智能】【Python】计算机视觉人体姿态估计实验(YOLOv11) - AI科研 编程 读书笔记 - 小竹の笔记本

YOLOv11也能用于人体姿态估计,因为它在原有目标检测的基础上加入了关键点回归能力:模型先定位人体框,再在框内预测各个关键点的位置。得益于更高效的主干网络和更稳定的特征提取,它在多人场景、复杂姿态下都能保持较好的精度和实时性,所以非常适合做姿态估计。

下方代码展示如何快速搭建一个YOLOv11模型。

# model.py
from ultralytics import YOLO

class YOLOv11Model:
    def __init__(self, model_path='yolo11n.pt'):
        """
        model_path: 可以是本地权重文件路径(.pt)或模型配置(例如'yolo11n.pt')
        """
        self.model = YOLO(model_path)

    def train(self, **kwargs):
        """直接把所有训练参数透传给 ultralytics YOLO.train"""
        return self.model.train(**kwargs)

    def validate(self, data_yaml=None, **kwargs):
        """
        支持两种调用方式:
        - validate(data_yaml='datasets/.../dataset.yaml', imgsz=640, conf=0.25, iou=0.45)
        - validate(data='datasets/.../dataset.yaml', imgsz=640, ...)
        会把 data_yaml 自动映射为 data 并将其它 kwargs 透传给 self.model.val(...)
        """
        if data_yaml is not None:
            # 如果用户用了 data_yaml 参数名,映射到 ultralytics 的 data 参数名
            kwargs['data'] = data_yaml
        return self.model.val(**kwargs)

    def predict(self, source, **kwargs):
        """
        source: 图片目录、视频文件或字符串(详见 ultralytics API)
        其余参数(imgsz/conf/iou/save/...)一并透传
        """
        return self.model.predict(source, **kwargs)

    def export(self, format='onnx', **kwargs):
        """导出模型,format = 'onnx'/'torchscript'/...,其余参数透传"""
        return self.model.export(format=format, **kwargs)

    def load_weights(self, weights_path):
        """重新用给定权重构建/加载模型实例"""
        self.model = YOLO(weights_path)

    def get_model(self):
        """返回底层 ultralytics YOLO 对象"""
        return self.model

评价模型

(1)模型训练

图片[5] - AI科研 编程 读书笔记 - 【人工智能】【Python】计算机视觉人体姿态估计实验(YOLOv11) - AI科研 编程 读书笔记 - 小竹の笔记本
图片[6] - AI科研 编程 读书笔记 - 【人工智能】【Python】计算机视觉人体姿态估计实验(YOLOv11) - AI科研 编程 读书笔记 - 小竹の笔记本
图片[7] - AI科研 编程 读书笔记 - 【人工智能】【Python】计算机视觉人体姿态估计实验(YOLOv11) - AI科研 编程 读书笔记 - 小竹の笔记本

(2)计算评价指标OKS

图片[8] - AI科研 编程 读书笔记 - 【人工智能】【Python】计算机视觉人体姿态估计实验(YOLOv11) - AI科研 编程 读书笔记 - 小竹の笔记本
图片[9] - AI科研 编程 读书笔记 - 【人工智能】【Python】计算机视觉人体姿态估计实验(YOLOv11) - AI科研 编程 读书笔记 - 小竹の笔记本

OKS指标:88.62%,使用YOLOv11 Large模型在完整的MPII数据集上训练100轮。

模型预测

从我们的预测数据集中抽5个图片来看看预测的效果,展示一下原图、标签图和预测结果。

图片[10] - AI科研 编程 读书笔记 - 【人工智能】【Python】计算机视觉人体姿态估计实验(YOLOv11) - AI科研 编程 读书笔记 - 小竹の笔记本
图片[11] - AI科研 编程 读书笔记 - 【人工智能】【Python】计算机视觉人体姿态估计实验(YOLOv11) - AI科研 编程 读书笔记 - 小竹の笔记本
图片[12] - AI科研 编程 读书笔记 - 【人工智能】【Python】计算机视觉人体姿态估计实验(YOLOv11) - AI科研 编程 读书笔记 - 小竹の笔记本
图片[13] - AI科研 编程 读书笔记 - 【人工智能】【Python】计算机视觉人体姿态估计实验(YOLOv11) - AI科研 编程 读书笔记 - 小竹の笔记本

© 版权声明
THE END
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容

【C++】小竹的C++学习笔记分享 | 78篇体系化文档×4.7 万字(PDF 可下载) - AI科研 编程 读书笔记 - 小竹の笔记本
订阅本站更新 - AI科研 编程 读书笔记 - 小竹の笔记本
【日常】2025年度总结(重磅手敲8K字) - AI科研 编程 读书笔记 - 小竹の笔记本