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
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×192 , 降采样四倍就是48×48 。代表当前图像上所有人的关键点的Heatmap
- KeypointRegresssion:[N, 2K, H, W] K个关键点,坐标用x,y表示,那么就有2K个数据。这里x,y 代表的是同一个人的关键点对于中心点的偏移值。原始MoveNet用的是特征图下的绝对偏移值,换成相对值(除以48转换到0-1),可以加快收敛。
- LocalOffsets:[N, 2K, H, W] 对应K个关键点的坐标,这里是Offset,模型降采样特征图可能存在量化误差,比如192分辨率下x = 0 和 x= 3映射到48分辨率的特征图时坐标都变为了0;同时还有回归误差。
- Center:[N, 1, H, W], 这里1代表当前图像上所有人中心点的Heatmap,可以理解为关键点,只有一个,所以通道为1。提取中心点两种方式:
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
参考文献
- 2021轻量级人体姿态估计模型修炼之路(附谷歌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
测试结果
Heatmap
导出模型
pip install paddle2onnx python pd2onnx.py











