【蜂口 | AI人工智能】表情识别——龙鹏 深度学习与人脸图像应用连载(七)...

【文章首发于蜂口知道公众号,内容来源于蜂口小程序,欢迎关注了解~】

作者:龙鹏,前360AI研究员算法工程师,现任陌陌深度学习实验室高级算法工程师。

本次继续给大家 带来的是表情识别这个问题。 我们将从四个方向给大家进行分享。

首先,我们会给大家科学地定义一下表情是什么? 表情实际上包含了我们平常所说的表情以及微表情。

其次,我们会简单地介绍一下传统方法的研究思路。 传统的方法主要从静态图和动态视频两个方面进行讲述。

然后,我们再给大家介绍一下深度学习的方法。

最后,我们对表情分类这个问题的应用和它的难点做一个完整的介绍。

下面开始我们第一部分的分享:什么是表情?

所谓表情其实指的是面部的肌肉的运动。 我们平常所说的表情包含七种基本的表情, 主要是包括愤怒 厌恶、恐惧、快乐、悲伤 惊讶 以及蔑视等。

上面这张图是一个表情常用的数据集, 这个数据集包含了八种表情, 实际上就是对应我们左边所说的七种表情以及中性, 也就是无 表情 当然这个图的顺序跟我们前面的文字没有一一对应。 总之这七种表情就是我们平常最常见的表情。

但是表情实际上并不仅仅如此。 科学上还有一种表情叫做微表情。 微表情的研究常常被心理学家和犯罪科学家用于相关的研究。

那什么是微表情呢? 所谓微表情,其实就是持续时间非常短, 它只是某种无意识地使人类在隐藏某种情感。 无意识的一个行动,它的持续时间通常不到一秒钟。

举个例子, 当我们有的时候表现出微笑, 但其实我们表示的是蔑视这样的一种感情。 大家平时应该有这样的感受。 所以表情其实分为基本表情和微表 这两大类。 当然还有更多更丰富的表情, 是我们所研究的问题的复杂性来定, 我们可以去进行更多的分类。

那表情它是怎么形成的 前面我们说了表情实际上是面部的肌肉运动, 而面部的肌肉运动虽然是一个整体, 但是这个肌肉运动实际上也可以分离开几个区域, 主要包含这么一些区域:

a)眉毛。眉毛主要包含皱眉、抬眉等等。 它分别可以表示一些惊讶以及一些蔑视的表情。

b)眼睑。眼睑包含 抬眼 睑 以及闭眼睑这样一个动作。 它实际上包含的可能是惊讶、无聊这样的一些表情。

c)眼睛。眼睛可以包含愤怒、蔑视等等。

d)嘴唇。嘴唇的表情非常的丰富, 它可以包含微笑、嘟嘴、惊讶等等。

e) 鼻子。鼻子它相对来说要简单一些。比如 我们常说的耸鼻等等, 它可以表示一种蔑视的表情。

f)下巴 下巴 也可以表示一些嘟嘴之类的表情, 甚至一些惊讶之类的表情。

总的来说,人脸的面部包含了上面列举的这几大区域, 由这几大区域 各自 就组成了表情 也就是 action uints 一般我们在研究的时候,表情 会有20个左右。 这里我们展示了28个技术的表情 由这些基本的表情 就可以组成人脸的丰富的表情。

表情的研究方法也是分两类: 传统的方法和深度学习方法。

传统的方法 主要是两个方面来进行研究:

一方面是静态的图。所谓静态图就是一张人脸的图片。 通常我们会使用一张对齐好的人脸图片。 那么对于 静态 图, 我们来研究的表情通常就采用一些传统的人脸的特征, 包含一些纹理啊等等一些特征。

另一方面是动态图。 所谓动态图就是一个视频, 因为人脸的表情他天生是一个运动的动作, 也就是肌肉的运动, 所以用动态的图或者视频来表征是一个更好的方案。

那么动态图主要有两种研究思路:

一种是 法本身就是用于运动的 跟踪 的, 所以我们可以用 光流+ 梯度场来跟踪我们的表情的运动区域。 前面我们可以分为了一句表情 可以对人脸的区域进行几个区域的划分, 我们可以用光 流+ 梯度场来进行跟踪。 当我们跟踪到这个区域之后, 我们就可以用这些区域运动的方向的变化来表示人脸肌肉的运动, 表征到人 肌肉的运动之后, 我们就可以得到相应的人脸的表情。

