基于双流全卷积网络的驾驶员姿态估计方法

2022-03-07 02:38赵作鹏
关键词:卷积姿态人体

王 彬, 赵作鹏

(1. 中国矿业大学 计算机科学与技术学院, 江苏 徐州 221116; 2. 江苏联合职业技术学院 信息技术系, 江苏 徐州 221008)

人体姿态估计是通过从给定的包含人体的图片或视频中检测出人体关节点的位置信息和人体关节点之间的连接关系进而得到人体姿态的方法.作为众多人机交互的基础,它主要应用于动作识别、智能监控、人体跟踪、情绪猜测和医疗辅助等方面[1].

为了实现智能安全驾驶,现已产生了各种各样的驾驶员辅助技术,例如,车辆辅助驾驶系统(advanced driver assistance systems,ADAS)通过安装在车辆中的摄像头获取驾驶员和车况图像信息,利用深度学习方法对人体姿态和车况进行检测和分析,其中以人体姿态为基础的动作识别是实现智能安全驾驶的关键技术.驾驶员姿态估计是人体姿态估计技术在智能安全驾驶中的应用[2],它不仅为人体行为识别提供依据,也为监管机构提供更加确切的驾驶员信息[3].

笔者使用迁移学习,通过在ImageNet数据集预训练的VGG-19模型[4]中提取原始图像特征,从而减少训练的总体工作量.该网络使用沙漏结构对特征图进行上采样操作以过滤背景噪声.最后将多个阶段的特征图进行融合,保留原始输入图像的空间信息,提高预测精度.将提出的网络架构在COCO (common objects in context)数据集和车辆图像数据集DDS(driver′s driving situation)与CMU Pose(Carnegie Mellon University pose)进行对比试验.

1 人体姿态估计研究

2D人体姿态估计算法从方法上可以分为传统的基于图形结构的方法和基于深度学习的方法[5]2种.传统姿态估计在特征提取上多采用人工设定的方法,设计2D人体部件检测器进行关节点检测.由于人体姿态的灵活性,传统姿态估计的部件检测器对人体部件空间关系的表达能力有限.随着应用场景的增多,研究人员发现在复杂环境下此类算法很容易受到人体相似外观物体的影响,无法准确地识别目标.虽然WANG Y.等[6]提出将多个人体部件组合为一个整体的思想,通过构建poselet模型尝试避免背景噪声的影响.由于人体结构的复杂性和人体姿态的灵活性,传统的人体姿态估计对人体部件的空间关系进行建模的方法限制了模型的表达能力,在实际应用中,这种算法难以准确地表达图像中的人体姿态,因此在算法精度上有着难以突破的上限.

基于深度学习的人体姿态估计算法可以分为单人姿态估计和多人姿态估计.其中单人姿态估计是在只有一个人的图像中对姿态进行关节点预测,而多人姿态估计对图像中不确定数量的人体进行姿态估计,不仅要对图像中所有关节点进行检测,还要以个体为单位,对关节点进行分类,多人姿态估计更切合实际场景的需求.多人姿态估计从方法上可以分为从上而下和从下而上2种方法.从上而下的方法先使用目标检测的算法对图片中的人体进行检测,然后在每一个检测框区域内进行单人姿态估计,这种算法的精度同时依赖于目标检测的精度和单人姿态估计的精度;从下而上的方法通过检测图像中所有人的关节点,使用匹配算法连接关节点,确定图像中人体数目.

A. TOSHEV等[7]将人体姿态估计问题转化为坐标点回归问题,基于深度学习方法对单人人体姿态进行估计,以坐标值为优化目标,直接回归关节点的二维坐标信息.该方法通过设计一个多阶段的深度卷积网络,在初始阶段得到关节点的大致位置,输出结果进入下一个相同深度的卷积网络,得到更准确的关节点信息,通过多个阶段的优化输出满足条件的结果.相较之前提出的算法,该方法为人体姿态估计的研究开辟了新的道路,明显提高了人体姿态估计的精度.但在后来的实际测试中人体关节定位结果并不是非常理想,由于没有对人体各个关节间的结构信息进行建模,仅使用图像中关节点直接回归到精确坐标点比较困难,使得模型对于多尺度的姿态估计泛化能力较弱.J. TOMPSON等[8]对模型进行改进,使用热力图描述各个关节点可能位置的概率分布情况,热力图描述了各个关节点在整幅图像的各个像素点可能出现的概率,并在一定程度上反映了关节点间的空间信息,将这些关节点位置的概率分布进一步精细化得到各个关节点的最终位置,最后通过池化层将学习得到的热力图合并到一个置信图上,提高了关节点定位的鲁棒性.T. PFISTER等[9]提出使用热力图估算图像中每个像素接近真值的概率来确定每个关节点的坐标,该工作的主要创新点是提出一种空间融合的方法,即将网络的第3层和第7层的特征提取出来进行卷积融合操作,用来提取关节点间的联系并利用光流信息对相邻帧的热力图进行预测.

