电子科大提出 “姿态蒸馏” 算法-实现快速人体姿态估计

来源:我爱计算机视觉
转载自我爱计算机视觉,未经允许不得二次转载
今天要跟大家分享的文章《Fast Human Pose Estimation》希望用知识蒸馏的方法获得“模型小计算复杂度低”的易于在边缘设备部署的模型,作者分别来自电子科技大学和Vision Semantics公司。

file


一、姿态估计的任务

人体姿态估计即在含有人体图像中定位出人体的关节点。如下图所示:
file

姿态估计对于人体行为分析具有重要价值,目前该问题已经成为学术界研究热点,但大部分著述往往关注在设计网络学习更加适合的特征使得定位精度更高,较少研究模型实际部署时面临的模型较大和计算复杂度高的问题。

该文研究的问题即希望保持精度不受太大影响,但大幅度减小模型size,降低模型复杂度,使之更加适合实际应用。


二、算法思想

作者通过两种方式实现上述目标:设计更加轻量级的Hourglass网络和知识蒸馏。

知识蒸馏,包括Teacher 网络和Student网络,一般的做法是使用已经训练好的精度高复杂度高的Teacher网络的输出结果(预测的标签或者最后一层特征层结果)作为Student网络的监督信息训练Student网络。

“知识蒸馏”的名字很有意思,好像知识被浓缩了^_^

请看下图:

file

图中(a)子图中作者展示了目前姿态估计中使用较多的Hourglass网络,从两个方面对其进行了改进。

轻量级网络架构将原始网络中使用8个Hourglass单元减小为使用4个,同时输入Hourglass网络前的特征图由256个减小为128个。

图中(b)子图作者展示使用原始网络训练Teacher网络。

图中(c)子图展示使用知识蒸馏,在训练student网络时其监督信息不仅来自Teacher网络,还有数据库上的原始标签。


值得一提的是此处“姿态知识蒸馏”的损失函数。

file

其由两部分组成,Lmse为姿态估计数据集上的标签与Student网络预测结果的均方误差,Lpd为Teacher网络输出结果与Student网络预测结果的均方误差。

通过Teacher网络的监督信息的加入,弥补了每一步训练“局部数据集”上标签错误、部分遮挡等问题,也有利于学习到Teacher网络已经从大量样本学到的关于人体姿态的先验信息。

下图列举了Teacher网络可作为监督标签有力补充的例子。

file

仔细想想这个损失函数其实是很自然的,就像教与学的过程,不仅需要老师传授知识,学生也要在真实问题中一步步练习。

三、实验结果

作者在MPII和LSP数据集上进行了实现,所提出的方法“快速姿态蒸馏”FPD都取得了与该库中最好结果可比较的精度,但模型size只有3M,计算复杂度只有1/6到1/7。

file

file

结果还是蛮吸引人的!

FPD姿态估计的图片示例:

file

论文地址:

https://arxiv.org/abs/1811.05419v1


虽然该文没有开源代码,但其使用的Teacher网络Stacked_Hourglass_Network在Github上有多个实现,Student网络可以很方便地在其基础上修改出来。
Torch7版
https://github.com/princeton-vl/pose-hg-train
TensorFlow版
https://github.com/wbenbihi/hourglasstensorlfow
Keras版
https://github.com/yuanyuanli85/Stacked_Hourglass_Network_Keras
PyTorch版
https://github.com/Naman-ntc/Pytorch-Human-Pose-Estimation




推荐阅读
【论文整理】CVPR2018 人体姿态相关