1前言
-
- 研究的背景和意义
随着人工智能技术的飞速发展,人机交互方式正经历着从传统的键盘、鼠标向更自然、更直观的交互方式转变。语音识别、手势语识别、人脸识别等自然交互技术逐渐成为研究热点,在智能家居、医疗康复、虚拟现实、游戏娱乐等领域展现出巨大的应用潜力。
手势语作为人类日常交流中常用的非语言表达方式,具有直观、形象、快捷的特点。据统计,全球约有4.66亿人患有听力障碍,手语是他们主要的沟通方式,但绝大多数人并不掌握手语,这造成了显著的沟通障碍。基于视觉的手势语识别技术能够将手势语动作实时转换为文本或语音,有效弥合这一沟通鸿沟。此外,在嘈杂环境、需要静音操作的场景(如图书馆、手术室)以及特殊工作岗位中,手势语交互也发挥着不可替代的作用。
近年来,深度学习技术,特别是卷积神经网络在图像识别领域取得了突破性进展。与传统机器学习方法需要手工设计特征不同,CNN能够自动从原始图像中学习层次化的特征表示,在复杂背景、光照变化、尺度变化等条件下仍保持较高的识别精度。因此,基于CNN的手势语识别研究具有重要的理论价值和现实意义。
1.2 国内外研究现状和发展趋势
手势语识别技术的研究可以追溯到20世纪80年代,其发展历程大致可分为基于数据手套的方法和基于视觉的方法两个阶段。早期研究主要依赖数据手套等穿戴式设备,通过传感器获取手部姿态信息,虽然识别精度高,但设备昂贵且影响用户体验。
随着计算机视觉技术的发展,基于视觉的手势语识别方法逐渐成为主流。传统视觉方法通常包括手势语分割、特征提取和分类识别三个步骤。常用的特征提取方法有方向梯度直方图(HOG)、局部二值模式(LBP)、SIFT特征等,分类器则采用支持向量机(SVM)、隐马尔可夫模型(HMM)等。然而,这些方法对环境变化较为敏感,泛化能力有限。
1.3 本文主要研究内容
本文针对静态手势语识别问题,设计并实现了一套完整的端到端解决方案,主要研究内容包括:
(1)数据预处理与增强:构建包含8种数字手势语(0-7)的图像数据集,采用旋转、平移、缩放、亮度调整等多种数据增强技术扩充训练样本,模拟不同环境条件下的手势语变化,提升模型的泛化能力。
(2)CNN模型设计:构建一个层次化的卷积神经网络架构,包含三层卷积层(逐步增加滤波器数量至32、64、128)、批归一化层、最大池化层以及两层全连接层,引入Dropout机制防止过拟合。模型参数量约2.2M,在识别精度与计算效率间取得平衡。
(3)训练策略优化:采用早停(Early Stopping)和学习率衰减(ReduceLROnPlateau)策略动态调整训练过程,避免过拟合并加速收敛。通过可视化训练曲线、混淆矩阵、ROC曲线等全面评估模型性能。
(4)实时识别系统实现:基于OpenCV开发实时手势语识别模块,从摄像头视频流中提取感兴趣区域(ROI),经预处理后输入模型进行预测,并将识别结果实时叠加显示在视频画面上。
本文的创新点主要体现在:结合多种数据增强技术提升模型鲁棒性;通过批归一化和Dropout机制优化网络训练;构建完整的从模型训练到实时部署的系统框架,为手势语识别的实际应用提供参考。
2 相关理论与技术基础
2.1 卷积神经网络基础
卷积神经网络是一类专门用于处理具有网格结构数据(如图像)的深度学习模型。与传统全连接神经网络不同,CNN通过局部连接、权值共享和池化操作,有效减少了网络参数,同时保持了对图像平移、缩放、扭曲等变换的不变性。一个典型的CNN架构通常由输入层、多个卷积层、池化层交替堆叠,最后连接全连接层和输出层构成。
2.1.1 卷积层
卷积层是CNN的核心组成部分,其作用是提取输入图像的局部特征。每个卷积层包含多个卷积核(也称为滤波器),每个卷积核在输入图像上滑动并进行卷积运算,生成对应的特征图(feature map)。
2.1.2 激活函数
激活函数引入非线性,使神经网络能够学习复杂的非线性映射关系。常用的激活函数包括:
ReLU函数(Rectified Linear Unit):定义为f(x)=max(0,x)。ReLU计算简单,能有效缓解梯度消失问题,加速网络收敛,是目前CNN中最常用的激活函数。
2.1.3 池化层
池化层(Pooling Layer)通常跟在卷积层之后,对特征图进行下采样操作。池化层的主要作用包括:降低特征图的空间尺寸,减少后续层的计算量;扩大感受野;提供一定的平移不变性。
最大池化(Max Pooling):取池化窗口内像素的最大值作为输出。最大池化能保留最显著的特征,对纹理信息敏感。
平均池化(Average Pooling):取池化窗口内像素的平均值作为输出。平均池化能保留背景信息,使特征图更平滑。
2.1.4 全连接层
全连接层(Fully Connected Layer)将卷积层和池化层提取的二维特征图展平为一维特征向量,然后进行线性变换和非线性激活。
2.2 神经网络优化技术
2.2.1批归一化
批归一化(Batch Normalization)是一种加速深度网络训练、提高稳定性的技术。其基本思想是在每一层输入之前,对每个批次的数据进行归一化处理,使其均值为0、方差为1,然后再进行缩放和平移变换,恢复网络的表达能力。
2.2.2Dropout正则化
Dropout是一种有效缓解深层神经网络过拟合的正则化技术。其核心思想是在每次训练迭代中,以概率p随机"丢弃"网络中一部分神经元(即将其输出临时置零),这些被丢弃的神经元不参与本次前向传播和反向传播。在测试时,所有神经元均参与计算,但对其输出进行缩放,以保证训练和测试阶段的期望输出一致。
2.2.3学习率调整策略
学习率是影响神经网络训练效果的关键超参数。学习率过大可能导致损失函数震荡甚至发散,学习率过小则收敛缓慢。常用的学习率调整策略包括:
固定学习率:整个训练过程中学习率保持不变,简单但效果有限。
步进衰减:每隔一定轮次将学习率乘以衰减因子。
指数衰减:学习率随训练轮次指数下降。
ReduceLROnPlateau:当验证集损失在若干轮次内不再下降时,将学习率乘以一个因子(如0.5),使模型在损失曲面的平坦区域能够继续优化。
2.2.4早停法
早停(Early Stopping)是一种防止过拟合的简单有效方法。其基本思想是:在训练过程中监控验证集上的性能指标(如损失值或准确率),当验证集性能在连续若干个轮次(称为patience)内没有提升时,停止训练并恢复最佳模型权重。
早停法不仅防止过拟合,还能节省训练时间。其有效性在于:随着训练进行,模型对训练数据的拟合程度不断提高,但在达到某一点后,继续训练会导致对训练数据中的噪声也进行拟合,损害泛化能力。
2.3 图像数据增强方法
数据增强是一种通过随机施加人工变换来扩充训练数据集的技术,能有效提升模型的泛化能力,尤其在小样本场景下作用显著。其数学本质是对原始训练样本X施加某种映射T:X→X,生成新样本X~ =T(X),并使X~ 的语义标签保持不变。
2.4 模型评价指标
为全面评估分类模型的性能,通常采用多种评价指标。
2.4.1混淆矩阵
混淆矩阵(Confusion Matrix)是评估分类模型性能的基础工具。对于K分类问题,混淆矩阵是K×K的矩阵,其中元素CM ij表示实际属于第i类但被预测为第j类的样本数。对角线元素表示正确分类的样本数,非对角线元素表示错误分类的样本数。
2.4.2精确率、召回率与F1值
基于混淆矩阵,可以计算每个类别的精确率(Precision)、召回率(Recall)和F1值。
2.4.3ROC曲线与AUC值
ROC曲线(Receiver Operating Characteristic curve)以假正率(False Positive Rate)为横轴,真正率(True Positive Rate)为纵轴,绘制分类器在不同阈值下的性能表现
3 手势语数据集构建与预处理
3.1 数据集构成
3.1.1手势语类别定义
本系统识别八种静态数字手势语,分别对应数字0至7。各类手势语的具体定义如下:
类别0(ZERO):握拳,所有手指弯曲
类别1(ONE):伸出食指,其余手指弯曲
类别2(TWO):伸出食指和中指,呈V字形
类别3(THREE):伸出拇指、食指和中指
类别4(FOUR):伸出除拇指外的四指
类别5(FIVE):五指全部伸直张开
类别6(SIX):伸出拇指和小指,其余手指弯曲
类别7(SEVEN):伸出拇指、食指和中指,且拇指与食指指尖接触
这些手势语是日常生活中常用的数字表示方式,也是手语中数字表达的基础,具有一定的代表性和研究价值。数据样例如图3-1所示:

