嘉宾介绍: 赵京雷,阅面科技 ReadSense CEO。上海交通大学人工智能博士,前WiseNut研究中心算法负责人,前阿里北京算法研究中心负责人、高级算法专家。阅面科技专注于深度学习和计算机视觉,为消费级智能机器提供最前沿的视觉算法和解决方案。其技术应用领域包括服务机器人、智能家电、智能手机、无人机和其他消费电子产品行业。
雷锋网雷锋网雷锋网
随着最近ADAS的火热,不少人开始注意到人脸识别在实际应用中有了更细分的场景——情绪识别,它可以在检测到驾驶员的愤怒情绪后,命令驾驶员勒紧安全带,提高制动器的反应响应性,也可以通过方向盘振动及警告声,将情绪状态告知驾驶员。从而让我们远离80%由驾驶员精神不集中及愤怒情绪所导致的交通事故。(据美国国家公路交通安全管理局NHTSA介绍,美国的交通事故有80%是由驾驶员精神不集中及愤怒情绪所导致的。)
那这个关乎生命的检测过程是如何实现的呢?本期硬创公开课邀请了人工智能算法专家赵京雷从人脸识别和情绪识别区别开始,循序渐进到情绪识别原理,情绪识别的应用场景,最后为我们揭秘这个过程是如何实现的。
首先我先说下情绪识别这个叫法。情绪识别广义上可以通过表情、语音语调或者脑电捕捉等进行。目前技术上最成熟、得到广泛应用的是表情识别技术,也就是基于计算机视觉算法,识别人脸的表情动作和推断喜怒哀乐等基本情绪。
接下来,我们讲的“情绪识别”技术,都是指的狭义上的“表情识别”技术。人脸识别大家都比较熟悉,表情识别可能接触较少,两者之间有很多的联系,又有很大的差别。
首先,我们看两者的不同。
第一,“人脸识别”是个去表情的过程。人脸识别中,对同一个人无论他做出什么表情,都要想办法识别为同一个人;相反,“表情识别” 是一个强调表情变化的过程,对于同一个人,要把其不同的表情和情绪变化识别出来。
第二,人脸识别偏静态,表情识别偏动态。人脸识别的最典型问题是人脸验证 face verification问题,即任给两张照片中的人脸,判定是不是同一个人,是个静态的判定问题。表情识别的基本问题,是给一个人脸连续动作帧,判断这个时间段该人脸的基本表情变化,是个动态的判定问题。
上面说的是不同,当然,另一方面,两者都是对面部进行视觉处理,又有很强的联系。两者的联系有以下方面。
第一,二者都依赖于一些人脸的基础技术,比如“人脸检测” 和“人脸特征点检测”。这两块很多朋友应该都比较熟悉,人脸检测是从照片或者视频帧中把人脸出现的区域检测出来。
如图,人脸特征点检测指的是把人脸的一些预先定义的特征点识别和标注出来。所以一些人脸方面的基础技术,是两者的共同基础。
第二,人脸识别和表情识别,在识别的精度上,都会受光照、人脸姿态和遮挡的影响。这方面,人类好像感觉没啥问题。但这些客观条件对计算机识别算法影响很大,比如极端的侧脸和仰头等姿态会严重影响人脸检测的精度,而如果在照片中没有办法检测到人脸,就不能做人脸识别和表情识别了。
另外,从总体的业界发展来看,从识别的难度上来讲,相对于人脸识别,表情识别在技术难度的挑战要更大一些,这和数据以及动态不确定性等因素有关。
目前表情识别主要识别的是人类的基本情绪。根据心理学的基本情绪理论,人类的基本情绪包括:喜悦、悲伤、愤怒、讨厌、害怕、惊奇和中性。
著名心理学家Paul Ekman教授(美剧lie to me的角色原型)提出了一套面部动作编码理论(FACS),把人类的表情分解为多个面部动作单元(Action Units)。这些面部单元单独并不能够代表任何的情感,但是它们的组合理论上可以表达人类的任何面部表情。
这一理论在心理学多年的研究中得到了验证,并在过去成功应用于动画角色的表情建模中。比如阿凡达之类电影中的动画角色建模时。动画师不是对每一个动画帧的表情都进行单独刻画,而是首先对一些代表局部表情动作的Blend Shape进行建模。
比如代表眉毛升起或者嘴角上扬的 Blend Shape。这些Blend Shape就是某种意义上的面部表情单元。在这基础上,每一幅动画帧的丰富表情变化都可以通过这些基本帧加权来得到。
近些年,随着机器学习的发展,表情单元的编码系统也被成功的应用于表情识别。这个自动表情识别过程是这样的。首先,机器学习算法会从很多的表情照片中习得特定的表情单元是否出现。不同的表情单元组合代表了不同的表情。
比如表情单元12代表嘴角上扬,表情单元6代表面颊上升,两者的结合在一顶程度上表示了人类喜悦的情绪。
基于表情单元进行表情识别,理论上就可以捕捉人类上千种的不同的情绪。进一步可以做到表情映射和迁移,即把人的表情变化实时迁移另外一个人物模型上面去。比如这种
上面是对表情识别原理的基本解释,下面回答“假笑”是否可以识别。
我们看美剧《Lie to me》,经常看到Ekman教授通过识别人的表情来判断一个人是不是在说谎。在心理学理论上,真笑和假笑在一定程度上可以通过动作所涉及到动作单元的强度和动态过程来区分。
比如上面讲的,如果只是出现了动作单元12,没有出现动作单元6,再加上持续时间,那么是有可能判断是否为假笑的。
但关于这方面,我们将其称为微表情研究领域。
虽然学术届有些研究,但在应用中,目前这种“微表情”的识别还没有较成熟的商用系统,实用性不强。所以,计算机领域的“表情识别”主要还是指对人类基本情绪的识别,而不是微表情识别。
让计算机或者人工智能技术通过表情识别去做《Lie to me》中的微表情测谎,目前是不太现实的,这可能会让大家失望哈。
主要的原因,不是因为现在的计算技术达不到,而是因为这方面的心理学理论还缺乏对“微表情”的清晰定义,从而构建相关数据来指导计算机认知就非常困难。
(目前情绪识别的应用场景主要在哪几个领域呢?你认为哪几个领域市场化的速度会比较快?)
嗯,这个是人工智能领域的从业者比较关心的问题。情绪识别的应用场景,典型的有广告效果评估、产品评测、视频分析、医疗康复、安全驾驶和情感机器人等。
个人认为“情绪识别” 在人机交互领域会发展的比较快。包括安全驾驶、情感机器人。让机器更好的理解人、更加智能和人性化的为人类服务是近期人工智能革命的根本。机器慢慢的习得足够的情感认知能力以后,就可以在人机交互中对用户体验进行一系列的升级。
(最近将情绪识别技术应用于ADAS的概念很火,从技术角度来说,这个过程具体是如何实现的呢?)
关于ADAS的应用。比较典型的场景有疲劳驾驶和路怒驾驶的检测和预警。发现驾驶员有疲劳驾驶和路怒驾驶的状况后,可以触发干预。从技术角度,比如疲劳驾驶可以通过若干动作单元以及面部特征的组合来识别。比如闭眼超时、眉头下垂、睁眼被动等。
这个里面,比较大的技术挑战在于,要考虑对人脸的捕捉角度以及计算效率。
这种情况下,云服务不是好的选择。需要让计算机视觉的识别算法能够高精度、高效率的运算在本地的adas嵌入式系统上。
(热心观众:想问一下本地做识别往往受到数据库和算法的限制,为什么说云服务不是一个很好的选择的?)
主要看应用场景,在应用于诸如机器人和ADAS等系统中,系统需要实时计算,并且不能受到网络连接的影响,这个时候从产品用户体验和安全等考虑,云服务是不太现实的。需要本地的潜入sdk或者硬件乃至芯片方案。
(热心观众:它对本地ADAS的系统有什么样的要求?需要什么样的硬件配置?)
目前,举例来讲,阅面科技这边,基于深度学习的表情识别已经可以做到在小米3之类的手机上,1.6GCPU,不依赖于gpu, 每秒钟40帧以上。所以理论上,本地ADAS如果具有类似于一个普通智能手机的运算能力都可以跑。在一般的实际情况中,ADAS系统还会结合行人检测等算法,所以一般配置会高些。当然,如果有gpu,也可以进一步提速。
目前我们阅面科技在这方面也做了很多的工作。让深度学习在嵌入式系统中高精度和高效的运转会是接下来一些年计算机视觉的一个主题之一。
(如果情绪识别普及,不可避免地会触犯到每个人的隐私。如何在隐私保护和商业应用之间找到平衡。?
大家都知道,深度学习是和大数据紧密绑定的。只有有了数据,才能利用机器学习的能力去从数据中自动习得知识
从这种意义上讲,情绪识别技术和其他计算机视觉技术或者说更广义的人工智能技术都依赖于数据的采集和处理。当然,只要有数据采集,就有可能触犯个人的隐私。
数据的隐私问题可以说和互联网相伴而生。我们每天浏览网页、搜索信息和在线购物过程中,我们的偏好数据都在网络中曝光。而也正是这些数据,让我们更加准确搜索到信息,更加快速的发现自己喜欢的商品
如何最大限度的保护个人的隐私,同时合理的利用个人数据,是个两难问题。 我们目前在这方面,可以让我们的客户选择只是回传服务端关键点等数据,而不是原始图像,是一种折中的方案吧。