APP下载

基于改进的Mask R-CNN的手势分割与识别方法

2022-11-07张继凯吕晓琪王月明

计算机应用与软件 2022年10期
关键词:手势卷积特征

张继凯 张 然 赵 君 吕晓琪 王月明

1(内蒙古科技大学 内蒙古 包头 014010) 2(内蒙古工业大学 内蒙古 呼和浩特 010051)

0 引 言

手势是人与人之间一种直观、简便的交互形式,随着人工智能与计算机视觉的快速发展,手势识别[1]也从过去需要借助各种外界辅助设备到了基于计算机视觉的研究阶段。目前,基于计算机视觉的手势识别方法已经发展为近年来人机交互[2]、虚实交互[3]等领域研究热点之一。而用于虚实交互的手势识别过程主要分为手势检测与分割、特征提取、语义识别这三个阶段。

手势分割是手势识别的基础,也是手势识别的关键,手势分割的结果直接决定最终的手势识别的效果。目前主要的手势分割方法分为基于深度信息的手势分割[4]、利用手的表观特征和几何特征完成分割[5]这两类。Lin等[6]提出了一种基于动态手部分割的多特征手势识别,该方法利用肤色、灰度、深度和运动线索进行手势识别,并且可以解决手脸遮挡的问题。龚申健等[7]提出基于改进的Canny算子的静态手势分割方法,对传统的Canny算子进行改进,采用组合滤波和自适应阈值算法来提取交互式手部轮廓,在简单的静态手势分割中具有较高的精度,但仅适用于静态图像。张美玉等[8]针对手势分割易受到复杂背景干扰的问题,提出了一种面向移动端的快速手势分割优化方法,结合场景变化率对背景模型的更新速率进行自适应控制,通过提取肤色区域和局部区域定位,实现手部分割,但该算法在动态视频中的分割效果不佳。

手势的特征提取是实现手势识别的重要步骤。Li等[9]提出了一种稀疏驱动的多普勒分析方法,利用正交匹配追踪算法提取动态手势的微多普勒特征,用于雷达传感器的动态手势识别,但其只使用了手势动作中多普勒变化信息,缺少对手势运动过程中的角度变化分析。Junior等[10]提出应用Otsu滤波器和中值侵蚀形态滤波器对图像进行预处理操作,然后使用Douglas-Peucker算法和Sklansky算法对图像特征进行提取,最后通过DTW和HMM对不完整手势进行分类,虽然该方法实现了更高的分类率,但过程复杂且耗时。刘小建等[11]利用Kinect得到手势的深度信息实现特征提取,但是该方法对某些手势的特征不能完全获取,因此具有使用范围局限性。Lalit等[12]采用基于深度传感器的数据采集,利用PCSS特征和EPS特征完成手势特征快速有效的提取,在22种手势数据集上获得了高达94%的识别准确率。

手势识别包括静态的手势识别与动态的手势识别,但是动态的手势识别过程最终也将变为对静态手势的识别。当前手势识别的流程主要为对手势模型进行分析、提取手势参数,然后采集手势样本预处理,对图像中的手势分割和特征提取,利用数量巨大的手势样本对手势模型进行训练,最后利用训练好的手势模型对手势识别分类。为了解决当前手势识别方法受平移、旋转等影响导致识别率低的问题,杨学文等[13]提出一种结合手势主方向和类-Hausdorff距离模板匹配的手势识别方法,具有很好的鲁棒性,算法简单易行,但是该方法对实验光照环境要求严格,并且对于获取的手势主方向和库里相近手势的主方向不一致时,易出现错误识别。Li等[14]针对手势识别中容易陷入局部最小点和反向传播神经网络收敛速度慢的缺陷,提出了一种基于混沌遗传算法改进BP神经网络的手势识别方法,提高了识别的实时性和准确性,但是训练速度慢。Wu[15]提出了一种基于双通道卷积神经网络的识别算法,适应简单、复杂、明亮和黑暗的背景,具有很强的泛化能力,但是用于手势识别的神经网络模型需要大量带标签的图像数据训练。王勇等[16]提出基于调频连续波雷达多维参数的卷积神经网络手势识别方法,提高了手势识别中手势描述的信息量,并且手势识别的准确率比单参数方法的识别率高。吴晓凤等[17]通过改进Faster R-CNN框架,提出扰动交叠率算法,该方法能够同时实现手势的检测与识别,比传统算法具有更强的鲁棒性和更高的精度。Huang等[18]提出Mask Scoring R-CNN,在Mask R-CNN中Mask Head的基础上加了一个分支,将Mask R-CNN的掩码分数与预测掩码及其真实标签掩码之间的实际IoU进行比较,从而对掩码的质量评分,不仅目标分类的准确率提升了1.5%,而且掩码生成质量也有了明显的改善。

