基于注意力机制和MobileNet的手势识别算法研究

作者: 楚康波 牛芳琳

基于注意力机制和MobileNet的手势识别算法研究0

摘要:为了提升基于深度学习的手势识别算法的精度与效率,文章提出了一种改进的YOLOv4-tiny的手势识别模型,首先,利用轻量化网络MobileNet代替YOLOv4-tiny中的三个CSPBlock作为YOLOv4-tiny的主干提取网络,目的是降低网络的计算量和参数量。其次在YOLOv4-tiny网络中引入自注意力机制,更好地获取丰富的上下文信息,通过结合自注意力机制的方法,弥补模型轻量化带来的部分精度损失。经过在不同特征提取模型以及注意力机制的作用下的手势识别测试,MobileNet比CSPBlock模型在YOLOv4-tiny中对手势识别准确率上相差不大,但MobileNet模型运行时间仅为CSPBlock模型所需时间的三分之二。同时,与未引入注意力机制的准确率相比较,MobileNet模型识别准确率从93%上升到96%。由此表明,文章提出的基于注意力机制和MobileNet手势识别模型比普通手势识别模型识别效果更佳。

关键词:深度学习;手势识别;YOLOv4-tiny;轻量级;注意力机制

中图分类号:TP391      文献标识码:A

文章编号:1009-3044(2022)29-0004-03

手势作为一种无声的交流工具,成为生活中沟通交流的重要方式。特别在一些特殊的场合(比如听力障碍者间的交流、真空的条件下等),更能体现手势的便捷性和重要性。随着科技的发展,人机交互成了人们生活中的一部分,人控制机器,使机器按照人的意志去工作,此时手势作为一种无声的交流工具被广泛地应用于各种人机交互中,包括航空航天、智能家居、安全驾驶等领域。

目前手势识别算法主要有三种,分别是基于硬件设备、基于机器视觉和基于深度学习的方法。首先,基于硬件设备的方法,比较成熟且应用广泛,具有识别精度高、识别速度快等特点,比如可穿戴数据手套[1]、Kinect[2]和Leap motion[3]等方式,但其设备昂贵、人机交互不顺畅。其次,基于机器视觉[4]的方法虽然降低了手势识别算法对于硬件的依赖,但其网络模型复杂化,降低了手势识别速度。

近年来,深度学习在目标检测[5]、图像分类等领域得到了巨大的发展。如YOLO[6]、SSD[7]、R-CNN[8]和Faster R-CNN[9]等算法在目标检测和分类问题中取得了较高的准确率。谢淋东等人[10]提出了一种多尺度卷积特征融合的SSD手势识别方法,引入了不同卷积层的特征融合思想,经过空洞卷积下采样操作与反卷积上采样操作,实现网络结构中的浅层视觉卷积层与深层语义卷积层的融合,代替原有的卷积层用于手势识别,以提高模型对中小目标手势的识别精度;张雷乐等人[11]为了提高手势识别的准确性、鲁棒性以及收敛速度,提出一种基于改进残差网络和动态调整学习率的手势识别方法研究;袁帅等人[12]提出基于改进YOLOv3网络与贝叶斯分类器相结合的手势识别深度学习模型,虽然解决了数据易受影响问题并且增强了网络不变性,但是该方法使用的手势数据集较为简单且背景较为单一;郭紫嫣等人[13]针对使用YOLOv4算法识别手势的误检和漏检较多及手势数据较少的问题,提出了一种基于改进YOLOv4的手势交互算法,该方法能识别复杂场景下的手势,并且能够满足实时要求。基于深度学习的手势识别方法虽然能够取得较高的识别精度,但随着网络层数的不断加深,给神经网络模型在嵌入式设备上存储的硬件成本、计算量和训练运行的难度上带来了巨大挑战。因此,本文提出一种具有轻量级卷积神经网络的手势识别方法,在保持高精度的同时,降低模型大小,使模型更利于在资源有限的移动端或嵌入式设备上部署。

1 Yolov4-tiny网络结构

YOLOv4-tiny的主干网络为CSPdarknet53-tiny,检测模型的主要结构如图1所示。

在YOLOV4-tiny中,对(104,104,64)的特征图进行上采样并与(52,52,128)特征图融合,得到感受野较大的检测路径,然后结合最小感受野的检测路径由骨干网直接输出,检测路径协同完成检测任务,保证多尺度感知。虽然,现有的基于 Yolov4-tiny 网络在狭小空间中取得良好的检测性能,但也存在以下不足:(1)骨干网络过于轻量化,特征图在逐层传递过程中轮廓演化不足,无法在训练过程中有效地学习更多的遮挡目标特征。(2)颈部传统特征融合网络(Feature Pyramid Network,FPN)过于简单,不同尺度特征图间融合效率低下,易丢失边缘细节信息。(3)传统IoU-NMS 算法在后处理阶段具有局限性,易将重叠预测框误删,导致漏检。针对以上问题,提出基于MobileNet[14]和注意力机制的YOLOv4-tiny手势识别模型。

2改进的YOLOv4-tiny手势识别模型

2.1 YOLOv4-tiny结合注意力机制

本文参考CBAM[15]设计了注意力模块,并将该模块添加到骨干网络中,使检测模型更加关注手势区域。通道注意力和空间注意力可以表示为:

