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 + 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
Levity
AI帮你自动化日常任务
206 查看详情
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 paddle2onnxpython pd2onnx.py
以上就是MoveNet-谷歌轻量级人体姿态估计算法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/741521.html
微信扫一扫
支付宝扫一扫