手势辨识是电脑科学和语言技术中常见的主题之一,能够透过数学演算法解释人类手势。这在机器和人类之间搭起更丰富的桥梁,让生活更有趣、更智慧。依据影像/影片的手势辨识有许多研究,这些研究通常使用2D摄影机。本文将探讨利用新的飞行时间(Time-of-Flight;ToF)3D手势辨识解决方案。
在目前的COVID-19疫情下,大众对「无接触」解决方案的使用者介面要求越来越多,而保持社交距离正成为「新常态」。我们平常仍需要接触公共场所中的多个物件,特别是操作ATM、自动贩卖机、工厂机器的介面。全新的ST感测技术与强大的AI演算法结合,我们可以透过3D手势辨识来实现这种解决方案。
展示概述
这个展示目前能够辨识多达8种手势,包括向左滑动、向右滑动、向上滑动、向下滑动、点选、点两下、顺时针旋转和逆时针旋转。我们使用ST最新的VL53L5CX ToF 8X8多区域测距感测器输入,接着於STM32上运行神经网路,最後可在PC GUI上显示辨识结果。
针对硬体,选择能与VL53L5 EVK扩充板结合的STM32F401RC Nucleo开发板。
输入感测器
VL53L5CX是先进的ToF多区域测距感测器,可强化ST FlightSense产品系列。
特色
· 快速、准确的多区域测距感测器
- 具有4x4或8x8独立区域的多区域测距输出
- 具有中断可程式化??值,可唤醒host的自主低功耗模式
- 最大4公尺的测距
· 具有视角(FoV)的完全整合微型模组
- 发射器:940 nm不可见光垂直腔面发射雷射(VCSEL)和整合式类比驱动器
- 在发射器和接收器上使用绕射光学元件(DOE)的63。对角方形FoV
- 尺寸:6.4 x 3.0 x 1.5 mm
· 易於整合
- 单一可回流元件
- 弹性的电源选项,单一3.3V或2.8V操作或3.3V或2.8V AVDD与1.8V IOVDD的组合
撷取和标记资料集
对於训练人工神经网路模型而言,撷取充足、不同手势的资料相当重要。
使用Python开发的特定GUI,可以用手势轻松撷取和标记来自ToF感测器的原始资料,并建立自己的资料集。
资料集包含每个手势的数千个样本(展示中有8个样本:向左滑动、向右滑动、点选、点两下、顺时针旋转、逆时针旋转、向上滑动、向下滑动)。
显然地,可以使用相同工具为新的自定义手势,并建立不同的资料集。
建立和训练神经网路
针对神经网路部分,开发者选择简单、弹性、强大的架构Keras来建立NN。由於手势是序列行为,因此选择CNN + GRU层来建立模型。经过大约50个epoch的训练後,训练集和验证集可达到95%以上的准确度,而且loss仅约0.08。
针对测试资料集,每个手势也达到良好的准确度。F1 score可达到96%。
最後可将最隹模型和叁数另存为gesture.h5,以便在MCU端实作。
在MCU端实作手势模型
事前准备:需要在STM32CubeMX中安装X-Cube-AI扩充套件。目前的最新版本是7.2.0,其支援scikit-learn机器学习模型。
X-Cube-AI设定:设定使用的开发板後,可以从「Software Packs」->「Select Components」载入X-Cube-AI,也可以使用快速键Alt+O。
在「软体套件元件选择」视窗中,必须勾选X-Cube-AI/Core Bundle才能上传NN模型并产生相关的STM32 NN 函式库。然後按一下[确定]完成选择。
启用X-CUBE-AI元件:点击 [STMicroelectronics X-CUBE-AI 7.2.0]开启初始AI设定视窗,接着勾选 [Artificial Intelligence Core]以开启X-CUBE-AI核心元件。此外,亦须勾选[Artificial Intelligence Application]才能新增附加AI应用。
载入NN
1. 新增网路。
2. 将模型名称变更为「gesture」。
3. 选取输入模型类型为「Keras」。
4. 选取「Browse」键以选择要实作gesture.h5的模型。
5. 点击「Analyze」分析模型。
分析後,将显示模型各层的详细报告,以及此模型需要使用的MACC、快闪记忆体、RAM资讯。
最後在CubeMX中按下「Generate code」,这会在专案中建立一个X-CUBE-AI资料夹,使用者可以在此资料夹中找到一些实用档案。
· gesture.c和gesture.h是模型拓朴档案。
· gesture_data.c和gesture_data.h是叁数及bias档案。
· app_x-cube-ai.c和app_x-cube-ai.h档案亦提供通用的多网路推断API,可供AI客户端应用程式使用。
如果需要更新模型叁数来达到更好的效能,只需要更新gesture_data.c和gesture_data.h档案。
显示结果
最後,将UART log显示到电脑,在GUI端显示我们的预测结果。若在ToF感测器前距离20-80公分处做出顺时针旋转手势时,GUI将显示预测结果,如下图所示。百分比是这个手势的机率。
现在,3D手势展示已完成,而且此解决方案可以在下列几个应用中使用。
· 智慧家电可在使用者手不乾净或潮湿时,利用手势辨识控制不同设备。
· 互动娱乐,例如游戏机。
· 人机互动提升机器智慧化,使人更安全,特别是在COVID-19环境或一些危险环境中。