为了解决目前手势识别识别率较低、分割不精细等问题,本文设计了基于改进的Mask R-CNN[19]的手势分割与识别方法,对该算法中的特征金字塔网络、候选窗口分类器及分割掩码等部分优化,并使用自制数据集对模型训练,实现手势的检测与识别。实验结果表明,与传统算法相比,本文算法具有更高的识别率和更精细的分割掩码。

1 Mask R-CNN算法

2017年,He等[19]在现有目标检测模型Faster R-CNN[20]的基础上,提出了一种新的可以对物体完成实例分割的目标检测模型Mask R-CNN。Mask R-CNN在Faster R-CNN的基础上,由原来只能进行检测与分类任务到实现检测、分类、分割三个任务同步完成。Mask R-CNN在COCO数据集挑战中,对象检测、目标分割和人体关键点检测任务都取得最佳成绩,有着世界领先的水准,并且对每一个目标实例都能生成高质量的分割掩码,实现实例分割。Mask R-CNN可以完成对人、交通工具、动物、生活物品等目标的检测、识别与分割。

Mask R-CNN算法大致可以分为两个阶段,第一个阶段为区域建议网络(Region Proposal Network,RPN)对图像扫描,提取可能包含目标的候选区域,生成提议;第二个阶段实质上是对Faster R-CNN的改进,通过使用RoIAlign对RoIs(Regions of Interest)提取特征,进行分类和边框回归的精调, 并在Faster R-CNN的基础上加入一个全连接的分割子网络,对预测目标实现实例掩码分割。图1所示为Mask R-CNN算法的整体框架。

Mask R-CNN算法的训练步骤如下:

Step1对图像数据进行预处理操作,对图像进行标注,生成数据集。

Step2将处理后的图像输入预训练的神经网络,获取对应的特征图,并对其中的每一点预设定兴趣区域个数。

Step3训练RPN,进行前后景分类与边界框回归,过滤部分候选兴趣区域。

Step4对剩下的兴趣区域进行RoIAlign操作,完成分类、边界框回归、掩膜生成。

Step5迭代执行Step 2-Step 4,直至训练结束。

Mask R-CNN使用标准的卷积神经网络ResNet50/101作为主干网络用于特征提取器,底层检测的是比较低级特征(如边缘、颜色等),较高层检测的是高级的特征(如人、动物等)。而特征金字塔网络则是对主干网络的扩展,实现在多个尺度上更好地获取目标特征,与相邻每一级的特征都可以和高级、低级特征相互融合。

区域建议网络是用于生成候选区域,通过滑动窗口扫描图像,寻找存在目标的区域。在不同尺寸和长宽比的图像中,图像上会生成将近20万个锚框,锚框之间互相重叠以尽可能覆盖图像。RPN快速扫描主干特征图,也就是之前生成的锚框,而不是直接扫描图像,使得RPN可以有效地提取特征,并避免重复计算。使用RPN预测,可以快速选出最好的包含目标的锚框,并对其位置和尺寸进行精调。该方法取代了Fast R-CNN中的选择性搜索,减少了计算冗余,提高了运行速度。而后RoI池化层根据RPN的输出对候选框提取特征,全连接层对候选框进行分类和目标边框回归精调。

