一、复现知乎
万字长文 | 手把手教你优化轻量姿态估计模型(算法篇) - 知乎 (zhihu.com)
自己根据大佬教程,复现shufflenetv2+deeppsoe 的regression方法:
首先对比shufflenetv2_heatmap 与resenet50_deeppose的config:
最主要的区别在于model的配置:
Shufflenet 基于mmcls的预训练模型,resnet为pytorch 预训练模型。
Keypoint_head的区别。
Inchannels 不同。
损失函数heatmap 方法使用MSELOSS,而regression使用SmoothL1LOSS。
因此将Shufflenet的config配置文件中的model改为如下图所示,其他配置参看考resnet50 的topdown和regression的差异:
需要添加avrgpolling层。
转onnx测试,转之前修改代码
tools/deployment/pytorch2onnx.py 中的
parser.add_argument('checkpoint', help='checkpoint file')
修改为
parser.add_argument('--checkpoint', default=None, required=False, help='checkpoint file')
再执行:
python tools/deployment/pytorch2onnx.py configs/body/2d_kpt_sview_rgb_img/deeppose/mpii/shufflenetv2_mpii_256x256.py --shape 1 3 256 256
成功后并通过命令行查看
python -m onnxsim tools\deployment\tmp.onnx tmp-sim.onnx
和大佬的模型参数一致
训练模型:这里训练了10个迭代