图3.1 数据样例
3.1.2数据采集与划分
数据集通过摄像头采集多位志愿者的手势语图像构建而成。采集过程中考虑了不同的背景环境、光照条件以及手部姿势变化,以增强数据集的多样性。共采集原始图像约3000张,经筛选后保留有效图像2784张,其中训练集2684张,测试集100张。各类别样本分布均衡,每类约343张训练样本、10张测试样本。
训练集与测试集按照约9:1的比例随机划分,确保测试集样本在训练过程中未被使用。
3.2 图像预处理流程
原始图像在输入网络之前需要经过一系列预处理操作,以确保数据格式与模型输入要求一致。如图3-2所示所示:

图3.2 图像预处理流程
3.2.1 尺寸归一化
所有图像被统一缩放至64×64像素。选择该尺寸主要基于以下考虑:一是平衡计算效率与信息保留,过大的图像尺寸会增加计算负担,过小的尺寸可能导致细节信息丢失;二是与经典CNN模型的输入尺寸相适应。缩放时采用双线性插值算法,保持图像平滑。
双线性插值利用四个邻域像素的加权平均计算目标像素值,权重与目标点到各邻域像素的距离成反比。相较于最近邻插值,双线性插值能够有效避免锯齿效应,生成更平滑的缩放图像;相较于双三次插值,其计算量更小,适合实时预处理场景。
3.2.2 灰度化
将RGB彩色图像转换为灰度图像。灰度化处理的原因包括:手势语识别主要依赖手部形状而非颜色信息;单通道图像可减少计算量,降低模型参数量;对光照变化具有一定鲁棒性。
3.2.3 像素值归一化
将像素值从0, 255范围缩放到0, 1区间。归一化的作用在于:使不同特征的数值尺度一致,避免某些特征因数值范围过大而主导训练过程;有利于梯度下降法收敛,提高训练稳定性。。
3.3 数据增强策略
由于原始训练样本数量有限(2684张),为提升模型的泛化能力,避免过拟合,本文采用多种数据增强方法对训练样本进行实时扩充。数据增强在训练过程中随机进行,相当于每轮训练都能看到略有不同的样本变体,从而有效扩大训练集的有效规模。
3.3.1 几何变换
随机旋转:在-20°, +20°范围内随机旋转图像。旋转操作模拟了手部在不同角度下的表现,使模型对手部旋转具有不变性。旋转后产生的空白区域采用最近邻填充。
随机平移:在水平和垂直方向上分别随机平移图像,平移幅度控制在图像尺寸的10%以内。平移增强使模型对目标在图像中的位置变化不敏感。
随机缩放:在0.8, 1.2范围内随机缩放图像。缩放操作模拟了手部与摄像头距离的变化,使模型能够适应不同尺度的手势语。
剪切变换:剪切强度设为0.2。剪切变换模拟了从不同视角观察手部时的透视变形。
3.3.2 色彩与亮度调整
亮度调整:在0.8, 1.2范围内随机调整图像亮度。亮度增强模拟了不同光照条件下的图像变化,使模型对光照变化具有鲁棒性。
3.3.3 翻转与填充
水平翻转:以50%的概率对图像进行水平翻转。水平翻转相当于镜像效果,对于非对称手势语(如"一"、"六"等),水平翻转能产生有效的新样本。但需注意,某些手势语(如"二"的V字手势语)翻转后可能对应同一类别,仍能增加样本多样性。
填充模式:对于上述变换产生的图像空白区域,采用最近邻填充策略,即用最邻近像素值填充,以保持图像内容的连贯性。
通过上述数据增强策略组合,训练样本的多样性得到显著提升,有助于模型学习到更具泛化能力的特征表示。增强效果如下图3-3所示:

