博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于毫米波感知的手势控制拍照
阅读量:2085 次
发布时间:2019-04-29

本文共 2104 字,大约阅读时间需要 7 分钟。

总体架构

总体架构示意图

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

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

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

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

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

系统模块交互图

在当前的实现中,整个系统我们用Matlab进行整体的贯穿,它的作用包括存储毫米波设备收集到的信号调用python的预测脚本进行预测拿到预测值后控制相机的动作

手势设计

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

手势1 — 拍照(双击):弯曲右手中指,无名指,小指,使它们的指尖接触掌心。伸出食指与拇指并使二者围成椭圆,两根手指指尖分开,虎口打开,右手小臂与地面呈一定斜角,上下活动手腕从而带动右手上下敲击两次。

手势2 — 左划:右手自然打开,手臂沿水平面向左移动,滑动过程中保持虎口打开。
手势3 — 右划:右手自然打开,手臂沿水平面向右移动,滑动过程中保持虎口打开。
手势4 — 顺时针旋转:右手呈握拳状,垂直于水平面。右手大拇指,中指,无名指,小指弯曲接触掌心,食指伸出。食指以手腕为轴,顺时针旋转画圆。
手势5 — 逆时针旋转:右手呈握拳状,垂直于水平面。右手大拇指,中指,无名指,小指弯曲接触掌心,食指伸出。食指以手腕为轴,逆时针旋转画圆。
手势设计

采用的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的改变,因此它能够专注于每一个有可能对分类有贡献的特征的提取。

CNN模型

PC端调用相机的实现

我们通过Matlab调用webcam来控制相机,相机型号为Logitech Webcam c922。通过传输给该模块的control值的不同而命令相机进行不同的动作,其过程见下图。

控制相机模式图

该相机的相关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%。

转载地址:http://znvqf.baihongyu.com/

你可能感兴趣的文章
【LEETCODE】205-Isomorphic Strings
查看>>
【LEETCODE】204-Count Primes
查看>>
【LEETCODE】228-Summary Ranges
查看>>
【LEETCODE】27-Remove Element
查看>>
【LEETCODE】66-Plus One
查看>>
【LEETCODE】26-Remove Duplicates from Sorted Array
查看>>
【LEETCODE】118-Pascal's Triangle
查看>>
【LEETCODE】119-Pascal's Triangle II
查看>>
word2vec 模型思想和代码实现
查看>>
怎样做情感分析
查看>>
用深度神经网络处理NER命名实体识别问题
查看>>
用 RNN 训练语言模型生成文本
查看>>
RNN与机器翻译
查看>>
用 Recursive Neural Networks 得到分析树
查看>>
RNN的高级应用
查看>>
TensorFlow-7-TensorBoard Embedding可视化
查看>>
轻松看懂机器学习十大常用算法
查看>>
一个框架解决几乎所有机器学习问题
查看>>
特征工程怎么做
查看>>
机器学习算法应用中常用技巧-1
查看>>