发展现状
基于视觉的手势识别技术是人机交互的重要组成部分。在过去的几十年里,键盘和鼠标在人机交互中扮演着重要的角色。然而,由于硬件和软件的快速发展,需要新型的人机交互方法。特别是语音识别和手势识别技术在人机交互领域受到了广泛的关注。
从2014年VR/AR市场兴起之后,手势识别技术进入了大家的视野,国内外的初创公司和科技大佬都在手势交互上展开了行动。实际上,手势识别技术的历史并不短暂,按技术可以简单分为二维手势识别和三维手势识别,VR/AR设备中主要采用的是三维手势识别技术。
今年,市场分析公司Markets and Markets发表报告称,手势识别市场预计将从2020年的98亿美元增长到2025年的323亿美元,复合年增长率为27.0%。
从目前的市场状况来看,国内外的手势识别市场规模并不大,大多数公司都处于产品化、市场化的早期阶段,有些初创公司还处于技术研发阶段。除了技术原因之外,更重要的一个因素是手势识别还未找到合适的、能够支撑其爆发的应用场景。
在应用领域上,手势识别经历了一个发展阶段,早期Leap Motion以PC为主攻方向,但是并没有取代键盘鼠标,依靠庞大的电脑产业做大市场。现在,手势识别正处于一个拓荒期,VR/AR、智能家居、汽车系统、自动化系统这几个领域是大家都在尝试的方向。值得一提的是,VR/AR这一新兴行业为手势识别技术带来了希望,但是由于VR/AR设备还未在消费端普及,极具依附性的手势识别也未能实现一定量级的大规模出货。
从技术角度来说,手势识别的硬件基础是深度摄像头,目前国内外厂商主要采用的是结构光、双目成像和TOF(光飞时间)三种技术方案。
整体来看,国内外的手势识别公司并不多,但势头发展良好。通过公开报道可以发现,大部分是成立不久的创业公司,融资上处于A轮阶段,也有部分相对成熟的公司完成了C轮融资,另外,相当一部分视觉识别公司被大公司收购合并,这在一定程度上降低了其融资压力,加强了其研发实力。
手势识别交互方式的优势非常明显:识别人的自然手势,学习成本低,使用门槛低;识别多种手势,自然使用双手,灵活性强。但是,其也存在鲁棒性差、缺乏反馈、追踪范围有限、操作易疲劳等问题。如何开拓这个百亿市场,还需要技术、公司、资本等各方面的不懈努力与探索。
主要市场参与者
| 国家 | 公司 |
|---|---|
| 中国 | 百度,大疆,腾讯,阿里巴巴,凌感(uSens),诺亦腾(Noitom),锋时互动,英梅吉科技(IMG科技),极鱼科技(ThisVR),字节跳动,小米,华为,海康 |
| 美国 | Microsoft,Google,Apple,Facebook,Amazon,Tesla,Microchip Technology,OmniVision Technologies,OBLONG INDUSTRIES,Intel,COGNIVUE,Leap Motion |
| 德国 | Infineon Technologies AG,Cognitec Systems GmbH,pmdtechnologies AG,German Auto Labs GmbH |
| 日本 | SONY,OMRON |
| 英国 | IrisGuard,Ultraleap,iPROOV Limited |
| 以色列 | PointGrab,Eyesight Technologies Ltd |
| 加拿大 | GestureTek,XYZ Interactive |
| 比利时 | Softkinetic Systems SA |
| 挪威 | Elliptic Labs |
| 印度 | Gesture Research |
应用前景
虽然触摸屏和按钮是目前较为常见的输入形式,但手势界面还提供了其他优点,例如手势交互减少了非必要的接触,有效隔离了病毒的传播路径,从而改善了卫生状况。目前而言主要应用场景有:
- 汽车行业:自动驾驶,人车交互
- 消费电子领域:游戏机(VR,AR),平板电脑,智能手机(解锁,翻页,浏览),无人机(悬停,拍照),其他
- 公共设施:比如在银行、车站、博物馆、美术馆和电影院等公共场所的交互式界面。
- 家庭自动化:智能家居
- 自动手语翻译
- 物理治疗
- 人体工学研究
- 机器人控制
- 视觉监控
面临挑战
识别精度
手势识别软件的准确性和实用性面临诸多挑战。对于基于图像的手势识别,使用的设备和图像噪声会对识别结果产生较大的影响。精确地识别背景和目标是整个视觉识别的前提。
基于视觉的手势识别的通用性会受到相机的限制。例如,为一台相机校准的算法可能不适用于另一台相机。背景噪声的数量,目标发生遮挡,同相机的距离,相机的分辨率等等也都会导致跟踪困难和降低识别精度。
社会接受度
在智能手机和智能手表之类的移动消费设备上采用手势界面的一个重大挑战是手势输入的社会可接受度。尽管手势可以在许多新型设备上进行快速,准确的输入,但是手势的采集和实用性通常受社会因素而非技术因素的限制。
手势规范
移动传感器和小型设备上的手势界面通常依赖于惯性测量单元(IMU)等运动传感器。在这些设备上执行手势,可能会使设备难以区分是自然运动还是噪音。同时,常见手势更容易为用户所接受,但是机器可能更加难以识破你的意图:是刻意为之,还是无意之举?而使用奇怪的手势,会让人不舒服,导致用户拒绝使用它们。
部署区域
可穿戴计算机通常与传统移动设备的不同之处在于它们的使用和交互位置发生在用户的身体上。在这些情况下,手势输入可能会比传统的输入方法更受青睐。但是,在手势交互方面,它们与移动设备一样面临许多相同的社会接受障碍。不过,可穿戴设备一般可隐藏在视线之外或集成在其他日常物品(例如衣服)中,可穿戴式设备交互的主要考虑因素是设备放置和交互的位置。在美国和韩国进行的一项探索第三方大众对可穿戴设备交互的态度的研究中,发现男女对可穿戴设备使用的感知存在差异,部分原因是身体的不同部位对外力的敏感度不同。另一项研究体感输入的社会可接受度的研究发现了相似的结果,两项研究都将腰围,腹部和上半身(女性)标记为最不可接受,而前臂和手腕周围的区域标记为最能接受区域。
手臂疲劳
长时间的手势输入,使用者的手臂开始感到疲劳和不适。
手势识别相关技术
概述
| 类别 | 手势识别是计算机科学和语言技术中的一个主题,是模式识别和机器学习(PRML)的子类 |
|---|---|
| 目的 | 通过数学算法解释人的手势 |
| 途径 | 采用相机或传感器采集数据,基于计算机视觉算法解释识别 |
| 优点 | 用户可以使用简单的手势来控制设备或与设备进行交互,而无需实际触摸它们。手势识别可以认为是让计算机理解人体肢体语言的一种手段,因此与原始文本用户界面和图形用户界面(GUI)相比,手势识别在机器和人类之间架起了更为丰富的桥梁 |
| 扩展 | 手势可以源自任何身体动作或状态,但通常指脸部或手的运动,且面部表情识别和手势识别是该领域研究的重点。事实上,识别人的姿势,步态,行为也是手势识别的一个分支 |
硬件
传感器
识别手势的前提是捕获手势,常用的捕获设备有:
- 有线手套。使用磁性或惯性跟踪设备向计算机提供有关手的位置和旋转的输入。某些手套可以高精度(5-10度)检测手指弯曲,甚至可以向用户提供触觉反馈。第一个可商购的手跟踪穿戴设备是数据手套(DataGlove),一种手套式设备,可以检测手的位置,移动和手指弯曲。其原理是沿着手背延伸的光缆产生光脉冲,当手指弯曲时,光会通过细小裂缝泄漏,并记录下损耗,从而近似解析手势。
- 深度相机。使用诸如结构光或飞行时间(TOF)相机之类的专用相机,可以生成带有深度信息的图像(景深图),并使用此数据来近似显示所看到的3D图像。
-
立体相机。即双目相机,通过
视差构建三维图,结合运动测量(6D-Vision),可以直接检测手势。 - 单目相机。即我们常见的2D相机,尽管有人认为单个摄像头可能不如立体相机或深度相机那么有效,但是一些公司正在挑战这一理论。使用标准的2D相机的基于软件的手势识别技术,也可以检测到有效的手势。
处理器
- GPU
- CPU
软件
根据输入数据的类型,可以以不同的方式完成手势识别的任务。但是,大多数技术都依赖于三维坐标系中的关键点。基于这些信号的相对运动,可以根据有效的输入和算法来精准检测手势。 为了解释身体的运动,必须根据共同的特性和运动可能表达的信息对它们进行分类。例如,在手语中,每个手势代表一个单词或短语。
建模方法
根据输入数据的类型,需要利用不同的方法建构手势模型。
三维模型
三维模型是将物体表示为三维多边形,利用大量的点和线条完整地描述物体表面。三维模型目前广泛应用在动画产业与计算机视觉领域。
此方法建构出的模型精细度较高,但需要大量的计算,对硬件要求很高,因此有一个简化的方法是将人体的重点部位以简单的物件表示,例如用圆柱体表示手臂、用球体表示头部,如此便能用简单的参数描述模型。
骨架模型
由于三维模型需要大量的参数,骨架模型便是其简化的版本。骨架模型利用关节的角度与每个分节的长度做为参数,因此极大地减少了计算量。
骨架模型具有下列优点:
- 需要的参数量较少,因此计算较快。
- 可以和骨架的模板数据库做比对,以识别手势类型。
- 由于只用关键的点来描述模型,因此可以抽取出手部的重要特征点。
外观模型
如果输入的数据是二维的图像,则必须使用外观模型来描述物体特征。外观模型可以是物体的轮廓、原始的图像,或由图像抽取出的特征。
| 三维模型 | 骨架模型 | 外观模型 |
|---|---|---|
![]() |
![]() |
![]() |
肌电图模型
肌电图(EMG) 是研究全身肌肉产生的电信号,以及对手臂肌肉接收到的数据进行动作分类的手势识别方法。用户的EMG设备允许使用非侵入方法穿戴,例如绑在手臂或腿上,并通过蓝牙进行连接。因此,EMG具有优于视觉方法的优势,因为用户无需面对摄像机即可进行输入,从而可以实现更大的移动自由度。
算法
在得到手部模型后,要利用这些信息识别出手势。常用的方法是在识别前,先获得大量的训练集,建立各种手势的数据库,利用机器学习,训练出能够识别手势的模型,实际运用时,再将测试数据输入模型,便能得到识别结果。手势识别常用的机器学习方法有:
- 自适应增强(Adaboost)
- 决策树(decision tree)
- 隐马尔可夫模型(hidden Markov model, HMM)
- 支持向量机(support vector machine, SVM)
- 动态时间校正(dynamic time warping, DTW)
- 人工神经网络(artificial neural network)
机器学习开源框架
如果不借助某种工具,机器学习对于大多数人而言就是一场噩梦。你不可能一切都从零开始,即使你想,在大多数情况下你也没有足够的时间来实现。所幸,我们站在巨人的肩膀上,以下罗列了一些比较流行的机器学习框架。
| 框架 | 底层语言 | 接口语言 | 开源 | 维护组织 |
|---|---|---|---|---|
| TensorFlow | C++/Python | C++/Python/Java | Github | |
| PyTorch | C/C++/Python | Python | Github | |
| CAFFE | C++ | C++/Python/Matlab | Github | BVLC |
| Keras | Python | Python | Github | |
| Mxnet | C++ | C++/Python/Julia/R | Github | Amazon |
| CNTK | C++ | C++/Python/C#/Java | Github | Microsoft |
| Paddlepaddle | C++/Python | C++/Python | Github | Baidu |
| Deeplearning4j | C/C++/Cuda | Java/Scalar | Github | Eclipse |
| Darknet | C | C | Github | Joseph Redmon |
由上表可见,掌握C++和Python语言是一个开发者进行机器学习项目的必备技能。C++大多用于写底层组件,驱动,执行效率高,Python拥有丰富的第三方库,封装了大多数函数。对开发者很友好。
除此之外,Matlab/Octave也是很好的辅助工具,可以对一些数学公式进行简便和直观的测试。
各类资源
关系
计算机科学(CS)➡人工智能(AI)➡机器学习(ML)➡模式识别(PR)➡计算机视觉(CV)➡手势识别(GR)
数理知识
- 微积分
- 梯度
- 概率统计
- 统计推断、随机过程
- 线性代数
- 主成分分析(PCA)、奇异值分解(SVD)、矩阵的特征分解、LU 分解、QR 分解、对称矩阵、正交化和正交归一化、矩阵运算、投影、特征值和特征向量、向量空间和范数(Norms)
编程技能
- C/C++/OpenCV
- Python
- Linux 编程
- CUDA
- Matlab/R/Go/Java/.Net/Julia
主流会议
- ICCV
-
ECCV
- CVPR
国内相关领域大牛/团队
- 中科院自动化所
- 周志华
- 张长水
- 李航
- 等
网络资源
结语
近年来随着人工智能的大火,网络上与之相关的培训机构,图书资源,开源资料也铺天盖地而来,想要找到学习资料可谓易如反掌,但是在海量的信息中找到合适的、有用的反而变得棘手。正所谓乱花渐欲迷人眼,什么都想学,反而什么都学不好,不如术业有专攻来的踏实。在寻得资料后,应当加强对数学和图像处理相关理论的掌握,多动手推导公式,多编程实践,多关注行业动态,多反馈交流,多总结存档。
在学习或研究生涯,随着知识的推进,自己也会陷入一个知识无底洞,即当你想要解决一个问题时,会发现它又涉及到诸多学科的知识,等你回过头来,才发现已深陷无尽的知识海洋之中,方知自身微不足道。
真理无穷,可是进一寸也有一寸的欢喜。


