相关介绍
什么是人体骨骼关键点检测?
-
人体骨骼关键点检测也称为Pose Estimation,主要检测人体的关节、五官等,通过关键点描述人体骨骼信息。如下图所示。
应用
- 人体骨骼关键点检测是计算机视觉的基础性算法之一,在计算机视觉的其他相关领域的研究中都起到了基础性的作用,如行为识别、人物跟踪、步态识别等相关领域。具体应用主要集中在智能视频监控,病人监护系统,人机交互,虚拟现实,人体动画,智能家居,智能安防,运动员辅助训练等等。
挑战
- 由于人体具有相当的柔性,会出现各种姿态和形状,人体任何一个部位的微小变化都会产生一种新的姿态,同时其关键点的可见性受穿着、姿态、视角等影响非常大,而且还面临着遮挡、光照、雾等环境的影响,除此之外,2D人体关键点和3D人体关键点在视觉上会有明显的差异,身体不同部位都会有视觉上缩短的效果(foreshortening),使得人体骨骼关键点检测成为计算机视觉领域中一个极具挑战性的课题。
人体骨骼关键点检测
人体骨骼关键点检测方法主要分两周:自上而下和自下而上。
- 自上而下:先检测人体,在检测单人人体关键点。
- 自下而上:先将图片中所有的关键点检测出来,再进行关键点聚类。
关键点的ground truth
coordinate:坐标
直接将关键点坐标作为最后网络需要回归的目标,这样可以得到每个坐标点的直接位置信息
heatmap:热图
每一类坐标用一个概率图来表示,对图片中的每个像素位置都给一个概率,表示该点属于对应类别关键点的概率。距离关键点位置越近的像素点的概率越接近于1,距离关键点越远的像素点的概率越接近于0。具体的一般使用高斯函数来模拟。
offset:偏移量
表示距离目标关键点一定范围内的像素位置与目标关键点之间的关系。
自上而下的关键点检测方法
Convolutional Pose Machines:本论文将深度学习应用于人体姿态分析,同时用卷积图层表达纹理信息和空间信息。主要网络结构分为多个stage,其中第一个stage会产生初步的关键点的检测效果,接下来的几个stage均以前一个stage的预测输出和从原图提取的特征作为输入,进一步提高关键点的检测效果。具体的流程图如下图(摘自论文[1])所示。
Cascaded Pyramid Network for Multi-Person Pose Estimation:本论文将深度学习应用于人体姿态分析,同时用卷积图层表达纹理信息和空间信息。主要网络结构分为多个stage,其中第一个stage会产生初步的关键点的检测效果,接下来的几个stage均以前一个stage的预测输出和从原图提取的特征作为输入,进一步提高关键点的检测效果。具体的流程图如下图(摘自论文[2])所示。
具体实现时,分为两个stage,GlobalNet和RefineNet。其中GlobalNet主要负责检测容易检测和较难检测的关键点,对于较难关键点的检测,主要体现在网络的较深层,通过进一步更高层的语义信息来解决较难检测的关键点问题;RefineNet主要解决更难或者不可见关键点的检测,这里对关键点进行难易程度进行界定主要体现在关键点的训练损失上,使用了常见的Hard Negative Mining策略,在训练时取损失较大的top-K个关键点计算损失,然后进行梯度更新,不考虑损失较小的关键点。
RMPE:本论文主要考虑的是自上而下的关键点检测算法在目标检测产生Proposals的过程中,可能会出现检测框定位误差、对同一个物体重复检测等问题。检测框定位误差,会出现裁剪出来的区域没有包含整个人活着目标人体在框内的比例较小,造成接下来的单人人体骨骼关键点检测错误;对同一个物体重复检测,虽然目标人体是一样的,但是由于裁剪区域的差异可能会造成对同一个人会生成不同的关键点定位结果。本文提出了一种方法来解决目标检测产生的Proposals所存在的问题,即通过空间变换网络将同一个人体的产生的不同裁剪区域(Proposals)都变换到一个较好的结果,如人体在裁剪区域的正中央,这样就不会产生对于一个人体的产生的不同Proposals有不同关键点检测效果。具体Pipeline如下图(摘自论文[14])所示。
自下而上的人体骨骼关键点检测方法
Part Segmentation:即对人体进行不同部位分割,而关键点都落在分割区域的特定位置,通过部位分割对关键点之间的关系进行建模,既可以显式的提供人体关键点的空间先验知识,指导网络的学习,同时在最后对不同人体关键点进行聚类时也能起到相应的连接关键点的作用。如下图(论文[4])所示。
Part Affinity Fields:
- 使用置信图进行关键节点检测,每一个关键节点对应一个置信图,图像中的每一个像素点都有一个置信度,置信图中每个点的值与ground truth的距离相关。如果检测的是多个人,将K个人的置信图合并取该点的最大值。
- 使用PAF进行身体部分组合,同时包含了位置和方向信息,每一个肢在关联的两个body part 之间都有一个亲和区域,其中的每一像素都有一个2D向量的描述方向。
网络分为两路结构,一路是上面的卷积层,用来获得置信图;一路是下面的卷积层,用来获得PAFs。网络分为多个stage,每一个stage结束的时候都有中继监督。每一个stage结束之后,S以及L都和stage1中的F合并。上下两路的loss都是计算预测和理想值之间的L2 loss。
personlab
personlab方法介绍
personlab是一个自下而上的人体检测和姿态估计算法。包括两个步骤:
- 检测K个关键点(17个关键点)
-
将这些关键点聚类
关键点检测
关键点检测阶段的目标是检测属于图像(可能不止一个人)中任何人体的关键点。该阶段生成一个热图和一个偏移量:
- heatmap:每个关键点一个通道。
- offset:每个关键点两个通道,分别表示水平方向是竖直方向。
假设是图像中二维位置中的一个,其中是图像的位置索引,是像素点的个数。
- 热图预测:如果点距离第类关键点在半径范围内,则该点的概率,否则。
- 偏移量预测:offset向量
使用Hough投票集合热图和偏移量,聚合成hough分数映射,
其中为图像的每个位置,为双线性插值核。
关键点聚类
的局部最大值作为关键点的候选位置点,但是没有与个体相关的信息,当图像中有多个个体存在时,我们需要一个机制将关键点聚合在其对应的个体上。
Mid-range pairwise offsets 为了达到以上目的,在网络上加入一个分离的成对中射程2-D偏移域输出用来连接成对的关键点。训练集中,表示对于同一个个体从第个关键点到第个关键点。
对于具有大量个体的情况,很难准确的回归,使用更准确的短射程偏移来递归的修正:
参考文献
[1] Convolutional Pose Machines
[2] Cascaded Pyramid Network for Multi-Person Pose Estimation
[3] RMPE: Regional Multi-Person Pose Estimation