RoIAlign是将Faster R-CNN中的兴趣区域的池化过程进行改进,应用双线性插值解决兴趣区域池化过程中的区域不匹配的问题。RoIPooling是对每个兴趣区域提取一个小特征映射图的标准操作,然后依据候选区域的位置坐标在特征映射图中将对应区域池化为固定尺寸的特征映射图,从而方便执行之后的分类与边界框回归的操作。由于RoIPooling这一操作过程存在两次量化过程(第一次是浮点数表示的候选框边界量化为整数坐标值,第二次是将量化后的边界区域分块),造成区域不匹配问题,可能不会影响分类,但对精确预测像素级的掩码有很大的影响。为了解决RoIPooling区域不匹配的问题,提出了RoIAlign这一改进方法。首先对每个候选区域进行遍历,而不是对浮点数边界执行量化操作,然后将候选区域划分为k×k个单元,各单元边界之间同样不执行量化操作,最后在各单元中选取4个常规的位置,取消RoIPooling的量化操作,使用双线性内插方法对这四个位置坐标进行精确计算,对结果执行池化操作。

掩码是Mask R-CNN在Faster R-CNN的基础上增加的一个分支,对输入对象的空间布局进行编码。掩码分支是一个全卷积网络,采用全卷积网络从每个兴趣区域预测一个分辨率为m×m像素的掩膜。这允许掩码分支中的每一层都保持显式的m×m对象空间布局,而不会将其缩成缺少空间维度的向量表示,对检测目标实现实例掩码分割。

2 手势分割与识别

相对于形态样式较为固定的识别对象,本文的识别对象——自然手势——姿态繁多,在虚实交互领域,手势边缘检测精度直接影响到最终的视觉效果,因此需要较高的分割精度。虽然Mask R-CNN对于目标检测有很好的性能,但是在目标实例分割的精度不是很理想,导致最终的识别效果不佳。本文使用基于多尺度融合的特征金字塔网络、候选窗口分类器和分割掩码对Mask R-CNN算法进行优化,使其能够在测试时具有高准确率和更精细的分割精度。

2.1 基于多尺度特征融合的FPN

Mask R-CNN的主干网络是标准的卷积神经网络(ResNet50/101),而特征金字塔网络(Feature Pyramid Network,FPN)是作为主干网络的扩展。FPN通过添加第二个金字塔提升金字塔的性能,第二个金字塔可以从第一个金字塔高级特征传递到底层上。

特征金字塔网络将低分辨率的弱语义特征通过自顶向下的路径和横向连接相结合,对特征进行增强,使其具有高分辨率的强语义特征,在所有级别都有丰富的语义,能够在多个尺度上更好地表示特征。但是由于FPN只采用自顶向下的路径,每一层只包含高层与本层信息而不含有低层信息,无法对金字塔特征内容充分利用,使得RPN不得不选取单一尺寸的特征映射图进行处理,导致最终的检测准确率非最优值;其次,由于大尺寸目标的内容信息主要由最高层的特征提供,而最高层的特征与原特征提取网络结构最终的输出结果是一样的,因而对大尺寸的目标检测准确率与原网络相近甚至略低。

因此,本文提出对Mask R-CNN的主干网络中的FPN进行多尺度特征融合,基于多尺度特征融合的FPN框架如图2所示。改进后的主干网络包括自下而上的反向连接与横向连接和多尺度特征图融合两部分。

(1) 自下而上的反向连接与横向连接。对FPN生成的粗糙分辨率的特征通过自下而上的路径经由横向连接进行增强,每个横向连接合并来自自下而上路径和自顶向下路径具有相同空间大小的特征映射。具体过程为,使用FPN生成的特征图集{P2,P3,P4,P5},然后通过逐个元素相加,对上采样特征映射和相关自上而下的特征映射(其通过1×1卷积层缩减通道数)合并。对此过程执行迭代,直至生成最佳分辨率特征映射图。在迭代操作执行前,将1×1卷积层附加到P_2上从而生成最粗糙的特征映射。最后,各融合图通过添加3×3卷积层生成最后的特征映射图。