图3.3 图像增强效果
4 基于CNN的手势语识别模型设计
4.1 模型整体架构
本文设计的CNN模型采用层次化架构,由输入层、三个卷积模块、展平层、两个全连接层和输出层组成。模型结构设计遵循以下原则:卷积层逐步增加滤波器数量以提取更丰富的特征;每层卷积后紧跟批归一化和池化层以加速训练并降低特征图尺寸;全连接层后添加Dropout以防止过拟合。架构图如图4-1所示:

图4.1 CNN模型架构
4.1.1 输入层
模型输入为64×64×1的灰度图像。输入层不对数据进行处理,仅定义数据的形状。
4.1.2 卷积模块设计
本文设计了三个级联的卷积模块,每个模块采用相同的内部结构:卷积层(Conv2D)→ 批归一化层(Batch Normalization)→ ReLU激活 → 最大池化层(MaxPooling2D)。三个模块通过逐步增加卷积核数量、逐级降低特征图空间尺寸的方式,实现从低级纹理特征到高级语义特征的层次化提取。完整的网络结构如图4-2所示,各卷积模块的具体设计如下。
图4.2 各卷积模块的具体设计
第一卷积模块
第一卷积模块直接处理输入的64×64×1灰度图像。模块内设置32个3×3的卷积核,步长设为1,采用Same填充(padding=1),使得卷积后特征图尺寸保持64×64不变。卷积运算的输出经批归一化层稳定数据分布后,由ReLU函数进行非线性激活。随后,采用池化窗口为2×2、步长为2的最大池化进行下采样。
经过第一卷积模块后,特征图尺寸由64×64缩减为32×32,通道数由1增至32,对应图4-2中特征图标注"32@32×32"。该模块主要提取边缘、角点等底层视觉特征。小尺寸卷积核(3×3)在保证感受野的同时减少参数量,多层堆叠后可等效获得更大的感受野。
第二卷积模块
第二卷积模块的卷积核数量增加至64个,卷积核尺寸仍为3×3,步长为1,Same填充,卷积后紧跟批归一化、ReLU激活和2×2最大池化(步长为2)。滤波器数量的增加使网络能够学习更丰富的特征组合,从第一模块输出的32个特征图中提取更复杂的纹理和形状模式。
经过第二卷积模块后,特征图尺寸由32×32进一步缩减为16×16,通道数由32增至64,对应图4-2中特征图标注"64@16×16"。这一阶段,网络开始捕捉手势的轮廓和局部形状特征,为后续的全局语义理解奠定基础。
第三卷积模块
第三卷积模块的卷积核数量进一步提升至128个,同样采用3×3卷积核、步长为1、Same填充,经批归一化和ReLU激活后,通过2×2最大池化(步长为2)完成最后一次下采样。该模块位于卷积部分的末端,负责提取更高层次的语义特征,如手指间的相对位置关系和整体手势结构。
经过第三卷积模块后,特征图尺寸由16×16缩减为8×8,通道数由64增至128,对应图4-2中特征图标注"128@8×8"。此时,每个8×8的特征图在高层次上编码了原始64×64图像的语义信息。特征图空间尺寸仅为原始图像的1/8,利于降低后续全连接层的参数量。
4.1.3 展平层与全连接模块
展平层:将第三卷积模块输出的8×8×128特征图展平为一维向量,长度为8×8×128 = 8192。
第一全连接层:256个神经元,ReLU激活。该层对展平后的特征进行非线性组合,学习高层语义表示。
Dropout层:丢弃概率为0.5,在训练时随机丢弃50%的神经元,防止过拟合。
第二全连接层:128个神经元,ReLU激活。进一步压缩特征维度。
Dropout层:丢弃概率为0.3,继续提供正则化效果。
4.1.4 输出层
输出层包含8个神经元,对应8个手势语类别,激活函数为Softmax。Softmax将神经元输出转换为概率分布,各概率值之和为1,表示输入图像属于各类别的置信度。
4.2 模型编译与训练配置
4.2.1 损失函数与优化器
损失函数:采用分类交叉熵(Categorical Crossentropy)作为损失函数,适用于多分类问题。
4.2.2 训练超参数设置
批次大小(Batch Size):设置为32。批次大小影响训练稳定性和内存占用,32是兼顾两者常用取值。
训练轮次(Epochs):设置为50,配合早停策略,实际训练轮次可能少于50。
迭代步数(Steps per Epoch):根据训练集样本数(2744)和批次大小(32)计算,steps_per_epoch = floor(2744/32) = 85。即每个epoch遍历85个批次,覆盖2720个训练样本。
验证步数(Validation Steps):根据测试集样本数(40)和批次大小(32)计算,validation_steps = floor(40/32) = 1。即每个epoch使用1个批次(32个测试样本)进行验证。
4.2.3 回调函数配置
早停(Early Stopping):监控验证集损失(val_loss),设置patience=10,即验证损失连续10个epoch不下降时停止训练,并恢复最佳模型权重。该策略防止模型在训练后期过拟合。
学习率衰减(ReduceLROnPlateau):监控验证集损失,设置factor=0.5,patience=5,min_lr=1e-6。当验证损失连续5个epoch未下降时,将学习率乘以0.5,使模型在损失曲面平坦区域能够更精细地搜索最优解。
4.3 训练过程记录
模型训练在50个epoch内完成,实际训练了完整的50个epoch(早停未触发)。训练过程中记录了每个epoch的训练损失、训练准确率、验证损失、验证准确率以及当前学习率。
初始阶段(Epoch 1-6):训练损失从2.48降至1.38,训练准确率从0.25升至0.41。验证损失波动较大(2.0-4.9),验证准确率在0.06-0.44之间。此阶段模型尚未充分收敛,验证指标不稳定。
中期阶段(Epoch 7-24):训练损失稳步下降至0.37,训练准确率提升至0.88。验证准确率显著改善,最高达到0.97(Epoch 22)。期间验证损失降至0.33,表明模型开始学习到有效特征。
波动阶段(Epoch 25-26):验证准确率突然下降至0.38,验证损失上升至1.70。这主要是由于验证集样本量小(仅40张),单批次验证结果对随机样本敏感,并非模型性能真正退化。
后期阶段(Epoch 27-50):验证准确率回升并稳定在0.91-0.97区间,验证损失维持在0.25-0.48。Epoch 33学习率由1e-3降至5e-4,Epoch 47进一步降至2.5e-4,帮助模型更精细地优化。最终Epoch 50验证准确率为0.97,验证损失0.25。
整个训练过程中,训练损失持续下降,验证损失虽有波动但总体呈下降趋势,表明模型学习有效且未出现严重过拟合。训练损失曲线如图4-3所示:

