基于毫米波感知的手势控制拍照

总体架构

基于毫米波感知的手势控制拍照_第1张图片

首先由毫米波设备发送天线发射无线信号,信号被用户手部动作调制后反射,反射信号被毫米波接收天线捕获。接着,毫米波设备将捕获信号进行处理,获得信号强度、距离、多普勒频移等信息,并将这些信息输入神经网络进行学习,通过学习后的分类器对用户新动作进行分类预测。这一过程的进一步描述如下:

1)毫米波设备我们使用过高通平台和TI毫米波雷达,总体效果差异不大。下面我们以TI毫米波雷达为例进阐述。设备型号为TI-IWR1443,该设备可以将原始FMCW信号进行预处理后,得到一个帧序列信号,每一帧含有11个与角度、距离、RangeDoppler有关的特征值。

2)利用神经网络对这些帧序列进行学习和分类的过程在python中实现,当前采用的神经网络为resnet。在神经网络进行学习的过程中,我们把学习准确率最高的网络模型保存为.pkl的格式。

3)对新手势的预测,我们采用调用python脚本的方式导入训练好的网络模型。该脚本由Matlab进行调用,并返还给Matlab一个预测分类结果值

4)控制相机的部分我们在Matlab中完成。采用的方式是调用Webcam模块控制相机。每当一个新手势完成分类预测之后,Matlab就会给该模块发送一个control值。模块通过control值的不同,控制相机的不同动作。

基于毫米波感知的手势控制拍照_第2张图片
在当前的实现中,整个系统我们用Matlab进行整体的贯穿,它的作用包括存储毫米波设备收集到的信号调用python的预测脚本进行预测拿到预测值后控制相机的动作

手势设计

本实验目前共设计5种手势,如图所示。

手势1 — 拍照(双击):弯曲右手中指,无名指,小指,使它们的指尖接触掌心。伸出食指与拇指并使二者围成椭圆,两根手指指尖分开,虎口打开,右手小臂与地面呈一定斜角,上下活动手腕从而带动右手上下敲击两次。
手势2 — 左划:右手自然打开,手臂沿水平面向左移动,滑动过程中保持虎口打开。
手势3 — 右划:右手自然打开,手臂沿水平面向右移动,滑动过程中保持虎口打开。
手势4 — 顺时针旋转:右手呈握拳状,垂直于水平面。右手大拇指,中指,无名指,小指弯曲接触掌心,食指伸出。食指以手腕为轴,顺时针旋转画圆。
手势5 — 逆时针旋转:右手呈握拳状,垂直于水平面。右手大拇指,中指,无名指,小指弯曲接触掌心,食指伸出。食指以手腕为轴,逆时针旋转画圆。
基于毫米波感知的手势控制拍照_第3张图片

采用的CNN模型

我们使用EVL-NN来训练模型,从而来预测各个手势的分类,见图8。这个神经网络是基于Python-3.6.5,整个网络的框架是Pytorch-0.4.1。

输入EVL-NN的是一个尺寸为10×28的二维矩阵。它最开始通过了一个7×7×64 kernel-size的卷积层(3 paddings & 2 strides),再通过了一个ReLU层和一个kernel为3×3的Maxpooling层(3 paddings & 2 strides),然后会通过两个EVL神经网络的模块。其中每个模块都包含两个kernel为3×3的卷积层(1 padding & 1 stride)和一个BatchNorm层(0.1 momentum & 64 batches)。在每个模块中,两个卷积层通过一个ReLU层连接。最后,两个fc层再继续进行值的预测。
我们将初始训练速率设置为10-4,其后每20个周期(epoch)减少到之前的十分之一(一个周期被定义为整个训练集的一次完整传递)。训练在80个周期后停止。

EVL-NN模块适用于训练单元size较小的数据,其中每一层神经网络的的传递都没有发生对数据size的改变,因此它能够专注于每一个有可能对分类有贡献的特征的提取。
基于毫米波感知的手势控制拍照_第4张图片

PC端调用相机的实现

我们通过Matlab调用webcam来控制相机,相机型号为Logitech Webcam c922。通过传输给该模块的control值的不同而命令相机进行不同的动作,其过程见下图。
基于毫米波感知的手势控制拍照_第5张图片

该相机的相关API命令:

声明与清除:
cam=webcam(‘c922’);
clear(‘cam’);
预览与拍照:
preview(cam);(预览)
img=snapshot(cam);(拍照)
调节函数
cam.Focus=x;(调节相机清晰度(对焦)但本摄像头可以实现自动对焦)
cam.Zoom=x; (调节相机放大比例)
cam.Contrast=x;(调节对比度)
cam.Brightness=x;(调节亮度)
cam.WhiteBalance=x;(调节白平衡)
cam.Saturation=x;(调节饱和度)
cam.Sharpness=x;(调节锐化)
cam.Exposure=x;(调节曝光)

实验验证结果

我们收集了44个人的手势,并且对他们一一当作验证集进行测试。每一个人所测试的模型是由其余43个人的手势学习而得的,i.e.模型没有见过着一个人的手势。

最终模型对“没见过”的人(新用户)的手势预测平均准确率为99.102%,miss hurt表示模型对手势的“误伤率”(将合法手势判断为不能识别手势的概率)为8.64%。

你可能感兴趣的:(毫米波手势识别,物联网,毫米波雷达,手势识别)