APP下载

基于CornerNet-Saccade 的手部分割模型

2021-12-20林竞力肖国庆

计算机工程 2021年12期
关键词:掩码角点手部

林竞力,肖国庆,张 陶,文 鑫

(西华大学 电气与电子信息学院,成都 610039)

0 概述

随着人工智能和物联网时代的发展,以用户为中心的新型交互方式如姿态、手势、语音控制、表情等被广泛应用,其中手势交互由于具有直观性、自然性、丰富性等优点,成为目前的研究热点。手部分割作为手势交互技术研究的核心,具有极大的研究价值。

手部分割的目的是隔离手部数据与背景数据,目前已有诸多研究人员开展该方面的研究。文献[1-2]通过对图片的颜色、纹理、形状等特征建模完成分割,该类方法处理速度快但泛化性能差,受环境影响大,难以满足真实条件下的分割。文献[3]通过佩戴数据手套获取手部位置与形状,该类方法准确度高、鲁棒性好,但成本较高,便利性较低。文献[4-5]通过查找手部区域不规则光流模式分割手部数据,该类方法对亮度变化较为敏感,能识别到运动中的手部。

使用多模态图像如RGB-D 等对手部进行分割也是发展趋势之一,文献[6-7]通过实验表明该类方法准确率高,使用方便,但对数据采集设备要求较高,且增加了成本。随着深度学习技术的发展,以神经网络为基础的手部分割方法成为主流,如文献[8]使用基于卷积神经网络(Convolutional Neural Network,CNN)的皮肤检测技术,文献[9]针对手部分割任务构造一种基于跃层连接的编解码网络,文献[10]提出基于密集注意力机制的DensAtentionSeg网络,文献[11]评估了基于RefineNet[12]的分割模型。这些方法均在手部分割任务中表现良好,但往往依赖较深层次和高分辨率的特征,因此,多数用于手部分割的网络模型存在参数量大、推理时间长的问题,难以满足实时性要求。

为实现高精度且实时的手部分割,本文在CornerNet-Saccade 模型[13]基础上利用多尺度特征,通过添加掩码分支构建一个基于扫视机制的手部分割模型,并使用以自我为中心的手部分割数据集Egohands进行训练。此外,利用MobileNet V2[14]中的线性瓶颈结构,构造实时性更高的轻量化模型,进一步提高模型效率。

1 CornerNet-Saccade 模型

CornerNet-Saccade 是一种基于扫视机制[15]的目标检测模型,在目标检测领域,以其高精度和低复杂度得到广泛的关注。扫视机制是指在推理期间选择性地裁剪和处理图像区域再进行后续操作。以输入大小为255×255×3、深度为54 层的CornerNet-Saccade模型为例,该模型主要由Hourglass-54 特征提取模块、注意力图模块和角点检测分支3 个模块组成。

1.1 特征提取模块

CornerNet-Saccade 模型中的Hourglass-54 特征提取模块由3 个三阶沙漏网络[16]组成,输入层大小为255×255×3。沙漏网络的主要结构为沙漏模块,图1 所示为Hourglass-54 网络所使用的最后一个沙漏模块,由多个残差模块[17]堆叠而成,输入张量经前2 次降采样后变为64×64×256。

在图1 中,方框内数据为输入输出的特征通道数,第1 个残差模块对输入进行下采样并增加特征通道数,下采样后则进行特征提取,16×16、32×32、64×64 均为为特征图尺寸。可以看到,左半边经过下采样后再进行上采样,逐步提取更深层次信息。右半边则直接在原尺度上进行,将两路结果相加,既提取到了较高层次信息又保留了原有层次信息。

图1 沙漏模块结构Fig.1 Structure of the hourglass module

1.2 注意力图模块

在所提网络中,每个沙漏模块都将生成3 个不同尺度的特征图,如图1 所示,在每次特征融合之前输出一个注意力图张量,这些张量具有不同的尺寸,能够反映不同层次的图片信息。使用这些不同尺度的张量来检测不同大小的手部图像。其中:尺寸为16×16 的张量检测尺寸大于96 的大物体;尺寸为32×32 的张量检测尺寸大于32 的中等大小物体;尺寸为64×64 的张量检测尺寸小于32 的小物体。

在训练过程中,将目标框的中心位置设定为正样本(y=1),其余为负样本(y=0),注意力图损失函数Latt如式(1)所示:

其中:γ=2,α=4,用于平衡正负样本与难易样本之间的权重;y'表示预测到的值。

根据注意力图检测到关键点后将下采样后的图片进行缩放,根据物体尺寸选择缩放尺度,并在原图上进行裁剪,生成多个尺寸为255×255 的图片,以进一步检测。

1.3 角点检测模块

