当前位置: 首页 > AI > 文章内容页

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

时间:2025-07-23    作者:游乐小编    

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

movenet-谷歌轻量级人体姿态估计算法 - 游乐网

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 + FPNHeader:输入为Backbone的特征图,经过各自的卷积,输出各自维度的特征图。共有四个Header:分别为Center、KeypointRegression、KeypointHeatmap、Local OffsetsCenter:[N, 1, H, W], 这里1代表当前图像上所有人中心点的Heatmap,可以理解为关键点,只有一个,所以通道为1。提取中心点两种方式:一个人所有关键点的算术平均数。所有关键点最大外接矩形的中心点。(效果更好)KeypointHeatmap:[N, K, H, W] N:Batchsize、K:关键点数量,比如17。H、W:对应特征图的大小,这里输入为192×192192×192 , 降采样四倍就是48×4848×48 。代表当前图像上所有人的关键点的HeatmapKeypointRegresssion:[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

loss = paddle.pow((pre-target),2) weight_mask = target*k+1paddle.pow(torch.abs(target-pre), 2) loss = loss*weight_mask
登录后复制

       

参考文献

2024轻量级人体姿态估计模型修炼之路(附谷歌MoveNet复现经验) - 知乎 (zhihu.com)fire717/movenet.pytorch: A Pytorch implementation of MoveNet from Google. Include training code and pre-train model. (github.com)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-谷歌轻量级人体姿态估计算法 - 游乐网        

Heatmap

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

导出模型

pip install paddle2onnxpython pd2onnx.py
登录后复制    

热门推荐

更多

热门文章

更多

首页  返回顶部

本站所有软件都由网友上传,如有侵犯您的版权,请发邮件youleyoucom@outlook.com