1. 引言
手势是人类通过手掌和手指的灵活组合来传达特定信息的非语言表达方式,是聋哑人日常交流的重要方式。随着计算机视觉和人工智能技术的不断进步,手势识别方法作为人机交互领域的重要技术广泛应用于医疗保健、虚拟现实、自动驾驶等领域。早期的手势识别主要依赖于特制的物理设备,通过内置的传感器捕捉手指的弯曲程度和空间位置实现对手势的精确识别,而物理设备的佩戴不仅限制了用户的自然运动且成本较高,难以普及;近年来,基于计算机视觉的手势识别技术迅速发展,现有的手势识别任务解决方案主要可分为传统机器学习技术和深度学习神经网络两大类。
传统的手势识别方法以数据为驱动,通过自动化提取信息来构建模型。白煜等 [1] 采用设定阈值的RGB与YCb Cr混合颜色空间算法实现人体肤色的稳定分割,排除不同光照环境下亮度信息对彩色图像分割的影响;杜义浩等 [2] 提出一种基于遗传算法和弹性网络回归的GA-BLS方法,较SVM、KNN、RF、LDA 4种传统方法准确率高且耗时最短;王宇春等 [3] 设计了一种基于双权重粒子群算法优化支持向量机的分类模型DWPSO-SVM,对NIAPN12类手势动作的识别准确率高达93.274%。上述手势图像识别方法都在一定程度上提升了传统方法的性能,但其对于手势的多变性和复杂性处理能力有限,方法的健壮性和非线性表征能力难以满足现实场景的需求。
随着计算能力的提升和大规模数据集的出现,神经网络技术以深层次的网络结构自动学习数据的表征,展现出强大的特征提取与模式识别能力,特别是卷积神经网络(CNN),因其强大的抗干扰能力和可拓展性,在计算机视觉领域逐渐成为主流。王庆鑫 [4] 通过构建轻量级SSD网络结构并融入深度可分离卷积实现CNN模型的轻量化,在准确率和模型计算开销之间取得了良好的平衡;霍英等 [5] 将YOLOv5中的主干神经网络替换成轻量级神经网络MobileNetV3,同时对手势骨骼的21个关键点进行特征提取,较原始的YOLOv5算法有6%的提升;赵康等 [6] 以减少计算量和参数量为出发点,在(2 + 1) D卷积结构的基础上将其中的3D卷积替换为3D深度可分离卷积,融合注意力机制弥补时空特征的表征不足,在保证模型识别精度的前提下降低了计算成本;王学慧等 [7] 设计了一种小波变换低频信息与Xception网络的静态手势识别方法,大大减少了训练模型的计算参数并提高了运行速度。上述手势图像识别方法均利用轻量级模型的思想改进网络结构以减少模型的参数量,但忽略了现有的轻量级网络模型因提取信息不够丰富而普遍存在的准确率不足的问题。
为了增强轻量级网络模型在手势识别任务中的性能,本文基于MobileNetXt架构 [8] 提出一种新型的轻量级手势识别方法。该方法在Sandglass模块的基础上融合CA注意力机制,引入精确的位置信息增强神经网络对输入数据的表征能力,弥补原MobileNetXt网络使用小卷积核带来的通道间关系建模不足的问题;同时采用MetaAconC激活函数,在保留ReLu6函数在正值区域线性特性的基础上,还在负值区域引入更为平滑的非线性变化,避免ReLu6函数在负值区域置零导致的死区问题,引入自学习参数加强模型的表征能力和泛化性能。本文通过对MobileNetXt网络结构进行优化,在保证模型轻量级的基础上进一步提升手势图像识别的准确率。
2. 网络结构
2.1. MobileNetXt网络结构
MobileNetXt是一种轻量级卷积神经网络模型,常用于移动设备和嵌入式设备完成有效的图像辨别与分类工作,其主要的SandglassBlock模块即沙漏块结构如图1所示。该模块由2个3 × 3深度可分离卷积和2个1 × 1卷积共4个卷积模块组成,3 × 3深度可分离卷积用于空间信息变换,2个1 × 1卷积先后用于降维和升维,使得模型在更高的维度上进行特征映射和空间转换,缓解MobileNetV2网络中倒残差模块导致的梯度跨层传播能力降低、信息丢失和梯度混淆的问题。MobileNetXt网络结构如表1所示,模型具有32个卷积层,每个卷积层后都有一个批量归一化层,网络中使用的扩展率默认设置为6。MobileNetXt网络的轻量化设计使其网络结构相对简单,捕捉图像的特征表征能力不足,对于复杂场景下的物体识别能力有限。
Figure 1. Different types of residual blocks. (a) The classic bottleneck structure of deep space convolution; (b) Sandglass module with bottleneck structure
图1. 不同类型的残差块。(a) 深度空间卷积的经典瓶颈结构;(b) 具有瓶颈结构的Sandglass模块
Table 1. MobileNetXt network architecture
表1. MobileNetXt网络结构
2.2. CA-Sandglass模块
注意力机制的合理使用对于提高CNN的网络性能具有显著作用。CA模块 [9] 是注意力机制的一种,相较于常用的SE注意力机制 [10] ,它不仅能捕获跨通道的信息,还能捕获方向和位置感知的信息,灵活且轻量。CA模块可分为2个部分,分别为坐标信息嵌入模块和坐标注意力生成模块。
CA注意力机制通过精确的位置信息对通道关系和长程依赖进行编码,采用坐标信息嵌入模块将全局池化操作分解为一系列一维特征编码。对于输入X,使用尺寸(H, 1)和(1, W)的池化核在宽度和高度方向分别进行特征映射,得到高度h和宽度w的第c个通道的全局特征如下:
(1)
级联坐标注意力生成模块,在得到的两个特征图
和
上进行F1变换,输出
(
,r表示下采样比例),即空间信息在水平方向和竖直方向的中间特征图。沿着空间维度将f切分为两个单独的张量
和
分离高度和宽度信息,利用卷积
和
将特征图
和
变换到和输入X相同的通道数,输出如下:
(2)
最后将
和
作为注意力机制的权重进行拓展,得到最终的CA注意力机制模块如下:
(3)
改进网络中CA-Sandglass模块的模型结构如图2所示。在SandglassBlock模块最后的3 × 3深度可分离卷积后,输入尺寸为
的特征张量。为了保留原始特征信息并引入新的特征变换,使用恒等映射将原始特征张量直接传递到后续层,筛选学习原始特征中的有效信息,使用空间变换在空间上对特征图重新排列,捕捉特征间的关联性和上下文信息,得到张量大小为
。再基于残差连接分别从宽度和高度方向进行全局平均池化,将得到的两个尺寸为
的特征图使用Concat连接拼接在一起实现特征融合,使用共享的1 × 1卷积融合通道信息并降维。使用批量归一化缓解模型训练过程中的内部协变量偏移问题,并融合ReLu激活函数增加模型的非线性。最后,为了在保留原始特征空间结构信息的基础上调整通道数,将特征图分离成宽度和高度方向的特征后分别融合1 × 1卷积和Sigmoid激活函数,使用空间注意力机制扩展宽高特征使张量输出尺寸恢复为
。
Figure 2. CA-Sandglass module structure
图2. CA-Sandglass模块结构
2.3. MetaAconC激活函数
ReLu激活函数 [11] 在很长一段时间都是最佳的神经网络激活函数,主要是源于其非饱和、稀疏性等优秀的特性,但是它也同样会产生神经元坏死的严重后果。Ningning Ma等 [12] 从Swish激活函数和ReLu激活函数的公式出发,挖掘其中的平滑近似原理,并应用到Maxout系列激活函数上,提出了一种新型激活函数即Acon激活函数,网络结构如图3所示。
Figure 3. Acon module network structure
图3. Acon模块网络结构
Acon函数之所以能轻易地在激活与非激活的状态间转化,是因为其切换因子能适应控制函数为线性或非线性。因此,相较于传统激活函数ReLu,Acon允许每个神经元的激活特性适应变化,这种特定的激活行为有助于提高泛化和转移性能。在此基础上引入一个额外的可学习参数
,结合一个小型卷积网络和Sigmoid函数来动态控制激活函数的线性与非线性,实现在训练过程中动态地调整函数形状以提高模型的性能。
Figure 4. MetaAconC activation function fusion position and structure
图4. MetaAconC激活函数融合位置与结构
改进网络中MetaAconC激活函数的融合位置与结构如图4所示。融合位置位于深度可分离卷积的批归一化层后。输入尺寸为C × H × W的张量,经过全局平均池化沿高度和宽度聚合信息生成一个尺寸为C × 1 × 1的通道级别统计量,将生成的统计量通过两个卷积层(fc1和fc2)进行特征变换,进一步提取通道间的依赖关系并实现信息的非线性映射,使用sigmoid激活函数生成每个通道的权重beta,反映不同通道在特征表示中的重要性。同时,为了增加模型的灵活性和表达能力,引入大小为C × H × W的模块计算dpx作为输入特征图的线性变换,其中变换依赖于两个尺寸为C × 1 × 1的自学习参数t1和t2。最终,利用空间信息恢复特征图的尺寸为C × H × W。每个通道的权重由beta和dpx共同决定,使得网络能够根据输入数据的特性进行自适应调整,大大提高模型的灵活性和表达能力。
3. 实验方法与结果分析
3.1. 数据集与实验环境
实验采用由新加坡国立大学(National University of Singapore)开源的NUS-II手势数据集 [13] 测试本文提出的方法。该数据集包含2000张RGB三通道图像,涵盖字母A~J共10种不同手势类别,每一类别均包含200张图像,这些图像由50名年龄介于22~56岁、来自不同种族的男性和女性在多样化的复杂背景下拍摄完成,部分图像示例如图5所示。在数据集预处理阶段,以7:2:1的比例将数据集随机分割为训练集、测试集和验证集,同时为了提升模型的泛化能力,使用随机裁剪、旋转、缩放及平移等实时数据增强技术,将训练样本的数量扩展至8000张。
Figure 5. NUS-II gesture dataset example image
图5. NUS-II手势数据集示例图像
实验环境为Ubuntu20.04,Python 3.8版本,使用PyTorch 1.10.0作为深度学习框架,在120GB内存,RTX 4090 24GB显卡的配置上进行训练。实验的初始学习率设置为0.001,选用AdamW优化器调整模型参数,迭代周期Epoch为50,批处理大小Batch Size为16。在训练之前先将原始的手势图像进行尺寸归一化处理,转换为244 × 244 × 3的三通道RGB图像,再将RGB图像的每个通道像素值映射为浮点数进行标准化处理,提高模型对不同光照环境下图像变化的适应性和泛化能力。使用回调函数在训练过程中动态调整学习率,加速模型的收敛速度。将验证集的准确率作为回调函数的监测指标,若连续3个迭代周期内验证集准确率没有显著提升,则自动触发学习率调整机制将学习率减半。
3.2. 实验结果分析
3.2.1. 消融实验
为了评估改进后MobileNetXt网络模块的性能表现,在改进的网络架构内,对CA-Sandglass模块和MetaAconC激活函数进行消融对比实验,验证各模块对网络性能的贡献和影响,结果如表2所示。通过对比发现,当所有模块融合时,本文网络相较于原MobileNetXt网络计算参数量有所增长,但识别准确率提升了2.25%,对于每一个单独模块的改进均使准确率有1.06%~1.78%的提升,且参数量增长幅度较小。
Table 2. Results of ablation comparison experiment
表2. 消融比较实验结果
3.2.2. 激活函数对比实验
为了全面评估MetaAconC激活函数的性能优势,本文使用5种不同的激活函数在改进后的MobileNetXt模型上进行实验比对。每种激活函数均进行10次独立的测试确保实验结果的可信度,最终求得该模型下各激活函数的平均准确率如表3所示。
Table 3. The average accuracy of models under different activation functions
表3. 不同激活函数下模型的平均准确率
可以看出,使用MetaAconC激活函数的模型平均准确率为99.02%,与Sigmoid函数和ReLu6函数相比分别有8.5%和2.25%的提升。Sigmoid函数中梯度消失问题影响了模型的收敛速度和效果,因函数的输出不以0为中心,导致模型在训练过程中的权重更新不稳定;相比之下,ReLu6函数在一定程度上缓解了梯度消失问题,在输入值大于0时保持了恒定的梯度,但函数在输入值小于0时完全无激活,容易导致部分神经元在训练过程中坏死,不再对模型的输出产生影响;而MetaAconC激活函数有效避免了梯度消失和神经元坏死的问题,在模型训练过程中表现出较好的性能。同时,MetaAconC激活函数的模型平均准确率与Swish函数和SMU函数相比分别有0.41%和0.11%的提升。Swish函数是一种自门控激活函数,结合了Sigmoid函数的门控特性和线性函数的优点,且在不同输入区间内具有不同的激活强度,使得函数在模型训练过程中能较好地适应数据的分布;SMU函数是一种平滑的、可微的、有界的激活函数,通过平滑的过渡来避免ReLu函数在0点处的不连续性;尽管Swish和SMU函数都在一定程度上改进了传统激活函数的缺点,但MetaAconC函数可以根据网络参数自适应地调整激活函数的形状,进一步提升了模型的表达能力,在深度学习任务中表现更稳定。
3.2.3. 改进网络与其它网络比较
为了验证本文网络的可行性,在NUS-II手势数据集上与原始MobileNetXt、ShuffleNet、GhostNet、EfficientNet和SqueezeNet 5个经典轻量级卷积神经网络进行比较,综合考虑网络的训练时间、模型大小、模型参数量和准确率等指标对模型性能进行评判,实验结果如表4所示。
Table 4. Comparison of network model performance
表4. 网络模型性能比较
可以看出,本文网络的训练时间最短,在训练过程中具有更高的计算效率,能更快地收敛到理想的性能水平。SqueezeNet使用“Squeeze”层压缩特征图的通道数,使用“Expand”层增加通道数量产生表征特征,多次使用1 × 1卷积核降低模型的参数数量,极大程度上缩小了模型的大小,但其网络深度较浅,在训练过程中容易受到梯度消失或爆炸的影响,在处理复杂任务、学习深层特征方面表现较差。ShuffleNet通过引入通道混洗操作来增强模型的信息流动能力,当使用宽度因子加宽网络时,计算分支容易产生通道冗余,相较之下本文网络具有更好的表征能力,能够捕捉精确的位置信息和通道关系编码到神经网络中。尽管SqueezeNet和ShuffleNet在模型参数量上占有一定优势,但网络的识别准确率仅有95.63%和94.81%,均远低于本文网络,在一些对分类精度要求较高的任务中难以满足预期标准。GhostNet通过简单的线性变换生成冗余的特征图,以较小的计算代价获得更丰富的特征信息,EfficientNet通过复合缩放方法和Compound Scaling技术,在网络的深度、宽度和分辨率三个维度上进行联合优化,确保网络在扩大规模时能够保持各维度之间的协调和平衡,实现有限计算资源下的性能提升,但从训练时间、模型大小、计算参数量和准确率等指标来看,上述网络的模型性能均逊于本文网络。
Figure 6. Network model accuracy curve
图6. 网络模型准确率曲线
各网络模型在训练过程中的准确率变化曲线如图6所示。显而易见,虽然本文网络的计算参数量较原MobileNetXt、ShuffleNet、SqueezeNet网络模型大,但模型训练收敛速度最快,约在第8个Epochs后验证集准确率曲线趋于稳定。EfficientNet、SqueezeNet和GhostNet网络在收敛前数据波动较大,但所有模型均在13个Epochs后趋于稳定。
4. 结论
本文提出了一种基于改进MobileNetXt网络的手势识别方法,通过CA注意力机制改进Sandglass模块,在保留小卷积核减少模型参数的基础上强化了特征通道间的信息交互;使用MetaAconC激活函数加强模型的特征学习能力和梯度传播效率。本文方法在NUS-II手势数据集上识别率达99.12%,训练时间为3117 s,模型大小为14.83 MB,模型参数量为3.89E+06;消融实验证明了CA-Sandglass模块和MetaAconC激活函数对模型的识别准确率均有提升;激活函数对比实验证明了MetaAconC函数通过自学习参数更能提升模型的表征能力,在深度学习任务中表现更稳定;通过与其它轻量级网络进行比较,证明本文方法在保持模型轻量化的基础上准确率更高,在训练过程中收敛速度最快,具有较好的鲁棒性和泛化能力。本文网络是基于MobileNetXt的轻量级小型网络,后续将在保证识别准确率的同时通过模型剪枝和知识蒸馏等方法进一步压缩模型参数量,提升模型的可拓展性和可部署性,并尝试将其应用于移动端解决实际问题。
基金项目
浙江省一流课程建设项目。