第二个是用 ASM等模型 。ASM等模型也就是主动形状模型。它本身就是提取的面部的关键点,而我们人脸的表情实际上可以用面部关键点来进行表征。因为面部关键点它有 序号 的信息,所以我们基于面部关键点,还可以分区域的对人类的表情进行表征,基于动态图的思路会取得更好的研究效果。

这就是传统的方法。

如今,在深度学习已经遍地开花的时代, 我们更多的是采用深度学习的方法来研究人类表情这样的问题

深度学习的方法, 它主要包含两个问题:

一个是 分类的问题 前面我们说了,人 的表情 包含了非常多的表情 所以对于 每一个区域的表情 我们可以进行分别的分类。 那么人脸的表情,对于输入这样一张图, 这就是一个多标签分类的问题。所谓多标签分类, 我们在前面也给大家介绍过, 就是说一张图它不仅仅对应一个唯一的标签, 它可能包含了多个维度, 我们要判断每一个维度上是否存在它的信息。

上图是一个常见的 pipeline框架。 我们可以看到它将人脸的图分成了 8×8这样的一个区域, 将每一个图像块都经过一个单独的 卷积 一个单独的 卷积 通道, 然后获取到它的一个特征图的表示。 然后我们可以把特征图的特征向量进行串接起来, 然后再进行分类。 这就是一个典型的多分类的问题。

分类问题我们可以得到一个表情 是否存在。 但是当我们在应用表情的时候, 我们知道一个表情的存在还不能完美的解决我们的问题, 有时候我们希望知道这个表情的幅度是多大, 所以又带来另一个问题,即 回归的问题

回归的问题 估计的就是表情的幅度。

比如上面这张图, 从左到右它是一个微笑的过程, 但是微笑的幅度是不一样的。 最右边微笑的幅度最大, 最左边基本上已经看不到微笑,或者说他不是微笑。 有的时候很多的时候我们需要对表情做迁移, 或者对表情进行编辑,那么我们需要估计表情的幅度, 估计表情的幅度相对于表情分类来说,它更加困难。 因为人脸面部的表情 之间并非是完全独立的, 比如嘴巴的运动会牵动下巴的运动, 鼻子的运动也会牵动嘴巴的运动, 所以我们无法单独地对表情 进行估计。

通常意义上常用的研究方法是对各个表情基之间建立了一个图, 然后我们会去优化这样的一个图,利用 CRF 等方法来进行优化。 更多的具体细节,大家可以线下去关注。

表情幅度的估计问题的 常用方法就是前面所说的这样的几种思路。

最后我们来看看表情的应用, 表情 可以应用在哪些地方?

首先,游戏。我们可以用 表情 在玩很多的游戏, 比如主播之间利用表情来作 PK, 然后来玩类似于消消乐这样的一些游戏。

其次,人机交互。可以利用表情来做很多的人机的控制交互。

最后,表情迁移。 如下图:

这张图就是一个 avatar 我们利用人脸来 实时 的做一些表情, 从而将这些表情驱动到我们这样的一个 3D的模型上面 来做一些展示, 这样的一个应用在电影里面, CG 制作里面是非常非常有商业前景的。

不过表情估计 也有很多的难点:

第一个难点是表情非常的复杂多变。 前面我们说了人脸的表情有七个基本表情, 但实际上表情还包含非常非常多, 甚至表情都不一定是面部带来的, 它甚至还有其他的图像, 非面部区域以外也能带来一些表情。 的变化非常复杂, 再加上人脸又是一个柔性的模型。

第二个难点是 表情 幅度的量化问题。 像我们上面展示的这样一张图, 我们要用人脸来驱动这样的一个 avatar、 这样的一个3D模型来做一些表情的动作, 那么我们不可避免的要估计人脸, 也就是真人 的表现的幅度是多大, 而对他的幅度进行量化, 就面临了几个挑战:

1)我们要对我们的幅度进行标注, 这是一个非常大的问题。 因为我们需要用系数来量化我们的幅度, 它并不是那么直观。

2)我们要利用方法, 前面我们所说的利用深度学习的方法来估计我们这样的表 的幅度, 它也面临着很多的困难。

好了,以上就是我们人脸表情相关的分享。

免费领取技术大咖分享课,加蜂口V信: fengkou-IT      
感谢您的阅读,更多精彩请持续关注蜂口微信小程序!


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31553577/viewspace-2216044/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31553577/viewspace-2216044/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值