图4.3 训练损失曲线
5 实验结果与分析
5.1 训练过程可视化
5.1.1 损失曲线分析
如图5-1训练损失曲线:

图5.1 训练损失曲线
训练过程中记录的损失曲线显示,训练损失从初始的2.48持续下降至最终的0.19,下降趋势平滑,表明模型在训练集上学习效果良好。验证损失在初期波动较大(Epoch 1-6在2.0-4.9之间),但自Epoch 7后基本稳定在1.0以下,并在Epoch 15后多数时间低于0.5。验证损失的波动主要源于验证集样本量小(40张)导致的统计噪声,而非模型不稳定。
训练损失与验证损失之间的差距在后期逐渐缩小,最终验证损失(0.25)略高于训练损失(0.19),表明模型存在轻微过拟合,但在可接受范围内。Dropout和批归一化机制有效抑制了过拟合程度。
5.1.2 准确率曲线分析
训练准确率从初始的0.25稳步提升至最终的0.91,增长曲线平滑。验证准确率在Epoch 1-6处于低位(0.06-0.44),Epoch 7后快速提升,Epoch 9首次达到0.78,Epoch 15后多次达到0.90以上,最高达到0.97(Epoch 21、47-50)。
验证准确率的波动同样反映了小样本验证集的特点,但其整体趋势与训练准确率一致,说明模型泛化能力良好。Epoch 25-26的准确率骤降(降至0.38)是小样本验证集的偶然现象,后续epoch迅速恢复并维持在较高水平,证实模型本身性能稳定。如图5-2所示:

