雷锋网 AI 科技评论按:本文由上海交通大学的方浩树为 AI 科技评论所撰写的独家解读稿件,未经许可不得转载。
下面要介绍的论文发表于 CVPR 2018,题为「Weakly and Semi Supervised Human Body Part Parsing via Pose-Guided Knowledge Transfer」。
arXiv地址:https://arxiv.org/abs/1805.04310
人体部位解析,或称人类语义部位分割,是许多计算机视觉任务的基础。在传统的语义分割方法中,我们需要提供手工标注的标签,以便使用全卷积网络(FCN)进行端到端的训练。虽然过去的方法能达到不错的效果,但它们的性能高度依赖于训练数据的数量和质量。
在本文中,我们提出了一种获得训练数据的新方法,它可以使用容易获得的人体关键点的数据来生成人体部位解析数据。我们的主要想法是利用人类之间的形态相似性,将一个人的部位解析结果传递给具有相似姿势的另一个人。使用我们生成的结果作为额外的训练数据,我们的半监督模型在 PASCAL-Person-Part 数据集上优于强监督的方法 6 个 mIOU,并且达到了最好的人类部位解析结果。我们的方法具有很好的通用性。它可以容易地扩展到其他物体或动物的部位解析任务中,只要它们的形态相似性可以由关键点表示。我们的模型和源代码公开在: https://github.com/MVIG-SJTU/WSHP
人体部分解析给出了人类的详细语义分割,并将人解析为不同的身体部位。这种像素级的身体部位信息对于人的行为理解非常重要,并且在各种视觉任务中具有巨大的应用潜力,例如人机交互和识别人-物体交互关系。为了更加精细地对人的行为进行分析,关键的一点在于能够将人体的各个部分分割出来。但是这个问题很难,标注训练样本十分费时而且成本很高;也正是因为这样,目前这方面最大的数据集也只有少于 2000 个用于训练的标注数据。而另一方面,人体关键点(人体姿态)由于标注比较轻松,所以目前有非常多的标注数据。所以我们就考虑是否可以利用人体姿态的数据,通过知识迁移来帮助人体部分分割标注的任务。
由于物理解剖学限制,具有相同姿势的人将具有相似的形态。如图所示,给定一个人,我们可以使用他/她的关键点在已有的少量标注过的 human body part parsing 数据集中搜索具有相似姿势的人。然后对这些人对应的部位解析结果进行平均,形成人体部位分布的先验概率。通过这种方式,我们可以将稀疏的人体关键点转换为细粒度的身体部分分割。之后我们再将该先验概率图与原始输入图像相结合,输入神经网络,最后生成准确的部位分割结果。这些生成的部位分割可以用作额外训练数据来训练人类解析网络。
具体的方法共分为三步:输入带有关键点的图片+已有的部分分割数据集,首先根据关键点进行聚类,也即找到与输入图片相似的标注分割图片;然后对找到的部位解析结果进行对齐、变形,再求平均得到人体部位分布的先验概率;最后一步则是基于先验概率进行预测真实的人体部位解析结果。
1)Discovering Pose-similar Cluster
为了度量不同姿态间的相似度,首先需要对所有的姿态进行归一化和对齐,即将人体躯干长度统一,臀部关键点作为坐标原点。由此计算出输入图片中几个关键点与标注数据集中所有图片的对应关键点之间的欧氏距离,选出距离最小的 Top n 作为 similar cluster。
这里之所以选择 top n,而不是 top 1,是因为真实的人体千奇百怪(例如存在遮挡),某一个人体的分割不一定能够适用于另一个人体,所以要选择最相似的几个,在下一步生成 part-level prior 中做下平均。
2)Generating Part-level Prior
对于每个 similar cluster,存在一些不可避免的集群内姿势变化,这使得部分解析结果和待标注的人是不对齐的。因此,我们引入了姿势引导的变形方法。
对于每个身体部位,我们可以通过骨架的差异求得一个仿射变换矩阵 Q,利用该仿射变换矩阵,我们对其对应部位的 mask 做一个同样的变换,最后得到一个变形过的部位解析结果。
将所有变形过的结果加起来求平均,即可得到人体部位分布的先验概率。
3)Prior Refinement
前面通过迁移与平均得到的 part-level prior 是一个先验概率,其代表一张图片上某个像素属于某个人体部位的可能性。我们通过 refinement network 进行进一步优化,输出每个部位确定的 binary mask。Refinement Network 采用的是 U-Net 的一个变体。
首先来看,没有使用先验图训练的网络和使用了先验图训练的网络的结果对比:
从左到右分别为:输入图像、全卷积网络预测的结果、输入图像相关的 part-level prior、经过 refinement network 预测出的结果。如果有 part-level prior,预测效果会好很多。
以下是一些选自 COCO 数据集的图片,以及用我们方法生成的训练标签:
这些生成的额外数据能作为训练样本。
通过混合原始数据与我们生成的数据进行训练,我们的模型能取得当前最好的结果。
本文的模型和代码已经开源在 https://github.com/MVIG-SJTU/WSHP。同时这里也宣传一下我们最近的工作 AlphaPose. AlphaPose 是一套人体姿态估计系统,目前速度已经达到 10fps(在 COCO test-dev 集上的测试结果),准确率达到 70mAP 以上,支持 PyTorch,代码开源在 https://github.com/MVIG-SJTU/AlphaPose,欢迎各位使用。