通过增大感受野使网络能够在原始图像中学习到范围更大的特征,这有利于得到目标的上下文信息,即关节点在图像中的空间关系.WEI S. E.等[10]构建顺序化的多阶段级联的深度神经网络,即卷积姿势估计器(convolutional pose machines,CPM),采用大卷积核不断累加卷积操作,使网络逐渐获得大的感受野,利用不同尺度的特征图表达各个关节点之间的空间关系,最终实现隐式学习关节点结构信息的目的,同时使用中继监督对每一阶段进行监督,避免梯度消失.

当卷积核太大时,网络的参数量也随之增大,过于消耗计算资源.A. NEWELL等[11]提出沙漏网络(stacked hourglass networks,SHNs),适当降低卷积核的尺寸,采用残差模块作为构建Hourglass网络的基础模块.Hourglass网络模块可以提取较高层次的特征,同时保留原始层次的信息.沙漏网络的整体结构是对称的,网络的前半部分通过卷积层和Max Pooling层对逐步缩小特征的分辨率得到高级特征(High-to-Low阶段),网络在每个Max Pooling层处分叉,上下两路在不同尺度空间提取特征.当将特征缩放到最低的分辨率后,网络开始进行Up Sampling并与High-to-Low阶段的特征信息进行融合.

人体姿态估计作为计算机视觉的热门课题,一直以来有大量的研究人员利用各种先进方法去实现人体姿态估计,取得了显著的成就.但由于图像视角、光线变化和遮挡等其他因素的影响,使基于图像的人体姿态估计仍然面临着各种挑战.

1) 复杂的背景信息.无论是室内还是室外的图像,除了人体以外仍存在大量的背景信息,在这些背景信息里可能存在与人体形状或肤色相似的物体,特别是在驾驶室内由于车窗反光会倒映出部分人体画面,导致误检测.

2) 光照的干扰.在真实环境里,图片受光线强度和角度的影响,导致最终信息的展示效果差异很大.在过于强烈或过于微弱的光线下,拍摄到的照片由于曝光或亮度太低而无法展示准确的图形和颜色信息,而且在各种不同的光线角度下,物体往往会变得陌生而难以辨别.光照变化问题在计算机视觉的各种领域都面临着挑战,特别是人脸识别、行人检测和动作识别等.

3) 衣着变化.随着潮流的发展,人类的衣服款式、造型和颜色日渐丰富,这为人体姿态估计的研究带来了困难,比如图像中的人员是否带有面具或帽子,另类的服装造型会使人体外部轮廓发生巨大的改变,穿裙子和穿裤子对于辨别下肢关节点的难度各不相同,而衣服上的人像图案往往会使模型误判人体数目,这些情况都会在不同程度上降低算法最终呈现出来的效果.

4) 遮挡问题.遮挡问题一直以来都是人体姿态估计所面临的重要挑战,因为人体的灵活性和环境的复杂性,极大概率会发生自我遮挡和其他遮挡的问题.所谓自我遮挡就是个体的身体部位对自身关节点的遮挡,包括双手抱胸、双手背后、向下弯腰、双腿或双手交叉以及捂脸等行为,特别是在运动过程中基本上会出现自遮挡情况.而其他遮挡包括物体对关节的遮挡和人体之间的遮挡,在大型集会中由于人员密集,除了建筑对人体的遮挡以外,人们在互动的过程中相互遮挡.在发生遮挡问题时,被遮挡部位的信息将会从图像上消失,对此需要算法有强大的联系上下文能力,通过对全局信息的学习最后相对准确地得到被遮挡关节点的位置.针对这个问题,研究人员往往通过扩大网络结构感受野的方法来解决.