(2) 多尺度特征图融合。具体而言,使用自下而上的反向连接生成的特征映射,进行二倍上采样,然后逐元素相加,将上采样映射与自下而上的反向横向连接生成的特征映射融合,再对其进行3×3的卷积。对该过程进行迭代,直至生成最佳分辨率映射。

2.2 候选窗口分类器

Mask R-CNN的目标检测分为两个阶段,第一个阶段为区域建议网络,通过滑动窗口扫描图像特征图,寻找存在目标的区域,这一阶段对图像进行前景和后景的分类,并对目标边框精调;第二阶段为RoIAlign,这一阶段是在由RPN提出的RoI上运行的,该阶段对RPN的目标边框的位置和尺寸进一步微调,并对RoI的目标具体分类。

候选窗口分类器在特征提取网络与RoIAlign结构的设计中,分别增加了一个Dropout层,该层主要用于对FPN中最后一个全连接层生成的特征值进行抑制,以防止在训练过程中产生过拟合,而在测试过程中仅保留全连接层。

Dropout算法原理如图3所示,具体步骤如下:

Step1在训练阶段的每个训练批次开始时,按照伯努利概率分布随机删除部分隐藏层的神经元,但输入输出的神经元个数不变。

Step2将剩下的隐藏层神经元正向和反向更新权重与偏差。

Step3恢复之前删除的神经元,而后再重新随机删除部分神经元,进行正向和反向更新权重与偏差。

Step4对上述过程进行迭代。

Dropout计算公式为:

(1)

(2)

(3)

(4)

式中:r为伯努利概率分布随机产生的向量,向量元素取值0或1,取1的概率为p,取0的概率为1-p,向量维度与某一层输入神经元维度一致;l表示具有L层隐藏层中的第l层;y(l)表示第l层的输出;z(l)表示第l层的输入;w(l)和b(l)表示第l层权重和偏差。

2.3 基于评分策略的像素级分割掩码

Mask R-CNN对检测的目标能够实现实例分割,且采用实例分类的置信度作为掩码质量评分标准。但是,掩码质量被量化为该实例的掩码与真值框之间的IoU,而掩码质量通常与分类质量之间没有很强的相关性,进而造成分割的掩码质量不高。针对掩码质量与掩码评分之间未校准的问题,本文使用掩码评分策略MaskIou Head,对Mask R-CNN网络框架中掩码生成部分进行相应的改进,将实例特征和预测的掩码一起作为输入,并预测输入掩码与真实标签掩码之间的IoU,对生成的掩码进行评分,进而提高分割掩码的质量。掩码分数公式如下:

Smask=Scls×Siou

(5)

式中:Smask为目标的掩码分数;Scls表示目标的类别;Siou表示MaskIoU的回归。

实例化分割掩码框架如图4所示,具体流程为:

Step1对预测掩膜进行最大池化处理,最大池化层使用2×2的过滤器且步长为2,以使预测的掩码与RoI特征具有相同的空间大小。

Step2将RoIAlign层的特征与经过池化层的预测掩码连接,作为MaskIoU Head的输入。

Step3经过MaskIoU Head的四个卷积层和三个全连接层。卷积层都使用3×3的卷积核,前三个卷积层步长为1,最后一个卷积层步长为2用于降采样;前两个全连接层输出设置为1 024,第三个全连接层的输出设置为类别的数量。

3 实验与结果分析

3.1 实验环境及数据

实验环境为Windows 10操作系统、编译环境Python 3.7、Intel(R) Xeon(R) CPU 3.60 GHz、Nvidia GeForece GTX 1080Ti显卡。

由于目前所开源的数据集中基本以肢体动作的检测为主,并没有符合本文对于手部进行检测识别的开源数据集。因此,本文采用自制数据集,该数据集由不同规格的摄像头对多人的手部进行图像数据的采集。针对光照强弱、距离远近、拍摄角度对手势识别的影响,进行全方位的图像数据采集。由于人工采集手势图像的数量有限,因而对图像数据集实施数据增强(旋转、翻转、颜色空间转换、增加噪声等)操作。