[F,=Mc(F)⊗F]                           (1)

[F,,=Ms(F,)⊗F,]                           (2)

其中[⊗]表示逐元素乘法。[F]表示输入特征图,[F,]表示细化后的特征图,[F,,]表示最终细化后的输出。

通道注意力如图2(a)所示,利用了特征图的通道间关系。每个卷积核都可以看作是一个特征检测器,因此每个通道产生的特征图可以代表一种对象特征,通道注意力的目的是集中在所有通道中最有意义的部分。首先,挤压特征图的维度,它会分别经过最大池化层和平均池化层,然后输出两个特征描述符,最大池化层是强调对象的重要特征,平均池化层是有效地计算对象的范围。其次,两个特征描述符都被转发到一个共享网络,共享网络由级联层组成:一个输入层、一个输出层和三个隐藏层。当两个描述符通过共享网络时,使用逐元素求和来合并输出特征向量。最后,通过sigmoid函数激活特征向量,得到通道注意力图。

空间注意力如图2(b)所示,使用空间特征关系来生成空间注意力图。当图像进入卷积神经网络时,图像中的每个像素都会参与计算。与通道注意力类似,空间注意力集中在图像中对物体贡献最大的区域。首先,通道注意力图和特征图计算出的细化特征图将分别通过最大池化层和平均池化层,得到两个特征描述子。其次,将两个特征描述符连接起来,然后应用两个卷积层来强调描述符的区域。最后通过sigmoid函数激活向量,得到通道注意力图。经过通道注意模块和空间注意力模块后,对特征图的权重进行优化,最终的特征图会有更多的手势特征信息。假设平均池化和最大池化过程分别为[Favg]和[Fmax]。[Attavg]可以很好地过滤掉物体的全局背景信息,[Attmax]可以很好地突出手势的显著特征。设[X=x1,x2,...,xn],其中[xn]表示第n个卷积核的权重。[Attavg]和[Attmax]的公式如下:

[Attavg=1H×Wi=1Hj=1Wxn(i,j)=Favg(xn)]            (3)

[Attmax=agrmax(i=1Hj=1Wxn(i,j))=Fmax(xn)]          (4)

共享网络后,通道注意力的输出可以表示为:

[outputavg=relu(FC×Attavg)]                   (5)

[outputmax=relu(FC×Attmax)]                   (6)

[outputchannel=σ(outputavg×outputmax)]      (7)

矩阵乘法得到的加权特征,滤波后的通道特征为[W=ω1,ω2,...,ωn],可以表示为:

[W=(xn,outputchannel)=xn×outputchannel]      (8)

在通道特征过滤之后,需要将[W]输入空间注意力模块中。首先,特征向量分别通过平均池化层和最大池化层,然后沿着通道维度,将特征连接起来得到[Cconv∈R1×1×2C]。为了得到特征权重信息,需要进行卷积操作,让[F5×5]表示输入通道为2,输出通道为1,核大小为5×5的卷积操作。最终过滤后的权重可以表示为:

[outputcbsp=F5×5(Cconv)×W]              (9)

整个注意力模块的输出是输出[outputcbsp+X],重新计算原始输入向量不同部分的比例,通过这种结构,模型可以选择性地增强包含手势的特征,抑制不相关或弱特征。本章提出的模型如下图所示:

2.2 YOLOv4-tiny结合MobileNet

YOLOv4-tiny方法使用CSPBlock模块作为残差模块,提高了准确性,但也增加了网络复杂性,降低了对象检测的速度。为了加速手势识别检测速度,使用Mobilenet模块代替YOLOv4-tiny中的三个CSPBlock模块。本文以Mobilenet-V1作为主干提取网络,Mobilenet-V1模型核心思想便是深度可分离卷积块(Depthwise Separable Convolution)。常规卷积核是同时对三个通道做卷积得到一个数,深度可分离卷积先用三个卷积对三个通道进行卷积后,得到三个数,再通过一个1×1×3的卷积核(pointwise),得到最终的一个数。当提取的特征属性越来越多时,深度可分离卷积就能节省更多的参数,本节提出模型如图4所示:

3实验

3.1自制数据集

本文共采集了15种类型的手势图片约10000张,15种类型为分别为从1到10和比心、OK、赞、踩、打电话,其中训练集8000张、验证集1000张、测试集1000张。采用Anoconda中的Lambimg用拉框的方式进行人工标注如图5所示,得到的标注信息存储成xml格式的文件。

3.2实验设置

本文所有的实验都在Linux系统下训练采用PyTorch框架,训练设置每次迭代训练样本数为64分16个批次。在自制的手势数据集上对应的迭代次数,与损失函数的关系。模型在迭代10000次左右达到了收敛,损失值在0.1左右。mAP(平均精度的)、FPS(每秒帧数)和GPU利用率用于定量评估不同方法的性能。mAP是检测所有类别的平均精度的平均值。FPS表示一秒内可以成功检测到的图像数量。GPU利用率表示在测试不同检测方法时使用的GPU内存。对于评估,引入了精度(Pr)、召回率(Re)和F1分数,它们被广泛用于分类和检测视觉任务。定义如下:

[Pr=TPTP+FP]                               (1)

[Re=TPTP+FN]                              (2)

[F1=2×Pr×RePr+Re]                           (3)

上一篇 点击页面呼出菜单 下一篇