5) 拍摄角度.由于摄像头摆放位置的不同,使得最终获取到的人物信息在图像上展示的结果有很大的差异性,而且不同角度拍摄同一物体的结果甚至会产生自遮挡情况,例如从上往下拍摄人体,图片中头部会显得很大,腿却显得很短,甚至最终图像得到头顶信息而不包含下肢身体信息;从下往上拍摄效果与前者刚好相反.同时由于角度的变化,图像中人体部位的尺度也会发生变化.

现代交通行业日益趋向自动化,出于安全考虑,实时掌控汽车内部驾驶员和乘客的情况对驾驶员状态做出正确评估具有重要意义.汽车内部由于空间局限、光线变化、驾驶员及乘客衣着变化和遮挡等问题,使现有算法在实际环境的测试结果并不理想.如何有效过滤背景噪声对算法造成的影响和如何提高对被遮挡关节点的检测是驾驶员姿态估计研究迫切需要解决的问题.

2 基于双流全卷积网络的构建

由于驾驶室环境的复杂性,对驾驶员关节点的检测往往会受到驾驶员衣着变化和光线变化的影响,使现有算法在车载图像上测试结果出现精度不理想和关节点之间的连接丢失等问题.因此,笔者基于全卷积神经网络(fully convolutional network,FCN)构建一个双流多阶段的网络(fully convolutio-nal network fusion,FCNf),同时预测关节点位置信息和关节点之间的连接信息,FCNf网络总体框架如图1所示.对特征图进行上采样和下采样操作并融合不同层的输出特征图,增强网络提取关键信息的能力.制作与COCO数据集格式相同的驾驶员姿态数据集(DDS数据集).将FCNf算法分别在COCO数据集和DDS数据集上与其他先进算法进行对比试验,验证算法的有效性.

图1 FCNf网络的总体框架图

2.1 FCN算法原理

LONG J.等[12]提出一种新型卷积神经网络——全卷积神经网络,由于FCN能够对图像进行端对端、像素对像素的训练且输入图像可以是任意大小,所以被广泛应用到语义分割的领域.

简单的卷积神经网络在卷积层后面往往会通过全连接层得到固定长度的特征向量,然后会使用类似于Softmax等函数对结果进行分类,因此CNN(convolutional neural networks)只能输入固定尺寸的图像.而FCN可以输入任意尺寸的图片,网络在最后使用反卷积层替换全连接层,对特征图进行上采样,然后模型会对恢复到输入时原始尺寸大小的图像的每一个像素产生预测值,并逐个像素地分类.FCN通过上、下采样的策略还可以保留图像中的空间信息.

通过将传统的卷积神经网络中的全连接层换作相同维度的卷积核进行卷积操作就转化成为了一个简单的FCN.将CNN中的全连接层换成了卷积层,即可得到一个简单的FCN,这样分类网络就可以输出热力图.

2.2 迁移学习

随着基础特征提取网络性能的提升,近几年大多数网络都会对在ImageNet数据集上训练好的分类网络进行微调,作为新网络的backbone,常用到的分类网络有VGGNet和ResNet.充足的数据是深度卷积神经网络能够训练成功的关键要素之一,但收集和标注数据需要耗费大量的人力和时间,因此将在其他公共数据集上训练得到的模型迁移到一个新的任务中是非常有意义的.

随着卷积层深度的增加,卷积层提取到的特征具有更加抽象的意义,即浅层卷积层提取更加通用的特征,而深层卷积层则提取到更加全面、有针对性的特征.所以在面对关联性不大的数据集合场景时,可以只用最开始的几层卷积层,其他层重新训练,而对于相似度高的情况,则可以直接使用整个网络.

本研究将提取VGG-19的前13层为整体网络的提取输入的图像特征,另外为了调整特征输出维度,在该网络的最后添加卷积层Conv4_3A和Conv4_4A,调整最终输出特征图的维度,如表1所示.

表1 本研究使用的VGG-19网络结构表

