据最新统计,我国听障人士已超千万,全球范围内这一数字更是高达4.66亿,占全球人口的5%。聋哑人士因无法使用常规语言交流,而依赖手语进行互动,然而,手语的理解对于非聋哑人士而言,常常构成巨大挑战。尤其是在我国,手语教育水平参差不齐,加之国家通用手语普及程度有限,进一步加剧了沟通障碍。
针对这一难题,ShowMeAI借助深度学习与神经网络技术,从零开始构建了一款应用程序,旨在实现手语检测与翻译,从而打破聋哑人与常人之间的隔阂。
通过摄像头捕捉图像,用户可以轻松测试该模型。具体示例中,所展示的手语手势代表的单词,请见文末说明。
首先,让我们简要了解手语的构成。手语由三个主要部分构成:手指拼写、单词级符号词汇以及非手部特征,如面部表情、嘴巴、舌头或身体姿势等。
在本文中,我们将重点解决手指拼写识别的问题。为此,我们采用基于视觉数据的神经网络解决方案。
卷积神经网络(CNN)作为人工智能与计算机视觉领域的经典模型,广泛应用于图像识别、目标检测等任务。在本次应用中,我们同样选择CNN作为核心技术。
CNN网络结构包含卷积层、池化层、激活层及全连接层等关键组件,能够高效提取图像特征并进行分类处理。在控制参数数量的同时,确保优异的图像特征提取能力。
接下来,我们将介绍CNN识别流程的基础步骤:数据读取与切分、数据可视化及预处理、CNN网络构建与训练。我们利用TensorFlow构建与训练网络,结合Numpy进行数据处理与计算,并利用Matplotlib进行可视化操作。
首先导入必要的工具库。本次使用的数据集为手语字母数据集(类比于手写数字数据集MNIST),部分示例图片如下。
随后,我们加载训练集与测试集,并切分特征与标签。利用TensorFlow的Keras API搭建简易CNN神经网络,并进行数据拟合。
经过20轮迭代训练后,模型在训练集上达到了100%的准确率,在验证集上达到了92%的准确率。通过绘制训练过程中的准确率和损失函数变化图,我们可以进一步了解模型状态。
随着网络层数的加深,模型的学习能力逐渐增强,但深度CNN训练过程中常遭遇梯度消失问题。为解决此问题,我们引入ResNet这一特殊结构的神经网络。ResNet通过残差块中的跳跃连接有效缓解了梯度消失现象。跳跃连接允许神经网络跳过某些层,直接将一层的输出馈送到另一层的输入中。这不仅有助于解决梯度消失问题,还提升了模型的性能。
在构建ResNet-50(即50层的ResNet网络)时,我们需考虑维度匹配问题。为此,我们采用两种方法:一是通过填充零来增加维度;二是使用1×1卷积层来调整维度。其中第二种方法需额外添加一个参数。
ResNet的核心优势在于其采用的跳跃连接和恒等函数学习策略。通过跳跃连接跳过层数并学习恒等函数,ResNet确保了最高层的性能至少与最低层相当或更好。
在构建ResNet-50后,我们在数据集上进行训练并观察结果。相较于简单CNN模型(准确率92%),ResNet模型在测试集上的准确率提升至97%。这充分证明了ResNet结构在提升效果方面的有效性。
最后我们进行实时测试利用OpenCV视频录制功能结合Python实现摄像头镜头采集图像的实时预测。为了方便结果查看我们将预测的字母实时显示在画面上(以单词“hello”为例)。