【文章首发于蜂口知道公众号,内容来源于蜂口小程序,欢迎关注了解~】
作者:龙鹏,前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/
文章浏览阅读2.0k次。队列关系图_csdn队列
文章浏览阅读7.5k次,点赞3次,收藏13次。Docker之docker run、docker exec、数据卷、Dockerfile_docker run
文章浏览阅读2.9k次。误:首先,win+R打开cmd窗口,切换到postgresql安装路径的bin目录下,(不用这样); 直接打开pgadmin4,点开数据库,一直点到public,再点里面的table,就可以找到表了。插入json字段:INSERT INTO public.customer( title, fname, lname, addressline, town, zipcode, pho..._从本地连接pg db
文章浏览阅读400次,点赞5次,收藏6次。推荐开源项目:GBT7714 BibTeX 样式库项目地址:https://gitcode.com/zepinglee/gbt7714-bibtex-style该项目是 Zepinglee 开发的一个 BibTeX 样式库,主要目标是为遵循中国国家标准 GB/T 7714-2015 的文献引用提供准确、便捷的支持。如果你是一名中国学者或需要在中文文档中进行学术引用,那么这个项目将会是一个非常实..._bibtex 国标
文章浏览阅读806次。Oracle 21版Database In-Memory LivaLabs实验(下)_oracle的ytes_not_populated不为0
文章浏览阅读2.4k次。以史为鉴,可以知兴替|第103篇1.“矮大紧”高晓松曾说:“作为知识分子,如果非要我回到古代,我会选择春秋战国,其次是唐宋。”我不知道自己算不算得上是知识分子,假如让我...
文章浏览阅读2.4k次,点赞3次,收藏2次。写在前面:搞事无非三点:为什么,是什么,怎么做为什么介绍到了禅道表道关联:测试组这边在beat测试期间要统计每天的bug,对bug进行分类统计后,邮件发送当天进度。于是乎我想到了自动化搞统计和发送邮件。是什么让我们搞事:“懒”。节约统计时间,将更多的经历放在回归功能上。怎么做:首先要说到统计bug,那就要了解禅道数据库的关联了(我们用的bug统计工具是禅道)下面就主要介绍一下,我在统计过..._禅道维度表
文章浏览阅读1.5k次。location ^~ /abcd {rewrite .+ http://baidu.com;}注意:nginx的rewite的地址是中文时可能会出现问题,可以把带中文的url地址,复制到浏览器中,然后用浏览器转码之后的地址做url_ng转发pathrewrite
文章浏览阅读1.4k次。提供一个网页抓取的服务的web站点;支持路径、域名限定,支持网页,图片的抓取及抓取完成后的打包下载。spider.py#! /usr/bin/python# encoding:utf-8import web.python23import modelurls=('/',"spider", '/image/(.*?)','images', '/h_基于web.py的爬虫
文章浏览阅读171次。Hi, I can run python files from web browser at the address http://localhost/cgi-bin/myfile.py but I want to run them at the address http://localhost:anyport/ , how can I do?I read a book on Python and..._python browser 现在的地址
文章浏览阅读3.5w次,点赞315次,收藏949次。今天给大家开源一个基于springboot的在线教育平台系统,系统是小孟开发的,第一个版本是小锋开发的(小锋的博客),我进行了本版本的开发。该系统完全免费、开源。系统完美运行,无任何的bug,技术较多,可以当做面试的项目或者作为毕设的项目。系统获取源码的方式见文章底部。为防止刷着刷者找不到,大家点赞、收藏文章。系统完美运行。具体的介绍如下所示。目录1. 技术介绍2.功能介绍3. 前端3.1 首页3.2 课程3.3 登入3.4 商品兑换3.5 课程发布_在线教育 开源系统
文章浏览阅读1.5w次。深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。_nacos配置数据库