表1中:Conv为卷积层,后面的序号为层数;Max Pooling(MP)为最大池化层.这个网络结构一共包括15层,其中卷积层的卷积核大小都是3*3.另外,公开的姿态估计训练数据集COCO等所包含的图像都是以日常生活中的人为主体.由于本研究是针对驾驶环境,与公共数据集相比,人体结构一致,所以不用改变输出类型和网络的输出层,将网络先在公开数据集上进行训练,随后保持网络结构和权重不变,再在新的数据集上进行第2次训练,微调权重使其更加适应驾驶环境.

2.3 网络结构

FCNf网络结构如图2所示,其中: US为上采样层;BN为批规范层.网络在每个阶段的后面对损失函数进行中继监督,防止梯度消失.

图2 FCNf网络结构示意图

将FCN1与FCN2并联得到FCNf,该网络可以同时对关节点位置信息和关节点之间的连接进行预测得到图像中每个像素对于关节点的置信度,即每个像素可能是关节点k的概率值.在FCN1和FCN2中设置High-to-Low和Low-to-High的沙漏结构,使特征图被处理为非常低的分辨率后通过上采样操作回到特征图的原始大小,提取更为有效的特征信息.FCN1和FCN2学习并融合不同尺度下的特征图信息,得到丰富的空间信息.

在第1阶段(FCN1-stage1、FCN2-stage1),FCN1和FCN2经过多层卷积核为3*3的卷积层后,通过Max Pooling操作使特征图尺寸减半,在达到最小分辨率后,使用上采样恢复特征图到原始大小.WEI S. E.等[10]通过试验发现,随着感受野的增大,预测准确率上升,其中增大感受野的方式包括:① 增大池化层(Pooling)步长,但是会损失较多信息降低精度;② 增大卷积核,相应地会增大参数量;③ 增加卷积层.综上,自第2阶段(FCN1-stage2、FCN2-stage2)开始采用卷积核为7*7的卷积层扩大感受野,适当加深网络层数并且在每一个stage中添加上、下采样操作,通过这样的设计提高网络的学习效率.

3 试 验

3.1 数据集

采用多人人体姿态估计使用的数据集COCO.COCO数据集是微软2014年制作的数据集,COCO竞赛是计算机视觉领域最受关注和最权威的比赛之一.COCO数据集包括20万张图片,25万个关节点,每人有17个关节点,包括鼻子(Nose)、左眼(Left_eye)、右眼(Right_eye)、左耳(Left_ear)、右耳(Right_ear)、左肩膀(Left_shoulder)、右肩膀(Right_shoulder)、左肘(Left_elbow)、右肘(Right_elbow)、左手腕(Left_wrist)、右手腕(Right_wrist)、左臀(Left_hip)、右臀(Right_hip)、左膝盖(Left_knee)、右膝盖(Right_knee)、左脚踝(Left_ankle)、右脚踝(Right_ankle).标签中每一个keypoint表示1个关节点坐标,它由长度为3的数组(x,y,v)表示,其中:x和y表示关节点的坐标值;v作为一个标志符,取值为0、1和2.当v=0时,表示图像中没有该关节点;v=1时,表示该关节点存在,但是被遮挡;v=2时,表示该关节点在图像中存在并可见.COCO数据集部分数据展示如图3所示.

图3 COCO数据集展示

制作针对驾驶环境的数据集——DDS数据集,部分数据展示如图4所示.数据均来自江苏比特达车辆监控平台,根据驾驶室环境的密闭性、局限性和拍摄难度大等问题,数据统一采集来自驾驶员右侧摄像头的图像,因为这一角度更能全面展示人员在驾驶室内的姿态状态,可以避免忽略驾驶员下半身的姿态,比如翘腿和盘腿等危险姿态.搜集了3 300张、1 280×720像素的图片,其中2 640张作为训练集,再从训练集中另取500张作为验证集,剩下的660张作为测试集.

图4 DDS数据集部分实例

3.2 试验设置

使用深度学习框架keras作为试验平台,设备的系统为Ubuntu16.04,具有GeForce GTX 1080Ti,Intel Core i7,8 GB RAM.使用 ImageNet分类任务上提前训练好的VGG-16模型作为特征提取网络.模型一共6个stage,设置输入图片大小为368×368×3.在训练阶段,使用随机梯度下降优化算法(stochastic gradient descent,SGD)对参数θ进行优化,其中学习率设置为2×10-5,动量参数设置为0.9.

3.3 性能评价指标

使用微软COCO数据集提出的精度度量标准OKS(object keypoint similarity)作为性能评价指标,计算公式如下:

式中:di为每个对应的标签真值与检测到的关键点之间的欧式距离;s为目标尺度;ki为常数,用于控制关键点i的衰减情况;δ为将可见点选出来进行计算的函数;vi为地面真值的可见性标志.

3.4 试验结果与分析

采用Fast-RCNN、CMU Pose(Carnegie Mellon University pose)、FCNf,在公共数据集COCO上进行性能对比试验,结果如表2所示.其中:mAP为平均准确度;AP@0.50为OKS=0.50时,AP的得分;AP@0.75为OKS=0.75时,AP的得分;APm为针对中等尺度目标的得分;APl为针对大尺度目标的得分;AR为平均召回率,是OKS=0.50,0.55,…,0.95时的平均得分.

表2 在数据集COCO上的性能比较 %

在数据集COCO上,CMU Pose的平均准确度(mAP)达到61.8%;FCNf的平均准确度(mAP)达到了64.5%,比CMU Pose更有效.2种算法的试验结果对比如图5所示.

图5 2种算法在COCO数据集上的可视化对比

从图5可以看出,提出的算法(FCNf)能更好地克服光线变化的问题,并在一定程度上减少了关节点的错误检测.

为了更好地评估FCNf的性能,在DDS数据集上与Fast-RCNN、CMU Pose进行性能对比试验,结果如表3所示.

表3 在DDS测试集上的性能比较 %

网络中通过将不同尺度的特征与上下文语义信息融合在一起,有效提高关节点的检测精度.从表3 可以看出:提出的算法在车载数据集上的精度得到了提高,FCNf 的AR比CMU Pose的高1.2%,比Fast-RCNN的高约4.8%;FCNf在DDS上的平均准确度(mAP)为78.4%,FCNf 的平均准确度(mAP)比CMU Pose的高4.3%,比Fast-RCNN的高5.8%.

从DDS测试集中选取4组具有代表性的图片,并使用CMU Pose与FCNf进行对比分析,结果如图6、7所示.

图6 CMU Pose在DDS测试集上的可视化结果

从图6a、7a可以看出,CMU Pose对左腿有漏检现象,并且在背景中出现了一些误检点,而FCNf对左腿没有出现漏检现象.从图6b、7b、6d、7d可以看出,当室内环境变得更加复杂时,相比CMU Pose而言,FCNf可以准确地检测出关节点的位置,减少了在背景中对虚假关节点的检测现象.从图6c、7c可以看出,FCNf不仅可以准确检测出靠近窗口的左臂的关节点以及它们之间的连接信息,而且可以在光照变化条件下有效地过滤背景信息.在复杂环境和光照条件下,FCNf比CMU Pose对DDS图像的处理更高效.

从图7可以看出,FCNf算法可以有效减少非目标区域的误判,准确地标记出图像中未被遮挡的人体关节位置.

图7 FCNf在DDS测试集上的可视化结果

为了验证FCNf的鲁棒性,从Kaggle Community中提取State Farm驾驶员检测数据集中的部分驾驶员右侧图片.采用CMU Pose和FCNf进行试验,对比结果如图8所示,CMU Pose的检测结果出现细节丢失和错误判断,然而FCNf 可以更准确地检测图像中未被遮挡的关节点,并有效地过滤掉背景噪音,这表明FCNf模型具有更好的鲁棒性.

图8 2种算法在Kaggle Community的State Farm驾驶员检测数据集上的试验结果对比

4 结 论

提出了一种基于双流全卷积神经网络的驾驶员人体姿态估计方法.为了增强网络提取特征图关键信息的能力,在2个分支中设置沙漏状的网络结构,并将不同网络层得到的特征图进行融合.试验结果表明,该方法对人体关节点的正确识别率高,可以在一定程度上减少非目标区域对检测结果的影响.通过采集车载平台上的数据对算法进行训练,使得试验效果与车载环境更贴切.未来如何将算法移植到硬件设备中投入使用并保持较高的准确率是研究的重点.

猜你喜欢
卷积姿态人体
基于全卷积神经网络的猪背膘厚快速准确测定
人体“修补匠”
人体冷知识(一)
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
人体可笑堂
另一种姿态
人体运动小知识
以文青的姿态回归主流——对《后悔无期》的两重解读