如图2 所示,特征提取模块获得特征图后进入角点检测模块以预测目标框。检测模块由结构相同的2组卷积组成,包括左上角和右下角预测。为提取角点特征,检测模块先对特征向量进行角点池化(Corner Pooling)[18]。对于左上角池化,从右侧观察边界框顶部水平方向,从下方观察边界框的最右边。因此,左上角的池化操作是分别对特征图中向量的左侧和顶部进行最大池化后相加的过程。将角点池化后得到的特征向量分别进行3 组卷积得到目标框,产生的张量有热图(Heatmaps)、嵌入向量(Embeddings)和偏移(Offsets)。

热图的尺寸为64×64,表示对应位置是否为角点。由于使用离正样本近的负样本角点也能产生较好的边界框,因此在计算热图的损失函数时,使用高斯分布增强过的正样本标签处理损失函数,降低正样本附近圆周位置负样本的惩罚,权重由β参数控制。热图的损失函数Ldet如式(2)所示:

其中:α 参数控制难易样本的权重;pij为位置(i,j)预测到的值;yij为真实值。

在检测过程中可能会检测到多个角点,所以需要对角点进行配对,判断角点是否属于同一个目标框。因此,在CornerNet-Saccade 中还使用了1-D 嵌入向量,向量的距离决定了属于同一目标框的可能性。如式(3)和式(4)所示:

其中,etk代表目标k 左上角点的嵌入向量;ebk代表其右下角点的嵌入向量;“pull”损失用于组合角点,“push”损失用于分离角点。

在预测角点的过程中,(x,y)位置的像素被映射为而产生一定的精度误差,因此在映射回输入尺寸时,需对角点位置进行微调,偏移的损失函数Loff如式(5)所示:

其中:Smooth L1 为损失函数;o表示偏移量。

2 改进手部分割算法

2.1 网络结构

针对手部分割效率较差的问题,在CornerNet-Saccade 的基础上构造了基于扫视机制的手部分割模型。总体架构如图3 所示,流程分为2 步,先粗略检测(左),再精细分割(右)。

图3 手部分割总体架构Fig.3 Overall architecture of hand segmentation

粗略检测阶段用下采样后的图片生成注意力图和特征图谱,估计目标在原图中的位置和粗略尺寸。精细分割阶段将检测到的位置映射回原图,对原图进行剪切后送入检测分割网络,精确定位目标位置并生成掩码。这种分两阶段检测的方法模拟了人观察物体的方式,即先检测物体大概位置,后对物体进行精细观察,使计算机在进行图像处理时无需对所有的像素均进行详细分析,进而大幅提高分割的精度和速度。

2.1.1 训练阶段

由于手部分割数据较少,因此需使用迁移学习方法得到模型参数。首先,在ImageNet 数据集上对特征提取网络进行训练得到权重参数;然后在特征提取网络基础上添加角点检测网络、注意力图网络,使用COCO 数据集对网络进行训练;最后将类别数降至1,添加掩码分支,利用训练集数据微调网络,得到模型参数。通过迁移学习的方法能够更快地训练出理想结果,并且在样本标签不够的情况下也能得到理想的结果。

本文要求模型既具有粗略检测又具有精细分割的能力,因此训练时,输入随机选取的下采样图片或裁剪图片,输入层大小为255×255×3。输入下采样图片时,将长边缩放至255,短边按比例缩放,其余位置补0;输入裁剪图片时,在目标框中心位置附近取中心点,根据物体大小随机决定缩放尺寸,裁剪出尺寸为255×255 的图片。

2.1.2 推理阶段

推理阶段流程如图4 所示,将下采样后大小为255×255×3 的图片传入训练好的网络,提取到特征后,利用最后一个沙漏网络得到的注意力图和角点检测获得的位置对图片进行裁剪。

图4 推理阶段流程Fig.4 Procedure of inference phase

在获得裁剪图片时,先选取得分大于阈值0.3 的点作为图片中心位置,放大倍数则根据物体尺寸得出。物体尺寸越小,放大倍数S越大(Ssmall=4,Smedium=2,Slarge=1)。根据角点检测结果获取裁剪图片时,通过边界框尺寸决定放大尺寸,边界框长边在放大后,小物体达到24,中物体达到64,大物体达到192。将裁剪后的图片再次送入网络,角点检测生成目标框,并使用Soft-NMS 算法[19]消除冗余目标。

掩码结果与目标框结果相关,将目标框内区域作为感兴趣区域,选择置信度大于0.8 的目标框,对目标框得分进行排序,得分由大到小排列。后续目标框与该目标框重合面积(IOU)较大时,则删除该目标框,最后将目标框与掩码图片映射至原图得到分割与检测结果。