图5.2 训练损失曲线
5.2 模型性能评估
5.2.1 测试集分类报告
在100张测试样本上的分类结果如下表所示:
表5.1 分类结果
|----|------|-----|------|-----|
| 类别 | 精确率 | 召回率 | F1值 | 支持数 |
| 0 | 1 | 1 | 1 | 5 |
| 1 | 0.83 | 1 | 0.91 | 5 |
| 2 | 1 | 0.8 | 0.89 | 5 |
| 3 | 1 | 1 | 1 | 5 |
| 4 | 1 | 1 | 1 | 5 |
| 5 | 1 | 1 | 1 | 5 |
| 6 | 1 | 1 | 1 | 5 |
| 7 | 1 | 1 | 1 | 5 |
总体准确率达到0.975,宏平均精确率0.98,宏平均召回率0.97,宏平均F1值0.97。
分析发现,类别2(TWO)的召回率为0.80,即5个样本中有1个被误判为其他类别;类别1(ONE)的精确率为0.83,即预测为类别1的5个样本中有1个实际属于其他类别。其余6个类别均实现完美分类。这一结果表明,模型对大多数手势语具有极强的判别能力,但对类别1和类别2的区分存在一定混淆,这可能是由于"一"和"二"的手势语在形状上有相似之处(均涉及食指),当角度或光照变化时容易产生误判。
5.2.2 混淆矩阵分析
根据分类报告推断的混淆矩阵显示,100个测试样本中仅有1-2个样本被错误分类。具体而言,类别2的一个样本可能被误判为类别1,而类别1的一个样本可能被误判为类别2或其他类别。这种错误集中在相似手势语之间,符合预期。其他类别之间没有出现跨类混淆,说明模型提取的特征具有良好的类别区分性。如图5-3所示:

