2016-03-22 amdin
随着谷歌人工智能AlphaGo与李世石的五局人机大战落下帷幕,阿法狗比较终以4:1大比分战神李世石,人们对于阿法狗的好奇心被推向了高潮。阿法狗也将深度学习神经网络即DNN的强大能力展示在了人们面前。
什么是DNN?
那到底什么是DNN呢?DNN是近年人工智能领域的热门,在语音识别、自动驾驶、笔迹识别等方面的应用都极为成功。在人工智能领域,神经网络是一种模拟生物神经系统的模型,由许多单向连接的神经元组成,可根据链接神经元的各种参数将输入信号转换为输出信号。相比于普通的神经网络,深度神经网络(DNN)使用隐含的多层复杂结构,以及非线性变换,来表达对数据的高度抽象。这些特征更接近于人类大脑,更容易实现人类大脑的某些功能,例如下围棋所需要的脑功能。
阿法狗应用了两种深度学习神经网络,即“策略网络”和“价值网络”来拟合局面策略函数和评估函数,可以说这就是阿法狗的两个大脑。阿法狗的胜利引爆了DNN这一概念,在大数据当道的今天,深度学习神经网络已经被应用到非常多的领域,成为了揭示科学原理、升级现有产业商业模式的重要工具。
DNN如何应用在手势识别中呢?
那么如此炫酷的DNN能否应用在大热的VR行业?答案是肯定的。目前VR领域中应用到DNN技术的包括语音识别、手势识别等方面,笔者在这里主要介绍一下手势识别算法中的DNN。
传统的手势识别方法主要有两种:基于数据手套的手势识别方法、基于计算机视觉的手势识别方法。
而基于计算机视觉的手势识别方法以其不依赖于设备,更自然的人机交互效果,更好的沉浸感成为当今研究的热点。基于计算机视觉手势识别从摄像机中得到手势图像信息,经过适当的数据预处理之后从图像中分割出手势,对分割得到的手势进行特征提取后,利用已经建立好的手势模板进行分类。
传统的分类方式有模板匹配、基于指尖检测方法等,但这些方法都需要人工从图像提取出目标特征,编写模板来匹配。随着深度学习神经网络被提出,基于深度学习神经网络(DNN)的手势识别也应运而生,这种手势识别算法相比于传统手势识别算法在各个方面均有非常大的优势。
深度学习神经网络的工作方式来自于同人脑视觉机理的类比学习,这种从原始输入开始向更高层次不停抽象迭代的过程赋予了该模型高度抽象的能力,使得深度学习神经网络能够非常有效地从大量有标签数据中深度提取数据的特征信息,充分挖掘数据的内在属性和有价值的表征数据,然后组合低层特征为更加抽象的高层特征,而高级特征则是数据更高级、更本质的描述,由此可以在分类问题上得到更优的结果。
众所周知,VR行业面临的一大技术难题就是海量数据的处理,对于手势识别技术更是如此,手部有非常多的关节,需要非常强的识别能力才可以准确的识别每个精细动作。而深度学习模型的多隐藏层结构使得模型能有效利用海量数据进行训练,所使用数据越多模型性能越高,非常适合在VR环境下做手势识别。
基于计算机视觉的手势识别中,传统算法无法直接有效地从图像中提取出对目标有用的信息。而深度学习的学习能力却异常强大,即使是复杂低分辨率图像也能够很好的提取出目标深度特征。基于DNN的手势识别所需的图像背景并不需要固定,算法甚至在一定范围内允许运动背景的存在,从而提高了识别的环境耐受力和精细度。
DNN在手势识别中如何实现?
接下来笔者将介绍一下具体的实现方法。
传统的识别系统流程大体上可以分成检测、识别、跟踪这三个步骤,具体实现流程是:传感器获取信息,预处理,特征提取,特征选择,再到比较后的推理、预测或者识别。通常认为比较后一部分是属于机器学习的部分,这部分是整个系统的精髓所在,它能否从数据中学到有效的知识直接关系到整个系统能否按照人们期望的那样工作,但同时也存在前期特征提取或者选择不好的情况,这样会影响系统性能。
而基于DNN的手势识别就是让机器自己去提取特征,不需要手工特征提取,强大的学习能力使得模型在复杂背景下也能取得理想效果,其手势识别过程如下:
首先创建手势识别采集系统,做运动目标检测,并在检测的同时提取出前景的即运动目标的部分信息,获得手势图像。采集到手势图像之后根据不同应用场景选择合适的网络协议,把数据传输到计算平台利用深度学习算法进行复杂背景手势识别,并比较终给出手势识别结果。
基于DNN实现的VR会是什么样的?
基于DNN算法的思想实现的VR产品,并使用单机GPU方法来加速深度网络的训练和识别工作。手势识别模组可以使用深度摄像头实现手部近距离3D成像,结合DNN自主研发了一套数据处理算法,实现了高精度实时手部动作识别,既能跟踪单个手指,识别每个手指细微的动作,也可扩展至跟踪多只手。
这样的VR产品的手势识别具有捕捉精度高,响应速度快,灵敏度高,可以不受环境光线强弱影响,室内室外都可以使用。
不过目前市面上几乎没有基于DNN的手势识别产品。笔者所知的G-Wearables自主研发的StepVR产品就是基于DNN算法实现的,但还未见到实物,可以期待一下。