在样本标注过程中,参考Microsoft COCO数据集图像分割的数据标准,通过开源软件Labelme对图像进行标注。其中,手势样本示例和标注的手势样本如图5所示。标注手势样本的时候,以密集连续的点连线,将目标的轮廓边缘准确地标注。按照Microsoft COCO数据标注格式,主要包括了路径、样本文件名、标注形式、类别名及连接点坐标。图像的手动标注数据格式如图6所示。

3.2 实验结果比较与分析

本文对于超参数的设置与现有的Mask R-CNN框架基本一致,这些设置具备一定的鲁棒性。在训练中,采用多任务损失函数,定义为:

L=Lcls+Lbox+Lmask

(6)

式中:Lcls为分类损失函数;Lbox为边框损失函数;掩码损失函数Lmask对于每一个RoI的输出维度为Km2,表示K个分辨率为m2的二进制掩码,K表示二进制数量。本文为每一个像素值应用Sigmoid函数,定义Lmask为平均二进制交叉熵损失。对于真实类别为k的RoI,仅在第k个掩码上计算Lmask。本文对Lmask的定义允许网络在不跨类别竞争的情况下,对每一类独立预测掩码。

实验采用COCO数据集格式制作手势数据集,对该数据集进行训练与测试,特征提取的主干网络为ResNet101。表1所示为Mask R-CNN 分别使用FPN和本文改进后的FPN作为特征提取网络的扩展,进行手势识别时的mAP。通过实验结果可以看出,使用改进的FPN进行训练和测试的结果相比原网络而言,识别准确率均有提升。这是由于采用反向横向连接与多尺度特征融合,比原网络包含更多的低层的定位信息和高级语义信息,改善了原网络中只采用自顶向下路径和横向连接的方法生成的特征图无法充分包含低层特征信息的问题。

表1 改进FPN的手势识别的mAP结果比较

实验通过将Dropout以0.1为步长从0.1到0.9共9个阈值分别添加到RPN与RoIAlign中,以及原网络(Dropout阈值为0)进行对比。与原网络相比,添加Dropout层后大多有所改善,因此,Dopout可以有效地避免训练过拟合的问题,且Dropout添加到RPN的参数为0.7且RoIAlign的参数为0.5时,手势数据集的识别准确率提升明显。

图7所示为Mask R-CNN原算法与本文算法对6种手势的mAP实验对比结果,图8所示为原算法与本文算法的损失率结果对比。可以看出,本文算法与原算法相比,每类手势识别的准确率均有1至2百分点的提升。由此可知,本文所提算法对手势的识别具有较好的效果。

表2为Mask R-CNN与本文算法的手势识别率比较结果,本文算法在耗时与原算法相近,但准确率比原算法提高1.74百分点。

表2 手势识别的识别结果比较

图9所示为对掩码改进后的Mask R-CNN算法手势分割与识别效果图,第一行为手势识别结果,第二行为手势分割结果。由图可知,基于本文算法的手势分割结果较为精细,边缘平整,且手势语义识别准确率也较高,体现出本文算法的有效性。

4 结 语

本文提出一种基于改进的Mask R-CNN的手势识别算法,通过将基于多尺度融合的特征金字塔作为特征提取网络的扩展,对候选窗口分类器添加Dropout层防止训练过拟合,将像素级分割掩码结构进行优化修改,实现了手势的分割与识别。实验结果表明,本文算法相比传统算法具有较高的识别率和更佳的分割精度。但因数据采集和标注工作量较大,本文仅选用具有代表性的若干手势进行训练和识别,接下来将在此基础上加入更多类型的手势图像作为研究数据,丰富数据库,以达到更好的识别准确率,同时将考虑进行连续手势动作的语义识别,将其有效应用于虚实交互等领域。

猜你喜欢

手势卷积特征
离散型随机变量的分布列与数字特征
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
挑战!神秘手势
从滤波器理解卷积
抓特征解方程组
不忠诚的四个特征
基于傅里叶域卷积表示的目标跟踪算法
胜利的手势
认手势说数字