MoveNet-谷歌轻量级人体姿态估计算法

P粉084495128
发布: 2025-07-23 13:29:02
原创
773人浏览过
MoveNet是基于heatmap的bottom-up人体姿态估计模型,含Backbone、Header和PostProcess三部分。Backbone采用Mobilenetv2+FPN;Header有四个,输出Center、KeypointHeatmap等特征图。损失函数用加权MSE和L1 Loss,权重1:1:1:1。提供训练、测试流程,可导出模型,Google有在线演示。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

movenet-谷歌轻量级人体姿态估计算法 - php中文网

MoveNet

Google提供的在线演示:https://storage.googleapis.com/tfjs-models/demos/pose-detection/index.html?model=movenet

MoveNet 是一个 Bottom-up estimation model, 使用heatmap。

网络架构

主要分为三个部分:Backbone、Header、PostProcess

  • Backbone:Mobilenetv2 + FPN
  • Header:输入为Backbone的特征图,经过各自的卷积,输出各自维度的特征图。共有四个Header:分别为Center、KeypointRegression、KeypointHeatmap、Local Offsets
    • Center:[N, 1, H, W], 这里1代表当前图像上所有人中心点的Heatmap,可以理解为关键点,只有一个,所以通道为1。提取中心点两种方式:
      • 一个人所有关键点的算术平均数。
      • 所有关键点最大外接矩形的中心点。(效果更好)
    • KeypointHeatmap:[N, K, H, W] N:Batchsize、K:关键点数量,比如17。H、W:对应特征图的大小,这里输入为192×192192×192 , 降采样四倍就是48×4848×48 。代表当前图像上所有人的关键点的Heatmap
    • KeypointRegresssion:[N, 2K, H, W] K个关键点,坐标用x,yx,y表示,那么就有2K个数据。这里x,yx,y 代表的是同一个人的关键点对于中心点的偏移值。原始MoveNet用的是特征图下的绝对偏移值,换成相对值(除以48转换到0-1),可以加快收敛。
    • LocalOffsets:[N, 2K, H, W] 对应K个关键点的坐标,这里是Offset,模型降采样特征图可能存在量化误差,比如192分辨率下x = 0 和 x= 3映射到48分辨率的特征图时坐标都变为了0;同时还有回归误差。
class MoveNet(nn.Layer):
    def __init__(self, num_classes=17, width_mult=1.,mode='train'):
        super(MoveNet, self).__init__()

        self.backbone = Backbone()

        self.header = Header(num_classes, mode)
        

        self._initialize_weights()    def forward(self, x):
        x = self.backbone(x) # n,24,48,48
        # print(x.shape)

        x = self.header(x)        # print([x0.shape for x0 in x])

        return x
登录后复制

       

损失函数

KeypointHeadmap 和 Center 采用加权MSE,平衡了正负样本。 KeypointRegression 和LocalOffsets 采用了 L1 Loss。 最终各个Loss权重设置为1:1:1:1

秒哒
秒哒

秒哒-不用代码就能实现任意想法

秒哒 349
查看详情 秒哒
loss = paddle.pow((pre-target),2) weight_mask = target*k+1paddle.pow(torch.abs(target-pre), 2) loss = loss*weight_mask
登录后复制

       

参考文献

  1. 2021轻量级人体姿态估计模型修炼之路(附谷歌MoveNet复现经验) - 知乎 (zhihu.com)
  2. fire717/movenet.pytorch: A Pytorch implementation of MoveNet from Google. Include training code and pre-train model. (github.com)
  3. https://storage.googleapis.com/tfjs-models/demos/pose-detection/index.html?model=movenet

快速开始

全流程引导进行项目生成,实现数据生成、训练、测试一体化

解压数据集

# 无需运行# !mkdir /home/aistudio/data/coco# !unzip /home/aistudio/data/data97273/annotations_trainval2017.zip -d /home/aistudio/data/coco# !unzip /home/aistudio/data/data97273/train2017.zip -d /home/aistudio/data/coco# !unzip /home/aistudio/data/data97273/val2017.zip -d /home/aistudio/data/coco# 新数据时用# Make data to adapt the data format.# %cd /home/aistudio/work/# !python scripts/make_coco_data_17keypooints.py
登录后复制
       

配置项目环境

pip install yacs
登录后复制
       

训练

cd /home/aistudio/work/
python train.py
登录后复制
       

测试

进入config.py 修改配置文件,修改测试图片路径。

cd /home/aistudio/work.
python predict.py
登录后复制
       

测试结果

MoveNet-谷歌轻量级人体姿态估计算法 - php中文网        

Heatmap

MoveNet-谷歌轻量级人体姿态估计算法 - php中文网        

导出模型

pip install paddle2onnx
python pd2onnx.py
登录后复制
   

以上就是MoveNet-谷歌轻量级人体姿态估计算法的详细内容,更多请关注php中文网其它相关文章!

谷歌浏览器
谷歌浏览器

谷歌浏览器Google Chrome是一款可让您更快速、轻松且安全地使用网络的浏览器。Google Chrome的设计超级简洁,使用起来得心应手。这里提供了谷歌浏览器纯净安装包,有需要的小伙伴快来保存下载体验吧!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号