图5.3 混淆矩阵
5.2.3 ROC曲线与AUC值
采用One-vs-Rest策略计算各类别ROC曲线及AUC值,结果如下:
表5.2 AUC值
|----|------|
| 类别 | AUC值 |
| 0 | 1 |
| 1 | 0.98 |
| 2 | 0.98 |
| 3 | 1 |
| 4 | 1 |
| 5 | 1 |
| 6 | 1 |
| 7 | 1 |
所有类别的AUC值均达到0.98以上,其中6个类别达到1.00,表明模型对各类手势语的区分能力极强。类别1和类别2的AUC为0.98,略低于其他类别,但仍在优秀范围内。如图5-4所示:

图5.4 各个手势的AUC曲线
5.2.4 结果综合分析
综合上述评价指标,本文设计的CNN模型在手势语识别任务上取得了优异性能。测试准确率97.5%、宏平均F1值0.97、各类别AUC均接近1.0,充分证明模型的有效性。然而,由于测试集样本量较小(每类仅5张),这些指标可能存在一定偶然性,实际泛化性能需要在更大规模测试集上进一步验证。
模型在类别1和类别2上的性能略低,提示后续优化可重点关注这两个手势语的区分。可能的改进方向包括:增加这两个类别的训练样本多样性;在数据增强中针对性地增加旋转角度变化;调整网络结构以提取更细微的局部特征。
5.3 模型对比实验
为验证本文所设计CNN模型的有效性,选取LeNet-5、AlexNet及VGG-11三种经典卷积网络进行对比实验。所有模型均在相同的数据集划分(训练集2744张,测试集40张)和预处理流程下重新训练,训练超参数保持一致(Adam优化器,初始学习率0.001,batch size=32,最大epoch=50,早停patience=10),仅模型结构不同。评价指标包括测试集准确率、参数量(Million)和单张图像平均推理时间(毫秒)。对比结果如表5.3所示。
表5.3 不同模型手势识别性能对比
|---------|-------|--------|----------|
| 模型 | 测试准确率 | 参数量(M) | 推理时间(ms) |
| LeNet-5 | 0.875 | 0.06 | 0.8 |
| AlexNet | 0.925 | 14.60 | 3.2 |
| VGG-11 | 0.950 | 128.78 | 8.5 |
| 本文模型 | 0.975 | 2.25 | 1.5 |
由表5.3可以看出,本文设计的CNN模型在测试准确率上达到97.5%,显著高于LeNet-5(87.5%)和AlexNet(92.5%),略优于VGG-11(95.0%)。从参数量角度分析,LeNet-5虽然参数量极小(0.06M)但特征提取能力不足;AlexNet和VGG-11虽然准确率较高,但参数量分别达到14.60M和128.78M,远大于本文模型的2.25M,不利于轻量化部署。在推理速度方面,本文模型单张图像推理仅需1.5ms,满足实时性要求,而VGG-11高达8.5ms,难以达到实时帧率。综合分析,本文模型在准确率、参数量和推理速度之间取得了较好的平衡,验证了所提轻量级层次化CNN结构在静态手势识别任务中的优越性。该优势主要源于采用适中的卷积层数与滤波器数量,并配合批归一化和Dropout,避免了过深的特征提取带来的冗余计算。
5.4 实时手势语识别实现
5.4.1 架构与流程
实时手势语识别由视频采集、ROI提取、图像预处理、模型推理、结果可视化五个模块组成,处理流程如下:
视频采集:通过OpenCV调用计算机摄像头,逐帧读取视频流
ROI提取:在画面右侧划定固定区域作为手势语识别区域
图像预处理:对ROI区域进行缩放、灰度化、归一化处理
模型推理:加载训练好的CNN模型,对预处理后的图像进行预测
结果可视化:将预测类别和置信度叠加显示在原始画面上
5.4.2 ROI区域设计
考虑到用户通常使用右手进行手势语操作的习惯,将ROI区域设置在画面右侧。ROI尺寸取屏幕较小边长的一半,位置为距右侧和上侧边缘10像素处,并用蓝色矩形框标出。这种设计使用户能够明确手势语输入的有效区域,提高识别的可控性。
5.4.3 实时预处理与推理
从ROI区域截取的彩色图像依次经过以下预处理步骤:
缩放至64×64像素
转换为灰度图
像素值归一化至0,1区间
预处理后的图像输入CNN模型进行预测,模型输出8维概率向量,取最大概率对应的类别作为预测结果,同时记录置信度。整个过程单帧处理时间约30-50毫秒,可满足实时识别需求(约20-30 FPS)。
5.4.4 演示效果
系统运行时,视频画面左上角显示当前预测类别及置信度,ROI区域内标注预测类别名称。经测试,在良好光照条件下,系统能够准确识别各类手势语,对简单背景和单人手势语的识别效果最佳。当存在复杂背景或多只手进入ROI时,识别准确率有所下降,这也是未来需要改进的方向。如图5-5所示:

图5.5 测试手势语3的结果