2.2 掩码分支

在沙漏网络提取特征后,添加一组卷积网络预测手部图像掩码,结构参数如表1所示。输入128×128特征图,经最大池化后,与更深尺度特征融合,输出结果大小为64×64。将手部分割问题转化为二分类问题,并使用Sigmoid 函数,大于0 的位置认定为手部位置,小于0 为背景。

表1 掩码分支结构参数Table.1 Parameter of the mask branch structure

掩码分支在训练时使用Focal loss 函数[20],通过引入γ参数降低简单样本的权重,使训练时更加关注难以区分的样本。掩码分支损失函数Lmask如式(6)所示:

其中:γ=2,pij表示(i,j)位置掩码特征图的值;yij表示真实值;yij=1 时该点为掩码区域。

在计算掩码的损失函数时,若将掩码图片转化为64×64 大小后进行计算,则与输入图片对比,特征图上每个像素点均对应着裁剪后图片的16 个像素,因此可通过改变掩码网络的尺寸来改变其分割精度。

3 线性瓶颈结构

本文使用Hourglass-54 作为特征提取网络,该网络由许多残差块堆叠而成,因此大部分计算资源将消耗在残差模块上,残差模块如图5 所示,分为直接映射和残差部分。虽然残差模块的使用减少了计算资源的消耗及缓解了梯度消失/爆炸的问题,但就参数数量和推理时间而言,其代价依旧昂贵。

图5 残差块Fig.5 Residual block

为更近一步减少模型复杂度,提高模型效率,使用线性瓶颈结构对网络模型进行优化。线性瓶颈结构如图6 所示,图6(a)为输入和输出尺寸改变的残差模块,图6(b)为输入和输出尺寸相同的残差模块。为匹配特征维度,将输入和输出改变的残差模块在直接映射部分添加1×1 卷积。为减少计算资源的消耗,使用分离卷积替代原来残差模块中的普通卷积。为提高特征提取的准确率,先对特征向量进行扩张操作。为防止破坏特征,保证模型的表达能力,模块的最后一个卷积使用线性激活函数(Linear:Linear activation function)代替线性整流函数(Rectified Linear Unit,ReLU)。

图6 线性瓶颈结构Fig.6 Linear bottleneck structure

4 实验

4.1 数据集准备

实验使用的Egohands数据集是以自我为中心背景复杂下的手分割数据,共由4 800 张720×1 280 像素的JPEG 图片组成。这些图片取自48 个不同环境和活动,将其随机分为训练集4 400 张和测试集400 张,并生成掩码图片和角点信息。部分数据集如图7 所示。

图7 Egohands 数据集Fig.7 Egohands dataset

4.2 实验环境

实验在Linux 系统上进行,显卡为11 GB 的Geforce RTX 2080 Ti,CPU型号 为i5-8500,使用Pytorch 深度学习框架。

4.3 网络训练

根据2.1.1 节中所描述方法,训练改进手部分割网络。在完成预训练后,使用批梯度下降法和Adam 梯度下降法更新权重,Batch_Size设为8,共进行200次迭代,每次从训练集中随机选取3 000 张图片进行迭代。

迭代时的损失函数如式(7)所示,由3 部分组成,包括注意力图损失Latt,角点检测损失Lcor和掩码分支损失Lmask。其中角点检测损失由上文中的热图损失(Ldet)、嵌入向量损失(Lpush+Lpull)和偏移量损失(Loff)组成。

在训练时,3种损失函数的损失值曲线如图8所示,cor_loss 为角点损失值,att_loss 为注意力图损失值,mask_loss为掩码分支损失值。由图8 可知,3 种损失函数所占比重基本相同,且随着迭代次数的增加,损失函数能够很好的收敛,网络参数逐渐平衡,因此可以判断该损失函数具有良好的稳定性和有效性。

图8 3 种损失函数的损失值曲线Fig.8 Loss values of three loss functions

图9 所示为训练过程中训练集总损失值(Train_Loss)和测试集总损失值(Vaild_Loss)。可以看到,测试集上损失值比训练集上小,随着迭代次数增加,两者均收敛良好,且从损失函数上看,没有产生过拟合现象,因此可以判断该网络训练成功。

图9 总损失值曲线Fig.9 Total loss curve

4.4 实验结果

将训练好的网络在划分好的Egohands 测试集上进行验证,使用平均交并比(mIOU)、平均精确率(mean average Precision,mPrec)和平均召回率(mean average Recall,mRec)等图片分割常用评价指标衡量模型分割效果,分割结果如图10 所示。

图10 本文模型分割性能Fig.10 Segmentation performance of model in this paper

