2. 浙江大学光电科学与工程学院, 杭州 310058;
3. 中国科学院自动化研究所, 北京 100190
2. College of Optical Science and Engineering, Zhejiang University, Hangzhou 310058, China;
3. Institute of Automation, Chinese Academy of Sciences, Beijing 100190, China
在计算机视觉领域,人体姿态检测中的关节节点定位问题一直是研究的热点。传统的检测算法主要存在以下几个问题:1)如何提高关节节点定位准确度;2)发生遮挡时,能否预测出被遮挡部位的关节节点;3)如何同时定位多个目标的关节节点。在关节节点定位问题中,大多数的研究主要关注如何提高关节节点定位的准确度。通常的做法是通过暴力搜索的方式,在图像中搜索所有可能出现关节节点的区域。如何提高搜索效率自然成为解决该问题的一种思路,近年来,基于人体部位的高效推断模型不断被提出[1]。
传统方法用人工设计的特征提取方法和预定义的人体部位模型。但是在复杂的场景下,人工设计的特征提取方法提取出来的特征,不能对关节节点进行准确表达,并且人体部位模型无法包含全部的人体姿态。随着深度学习在目标检测中的成功应用,Toshev等[2]提出一种基于深层神经网络(deep neural network, DNN)的DeepPose人体姿态估计方法,并将姿势估计的问题可以看成是基于DNN的关节回归问题。DeepPose[3]是一种级联的DNN回归模型,利用全局信息进行姿态预测。Gkioxari等[4]延续回归的思想,尝试改造卷积神经网络(convolutional neural network, CNN),使得CNN变成循环网络,以解决单个图像中人体姿态以及视频中人姿态的估计问题。然而,现有的关节节点检测方法,在目标发生遮挡时,推理性能会显著下降,并且每次只能检测单个目标。
RCNN使用候选区域得到预定义目标的图像局部预测区域,然后把这些区域分别输入到CNN中,提取局部区域的特征,再将特征输入到分类器中,判断特征对应的区域是属于具体某类预定义的目标还是背景。同时,RCNN中通过针对边界的回归,修正预测的边界的位置。RCNN在VOC2007上的平均准确率是58%左右,虽然在VOC2007的准确率上有了很大的提高,但RCNN存在着重复计算的问题:候选区域有几千个,并且大多数是相互重叠的,重叠区域会被多次重复提取特征。于是研究者借鉴SPP-net[5]中的思路提出Fast-RCNN[6],将候选区域映射到CNN最后一层卷积层的特征图上,这样每张图片只需提取一次特征,而不需要对候选区域的特征进行重复计算,大大提高了速度,在VOC2007上的平均准确也提高到68%。Fast-RCNN的速度瓶颈在候选区域选择上,于是将候选区域的选择也交给CNN来做,提出Faster-RCNN。Fater-RCNN速度更快,用VGG网络作为特征抽取时,在VOC2007上平均准确率能达到73%。Gkioxari等[7]结合运动物体和环境因素实现静态图像的行为识别,将Fast-RCNN改造成能够对图片进行分类同时回归物体位置的RCNN网络,在PASAL VOC Action数据集上的平均准确率达到90.2%。Mask-RCNN[8]在Faster-RCNN的基础特征网络之后又加入全连接的分割子网,由原来的两个任务(分类+回归)变为3个任务(分类+回归+分割)。主要改进点在于:1)基础网络的增强,将VGGNet的特征提取方法换成ResNeXt-101和FPN;2)改进分割的损失函数,由原来的基于单像素softmax多项式交叉熵变为基于单像素sigmod二值交叉熵;3)用RoIAlign层替代RoI Pooling层,这是由于直接ROI Pooling对特征图的量化操作会使得得到的mask与实际物体位置有微小偏移,因而采用RoIAlign对特征图进行插值操作。Mask-RCNN在物体检测中取得了显著效果提升。
在本文的研究中,我们采用基于深度卷积神经网的方法对单幅图像中的多个目标进行关节节点检测,利用Faster-RCNN[9]的ROI给出图像中若干个潜在的人体区域,并为潜在的人体区域建立回归网络,同时输出图像中多个目标的边界坐标和关节节点的坐标。
1 相关工作 1.1 Faster-RCNNFaster-RCNN是RCNN系列的目标检测算法,RCNN具有突出的特征提取和分类能力,主要分为3个步骤:候选区域提取;特征提取;分类与边界回归。但是传统的RCNN方法会占用大量的磁盘空间,耗时较长。Fast RCNN很好地解决了图像内大量候选框重叠造成的特征提取冗余问题,训练速度得到了很大的提升。
在Fast RCNN基础上,Faster-RCNN进一步提高了模型效率,将目标检测中生成候选框、提取特征、分类器分类和回归几个步骤都交给神经网络进行处理,极大地提高了效率,是基于深度学习的RCNN系列目标检测方法中最好的一种方法。Faster-RCNN主要由两个核心部分组成:1)区域生成网络RPN候选框提取模块,RPN是全卷积神经网络,内部与普通卷积神经网络不同,它是把CNN中的全连接层变成卷积层;2)Fast RCNN检测模块,基于RPN提取的候选框检测并识别其中的物体。
Faster-RCNN解决了RCNN中使用搜索选择算法耗时多的问题,使用深度CNN网络直接产生召回率高的Region Proposals的RPN层。与selective search相比,当每张图生成的候选区域从2 000减少到300时,训练时间将减少20%~25%,RPN方法的召回率下降幅度不大,说明RPN方法的目的性更加明确。
基于Faster RCNN强大的目标识别能力,通过在Caffe深度学习框架下的实验,Faster RCNN对于人体整体识别率和准确率高达98%,基本不会出现漏检和误检的情况。本文提出一种新的策略:将Faster-RCNN运用到关节点的检测中。在这个思路的基础上,我们将现有的Faster-RCNN框架运用在肢体检测方面,对此进行实验并做出详细的实验分析,作为本文多目标关节节点检测的基线。基于Faster-RCNN强大的目标检测能力,本文尝试将其运用到人体肢体检测方向上来。
1.2 DeepPoseDeepPose提出一种基于DNN的人体姿态估计方法,该方法可以表达成基于DNN的身体关节的回归问题。DeepPose的核心思想是对于关节点位置的回归,利用DNN对人体关节节点位置进行定位,先在图像中进行粗略的姿态统计,再利用DNN回归的级联,对关节点区域的子图像进行优化预测,能够得到高精度姿态估计。该方法具有以整体方式推理姿势的优点,能够将每个身体关节的位置回归到全图像并作为7层卷积DNN的输入。DeepPose给出了使用CNN进行姿态估计的方法,利用级联方式进行更加精确的姿态估计。对每个关节点,都将整个图像作为输入并利用卷积神经网络提取全局特征,将节点的绝对坐标转化为统一坐标,之后,通过缩放的方式固定初始的图片输入大小,在获得初步坐标后,再根据该坐标选择一定的局部区域,对节点坐标进行更加精确的回归,这种方法有两个优点:首先,DNN能够捕获每个身体关节的完整上下文信息并且每个联合回归器都使用完整图像作为信号;第二,与基于图形模型的方法相比,该方法的制定更加简单,不需要明确地设计零件的特征表征和检测器,也无需明确设计模型拓扑和关节之间的相互作用,后期优化阶段通过使用更高分辨率的子图像来优化预测结果。
2 运动场景关节节点检测算法 2.1 MPII数据库简介MPII是一个人体姿态数据库,包含约2.5万张图片和4万个不同姿态的人类肢体节点信息,覆盖超过410种活动,图片均来源于YouTube视频。MPII包括如下节点:左右脚踝,左右膝盖,左右臀部,左右盆骨,左右肩膀,左右手肘,左右手腕,头部和头顶位置。评估标准使用正确预测关键节点的百分比(percentage of correct keypoints),当一个关键节点预测结果和真实标记间的“距离”在一定范围内时视为正确预测。对于MPII数据集,这个“距离”使用头部大小进行归一化,相应的评估标准记为PCKh。
2.2 Faster-RCNN基线的多目标关节节点检测1) 数据集的转化
Faster-RCNN使用的数据集为VOC2007,是2007年计算机视觉挑战赛的数据格式[10],该数据集采用XML格式表示人体关节点信息,而MPII数据库则采用MatLab格式保存关节点信息,因此实验的第一步需要对数据集进行转化。本文通过python进行数据的导入和处理,创建了3个python类,分别为Picture,Person,Point。其中1个Picture实例包含1个或多个Person,1个Person实例中含有多个Point节点信息。通过python中的MatLab接口导入MPII数据,将其转化为python类。
数据集转化的目的是将MPII原有的节点坐标信息转化为bounding box,即Faster-RCNN能够处理的数据格式,如图 1所示,不同的节点处的bounding box被视为一个单独的目标进行检测和分类。由于MPII数据库中的图片分辨率不一,如果对每种关节节点都采用固定长宽的bounding box,则实验结果会有较大的误差。因此,在数据处理的过程中,采用自适应图片大小的bounding box,即通过一定的比例计算出包围盒的大小。
Download:
|
|
2)实验结果分析
实验结果显示,直接用Faster-RCNN对每种关节节点的识别效果不理想。如图 2所示,头部识别的正确率超过90%以上,但肩膀、手肘、手掌、臀部、膝部、脚腕的识别率不到20%,大部分图像均无法识别出这些关节。通过分析结果发现,出现上述情况主要有以下几点原因:1)人体关节常会出现重叠和遮挡的情况。一个侧身站立的人,图像内侧的关节部分就会被处于图像前侧的关节所遮挡;对于多人的图像,部分个人的关节极有可能会被其他人遮挡。2)上述实验仅仅对单独的关节点进行识别,缺少节点之间相关联性的信息,导致结果的不理想。3)Faster-RCNN采用的区域推荐算法可能并没有将单个的关节点所在的矩形框作为推荐区域之一传递到下一层网络。
Download:
|
|
根据上一节的实验分析,可知由于人体各个关节点之间缺少关联性的信息,并且标注区域过于狭小,导致了目标识别率的不理想。本文考虑是否可以将MPII人体姿态数据集做进一步的转化,表示出节点间的关联信息呢?于是本节提出一种新的思路,对相邻节点的连线所处于bounding box进行检测,例如左肩和左手肘的连线构成左上臂,该连线的bounding box包含的信息相对于单独节点较大,不仅含有2个节点信息, 还包括它们之间的关联信息, 其中可识别的特征点要明显多于单独关节点。
1) 数据集转化及优化方法
首先要解决的问题是如何将MPII人体姿态数据库中的关节点位置信息转换成包含躯干的bounding box,以及该bounding box的大小如何确定。最直观的思路,是以坐标节点连线画一个最小的bounding box。因为MPII数据库提供的关节点坐标是该关节的中心位置,而关节点比如手肘、肩膀等,并不是由一个点,而是一整块相关的区域构成的,那么直接以坐标节点连线画一个最小的bounding box很难将预期的区域全部囊括进来,少部分的关节部分为落在bounding box的外面。为解决这个问题,本文提出一种优化bounding box的改进算法。对于节点A和B,以及它们的连线Line(A, B),首先根据人体大小以及关节类型计算出一个节点覆盖半径R。以节点中心为原点, R为半径画圆, 最后得到图 3(c)优化后的结果。可以看到, 图 3(b)中人的左上臂的bounding box并没有覆盖到靠近头部和靠近左下臂的部分, 而在图 3(c)中, 通过加入两个半径为R和r的圆, 填充了原本没有覆盖到的部分。
Download:
|
|
下面提供求解如图 3(c)所示的bounding box的一种算法:
设节点坐标为(x, y), 节点覆盖半径为R, 将半径为R的圆分成k等份, 则有如下公式
$ B{\rm{o}}{{\rm{x}}_{{\mathop{\rm Min}\nolimits} X}} = \min \left\{ {x + \cos \frac{{2i{\rm{ \mathsf{ π} }}}}{k}} \right\}, 0 \le i < k, $ | (1) |
$ {\rm{Bo}}{{\rm{x}}_{{\mathop{\rm Min}\nolimits} Y}} = \min \left\{ {y + \sin \frac{{2i{\rm{ \mathsf{ π} }}}}{k}} \right\}, 0 \le i < k. $ | (2) |
同理,MaxX和MaxY也可以计算出来,k一般取60左右即可。如图 4所示为原数据转化为关节点连线的包围盒输出结果。
Download:
|
|
2) 实验结果与分析
通过实验发现, 采用优化的bounding box后,Faster-RCNN的检测错误率有所下降。腿部的错误率降低到50%左右,但其他部位的错误率仍然高达60%~80%。出现该情况的原因在于,腿部相较于上半身的关节点,体积较大,因此可识别的特征范围大。并且腿部发生遮挡的情况较少,因此大腿部分的检测优于其他部位的检测。实验证明,虽然对Faster-RCNN中用于分类的bounding box进行了修改和与优化, 但是人体肢体检测的效果依旧不是很理想,分析原因有如下几点:当尝试将人体某一部分单独提取出来作为一个识别目标,比如腿部,截取出来的目标图像基本是单一的颜色,不存在鲜明的特征可供机器识别。虽然相比直接用包含关节节点区域的图像作为训练数据,多了一些上下文信息, 但是依然无法提供足够的整体信息,如图 5所示。
Download:
|
|
基于DeepPose的关节节点检测在FLIC数据库[2]和Leeds Sports Pose数据库[11]进行训练和测试。在深度学习框架caffe上运行,迭代次数为50 000次,batch size大小为50。在训练过程中,损失函数一开始快速下降,随后逐渐趋于平缓,直至收敛。训练过程的误差曲线如图 6所示。
Download:
|
|
通过在测试集进行测试发现,部分图片可以较为准确地勾勒出人体肢体的情况,另一部分图片则略有偏差。通过图 7的对比不难发现,DeepPose对于单个人且人体在图片中占较大比例时会得到比较好的预测结果。而当待检测图片中包含多目标或者是人体占图片比例较小时,效果不佳,甚至会出现特别大的偏差。因此,本文得出这样的结论:DeepPose通过全图特征分析回归得到的节点坐标受到图片背景的影响较大,特别是当人体区域在图片中比例较小时,DeepPose会将人体的部分区域误认为是背景,从而产生较大的偏差。
Download:
|
|
为了进一步研究人体在图像中的所占比例大小对于预测结果的影响, 本文对同一张图片中的人体区域进行不同比例的裁剪和缩放,然后使用DeepPose进行关节节点检测,结果如图 8所示。在图 8中,人体占图片的比例越大,预测结果越准确。这说明背景对于基于DeepPose的预测结果影响较大, 当人体所占的比例较小时, 背景图片会对结果造成比较大的干扰。
Download:
|
|
本文发现Faster-RCNN和DeepPose有着各自的优缺点,Faster-RCNN适合检测较大块、特征比较鲜明的物体, 比如它对人体整体的检测识别率达到98%以上, 非常准确, 但是对于各个关节点的判断能力几乎没有;而DeepPose与Faster-RCNN恰好相反,它对于细节和全图关联性的分析能力比较强,适合做关节点位置的判断, 但是非常容易受到背景图片的影响,且只能适用于单人图片。于是,本文提出一种新的思路,结合Faster-RCNN目标检测的能力和DeepPose人体肢体节点坐标的判断分析能力,进行多目标的关节节点检测。首先利用Faster-RCNN得到图片中若干个人体的矩形框(大小为w×h),对于每个矩形框, 将对应的人体矩形框从原图裁剪下来,归一化成227×227大小的人体区域(DeepPose的图片输入格式),放到DeepPose中运行,并用优化的bounding box以及R,r计算出节点坐标p,再将p在227×227图像块上的坐标位置映射到w×h的人体候选区域上。
通过实验发现,结合Faster-RCNN和DeepPose的效果有了很大的提升。单纯地使用DeepPose的方法,如图 9(a)所示,当人周围有了其他物体干扰后,肢体检测结果会非常不准确,而经过Faster-RCNN计算出来的人体矩形框的约束后,关节节点的预测效果迅速提升。另外,对于原本DeepPose束手无策的多目标关节节点检测,经过Faster-RCNN的帮助,也不再是问题,如图 9(b)和9(c)所示。
Download:
|
|
使用MPII数据集官方给出的评测工具[12]对我们的模型进行评估,结果见表 1。可以看到,我们的模型在手腕、膝盖两种关键节点检测上均取得了最好结果,比原来的最好结果各提升1.2%和0.3%。在其他5类关键节点检测中也取得了很好的结果,在全部的关键节点检测上PCKh为87.6%,接近于原来的最好结果88.5%。
本文提出一种进行多目标关节节点检测的新方法。该方法结合Faster-RCNN和DeepPose各自的优点,优化了人体关节节点检测的结果。Faster-RCNN善于识别整体物体,比如人体、汽车、轮船等等,但是对于细节和关联性分析能力不强;DeepPose恰恰相反,它不善于分析事物的整体性,但是对于整体事物内部的联系有着较强的分析能力。本文提出的算法在MPII数据集中取得了很好的效果,能够应对多目标关节节点检测的问题。
[1] |
Tompson J J, Jain A, LeCun Y, et al. Joint training of a convolutional network and a graphical model for human pose estimation[C]//Advances in Neural Information Processing Systems. 2014: 1799-1807.
|
[2] |
Toshev A, Szegedy C, DeepPose G. Human pose estimation via deep neural networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Columbus, OH, USA. 2014: 24-27.
|
[3] |
Sapp B, Taskar B. Modec: multimodal decomposable models for human pose estimation[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2013: 3674-3681.
|
[4] |
Gkioxari G, Toshev A, Jaitly N. Chained predictions using convolutional neural networks[C]//European Conference on Computer Vision. Springer, Cham, 2016: 728-743.
|
[5] |
He K, Zhang X, Ren S, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[J]. IEEE Transactions On Pattern Analysis and Machine Intelligence, 2015, 37(9): 1904-1916. Doi:10.1109/TPAMI.2015.2389824 |
[6] |
Girshick R. Fast r-cnn[C]//Proceedings of the IEEE International Conference on Computer Vision. 2015: 1440-1448.
|
[7] |
Gkioxari G, Girshick R, Malik J. Contextual action recognition with r* cnn[C]//Proceedings of the IEEE International Conference on Computer Vision. 2015: 1080-1088.
|
[8] |
He K, Gkioxari G, Dollár P, et al. Mask r-cnn[C]//Proceedings of the IEEE International Conference on Computer Vision. 2017: 2961-2969.
|
[9] |
Ren S, He K, Girshick R, et al. Faster r-cnn: Towards real-time object detection with region proposal networks[C]//Advances in Neural Information Processing Systems. 2015: 91-99.
|
[10] |
Everingham M, Van Gool L, Williams C K I, et al. The pascal visual object classes (voc) challenge[J]. International Journal of Computer Vision, 2010, 88(2): 303-338. Doi:10.1007/s11263-009-0275-4 |
[11] |
Johnson S, Everingham M. Clustered pose and nonlinear appearance models for human pose estimation[C]//BMVC 2010. doi: 10.5244/c.24.12.
|
[12] |
MPI human pose dafaset[DB/OL].[2019-05-05]. http://human-pose.mpi-inf.mpg.de/#evaluation.
|
[13] |
Tompson J, Goroshin R, Jain A, et al. Efficient object localization using convolutional networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015: 648-656.
|
[14] |
Pishchulin L, Insafutdinov E, Tang S, et al. Deepcut: joint subset partition and labeling for multi person pose estimation[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 4929-4937.
|
[15] |
Wei S E, Ramakrishna V, Kanade T, et al. Convolutional pose machines[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 4724-4732.
|