从图10 可以看出,随着迭代次数的增加,平均交并比、平均精确率和平均召回率稳步上升,且在接近100 次迭代后三者均趋于稳定,没有太大改变。此外,平均交并比、平均精确率、平均召回率分别高达88.4%、90.6%、91.2%。

手部分割结果如图11 所示,图11(a)为原始图片,图11(b)是图片掩码的真实值,图11(c)为测试数据产生的掩码结果。

图11 分割效果对比Fig.11 Segmentation effect comparison

从图11 中可知,在复杂背景下,手部分割结果基本正确,手部形态的变化对实验结果没有产生很大影响。为进一步评估模型性能,分别选取了基于全局外观混合模型、基于GrabCut 模型和基于CNN模型的方法进行对比,对比结果如表2 所示,其中,CNN模型包括 RefinNet、U-Net[21]和 Deeplab V3+[22]。

表2 不同模型分割性能对比Table 2 Comparison of segmentation performance of different models

基于全局外观混合模型的方法,利用颜色、纹理和渐变直方图的稀疏组合完成分割,基于GrabCut 的模型采用图分割和最大流技术,两者均属于传统的图像处理方法。基于CNN 模型的方法中,RefinNet模型利用递归方式融合不同层特征完成语义分割,U-Net 模型使用包含压缩路径和扩展路径的对称U形结构,Deeplab V3+模型利用空洞卷积[23]和Xception[24]提取丰富的语义信息,三者在语义分割领域均取得了较好的成果。本文所提模型具有最高平均交并比,且精确率和召回率也仅次于Deeplab V3+模型,具有较高的准确率。虽然如此,本文所提模型就参数数量和推理时间而言仍然昂贵。为适应实时图像处理任务,使用MobileNet V2 模型中的线性瓶颈结构对网络模型进行优化,构造轻量级手部分割模型。轻量化手部模型分割结果如图12 所示。其中,图12(a)为原模型的分割结果,图12(b)为轻量化模型的分割结果。

图12 模型轻量化前后分割效果对比Fig.12 Comparison of segmentation effects before and after model lightweight

对比图12 发现,轻量化模型损失了部分精度,对于模糊物体而言存在少部分误检现象,但对于大部分图片而言无明显差异。为进一步比较分割结果的准确率和实时性,统计了原模型和轻量化模型的平均交并比、平均精确率、平均召回率、网络参数量和计算时间参数。对比结果如表3 所示。

表3 模型轻量化前后分割性能对比Table 3 Comparison of segmentation performance before and after model lightweight

可以看到,与原模型相比,轻量化模型平均交并比、精确率、召回率分别下降2.2、1、1.6 个百分点,但参数减少了65×106,计算时间也降低至44 ms,在移动端部署时将比原模型具有更大的优势。

由于实际的应用场景更加复杂,因此训练出的模型应具有很好的泛化能力。为进一步测试模型在其他场景下的应用,引入新的图像数据[25]对训练好的模型进行测试,部分图片的分割效果如图13 所示,图13(a)、图13(c)、图13(e)为本文基于CornerNet-Saccade 网络所构造的模型,图13(b)、图13(d)、图13(f)为轻量化处理后的模型。可以看到,本文基于CornerNet-Saccade 网络所构造的手部分割网络模型具有良好的泛化性能,在其他以自我为中心的数据集中也能很好地分割出手部掩码。

图13 模型轻量化前后在新数据集下的分割效果对比Fig.13 Comparison of segmentation effect under new date set before and after model lightweight

5 结束语

本文基于CornerNet-Saccade 构造一种高效实时的手部分割模型。应用扫视机制避免对所有像素均进行精细处理,通过在不同尺度特征图中添加掩码分支完成多尺度分割任务,同时使用线性瓶颈结构对残差块进行改进以降低模型参数量,使模型满足实时处理的要求。实验结果表明,该模型在Egohands 数据集上平均交并比为88.4%,高于RefinNet、U-Net、Deeplab V3+等常用手部分割模型。轻量化模型虽然在准确率上有所降低,但计算时间和参数复杂度均大幅减少。下一步将通过融合多尺度特征的方法优化分割细节,并针对严重遮挡情况下的分割问题进行研究,以拓展模型的应用范围。

猜你喜欢

掩码角点手部
手部皮肤软组织缺损修复的皮瓣选择
低面积复杂度AES低熵掩码方案的研究
基于FAST角点检测算法上对Y型与X型角点的检测
基于布尔异或掩码转算术加法掩码的安全设计*
基于边缘的角点分类和描述算法
基于圆环模板的改进Harris角点检测算法
两种皮瓣修复手部软组织缺损的比较
基于掩码的区域增长相位解缠方法
基于掩码的AES算法抗二阶DPA攻击方法研究
发生于手部的硬下疳一例