注:本文内容是笔者在阅读、理解了相关英文文献之后,整理所得。原文为:Towards Practical Smile Detection, jacob Whitehill, Gwen Littlewort, PAMI 2009;

目前已经有很多的基于机器学习的方法用来进行人脸面部表情分析,然而,它们中的大部分都是在公开人脸库上进行测试。这些公开库里面仅有为数不多的几个人的图片,而且通常都是光照条件良好的图片。因此,用这些公开库做的表情分析算法,当应用在实际图片中的情况下,并不见得能取得较好的效果。鉴于此,作者通过网络采集了现实生活中几千个人的图片,构建了一个人脸图片数据库,名为GENKI。该数据库包含很多光照条件下的图片,室内条件,室外条件,各种年龄段,男的,女的,各种种族的,各种发型的,戴眼镜,不戴眼镜的,总共63000张图片。需要提醒的是,这些图片,都是来自网络上很多人的个人主页,个人博客等地方,并非学者或者研究人员拍摄,而是由实际生活中形形色色的人自己拍摄的。因此,这些图片在进行表情分析算法测试的时候,更能说明问题。GENKI里面的人脸图片的姿态范围是:低头,抬头,左右旋转,大概都在20°的正面范围内。所有的图片都被手工打上标签,大概45%的图片被标记为“happy”,29%被标记为“unclear”,26%的是“not happy”。为了比较算法效果,作者还采用Cohn-Kanade DFAT图片数据库来做为对比。

笑脸检测的流程图如下所示:

首先,对于任意一张输入图片而言,需要算法自动进行人脸和眼睛的检测定位(有很多的成熟解决方案,文中不再讨论,而仅仅关注于笑脸检测),之后,需要对人脸面部图片进行旋转、裁剪、缩放,从而使得眼睛中心位于图片上的固定位置,总之一句话,人脸和眼睛定位之后,需要进行配准对齐操作。接着,对图片进行特征提取,并将提取到的特征输入到分类器来进行分类判别,从而判定当前图片是笑脸还是非笑脸。性能测试是通过ROC曲线下的面积A’作为评价指标的。

训练集:

作者分别在DFAT和GENKI数据库上进行测试。其中,前面已经提到,DFAT数据库是在光照条件受到控制的情况下拍摄的图片(collected in controlled imaging condition);GENKI则来自网络;DFAT包含了97个人的实验室环境下的475个视频文件。每个视频文件中选择第一帧和最后一帧来做测试,因此,总共有475*2=950个样本,其中有一个图片没有找到人脸,因此,DFAT中的样本总有949个,选择其中标记为“smiling”和“non-smiling”的图片作为训练样本。GENKI数据库中,仅有“happy”和“not happy”的图片被选中。考虑到GENKI中的很多人脸并非完全的正面,因此,这里,仅仅选取被正面人脸检测算子检测到的图片。总体来说,DFAT中包含101个笑脸,848个非笑脸。GENKI中包含17822个笑脸和7782个非笑脸。

训练样本数量:

GENKI的测试集合(validation set)是在GENKI中随机选择5000个样本。DFAT则是将所有的949个图片作为测试集合。训练样本的数量依次选为{100,200,500,949,1000,2000,5000,10000,20000}。对于DFAT而言,利用所有的949个图片进行训练。

前期准备:

所有的图片需要转换为灰度图,旋转,裁剪,缩放,并根据双眼的位置将人脸统一缩放到24*24的大小。眼睛定位,有手工和自动两种方法。后面作者会比较自动眼睛定位算法和人工定位眼睛在笑脸检测的检测率上有何区别。

特征提取:

作者比较了5种常用的图像特征表示方法:

(1)Gabor Energy Filter(GEF),其实就是对图像做Gabor变换,8个方向,5个尺度,波长分别是1.17,1.65,2.33,3.3,4.67;

(2)Box Filter(BF):类似于Haar features的特征提取方法;

(3)Edge Orientation Histograms(EOH):边缘方向直方图,

(4)BF+EOH

(5)LBP

作者通过对比发现,LBP对笑脸检测并无太大的用处,相对而言,Gabor,EG,EOH这三种特征描述方法更加适合于笑脸检测的特征描述算子,而它们作为特征时,采用不同的分类器,则有着不同的性能表现。具体请看下面的图表;

学习算法:

作者比较了两种常用的学习算法:GentleBoost和SVM。在实验中,GentleBoost的每一个分类器作者都训练了500次;而在SVM学些过程中,GEF和BF整个被当做输入特征向量,同时,采用了bagging算法来降低训练次数(between 400 and 4000 examples per bag)。

首先,采用BE+EOH作为特征,下表给出了测试结果:

在DFAT上,仅有84.9%的正确率,而来自GENKI的同样数量的训练样本在DFAT上测试,达到了98.4%的正确率,GENKI上也取得了95.1%的效果。对比结果表明,来自网络的那种实际应用场合下的图片用来进行样本训练得到的分类器更适合于真实应用场合。

下图左侧图形则表明利用GentleBoost分类器和自动眼睛定位算法的时候,训练样本数量大小和检测率之间的函数关系图,中间的图形表明当采用BF+EOH作为特征时,自动眼睛定位算法和手动给定眼睛位置造成的检测率的下降情况,右边的图形说明了采用SVM作为分类器时的检测率;

人工给定眼睛位置和算法自动给定眼睛位置造成的检测率之间的差异可以用下表来表示:

总结:Gabor+SVM或者BF+GentleBoost在笑脸检测上都取得了较好的性能表现,而Gabor和GentleBoost结合,或者,BF和SVM结合则并不理想。另外,手动给定眼睛位置会使得笑脸检测的检测率有所提升。但在实际应用中,这并非明智的选择。

另外,需要提醒的是,文中提到的算法,最后被作者应用到嵌入式商业数码相机当中进行笑脸捕捉。

一种实用的笑脸检测方法相关推荐

  1. 为什么体适能一直显示服务器,一种体适能检测方法及系统

    1. 一种体适能检测方法,其特征在于,其包括步骤: 记录用户档案信息: 设置相应的运动项目信息•, 绑定用户档案信息,采集并存储用户运动数据: 上传用户档案信息和用户运动数据至服务器: _ 对用户运动 ...

  2. pcb成型板aoi检测_【技术】7种PCB板常用检测方法

    原标题:[技术]7种PCB板常用检测方法 为了保证PCB板的生产质量,厂家在生产的过程中经过了多种检测方法,每种检测方法都会针对不同的PCB板的瑕疵.主要可分为电气测试法和视觉测试法两大类. 电气测试 ...

  3. 五种常用的异常值检测方法(均方差、箱形图、DBScan 聚类、孤立森林、Robust Random Cut Forest

    什么是异常/离群点? 在统计学中,离群点是并不属于特定族群的数据点,是与其它值相距甚远的异常观测.离群点是一种与其它结构良好的数据不同的观测值. 例如,你可以很清楚地看到这个列表中的离群点:[20,2 ...

  4. 基于opencv的一种快速有效椭圆检测方法

    本篇介绍的椭圆检测方法来自以下论文,论文作者提供了测试代码.本文主要是对这个方法做出详解. 参考论文:A fast and effective ellipse detector for embedde ...

  5. js中几种实用的跨域方法原理详解

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  6. 五种常用的异常值检测方法(均方差、箱形图、DBScan 聚类、孤立森林、Robust Random Cut Forest)

    https://blog.csdn.net/u013328485/article/details/95043012

  7. 我的《一种前端代码质量检测方法及装置》专利申请

    今天比较高兴的事情是我申请的一个专利结果下来了,公司奖励虽然不多就一千,但是很激动,因为代表了自己的一个小里程碑,哈哈

  8. 数据科学家必备的5种离群点/异常检测方法

    什么是异常/异常值? 在统计学中,离群值是不属于某个总体的数据点,它是一种与其他值相差甚远的异常观察,是一种与其他结构良好的数据不同的观察值. 例如,您可以清楚地看到列表中的异常值:[20,24,22 ...

  9. java抠图人物背景图片_人物抠图换背景两种实用方法!

    人物抠图在平面设计中是非常常见的,那么到底要如何将图片素材中的人物抠出来,换到新的背景中呢?其中都有哪些要点?下面小编分享给大家两种实用的人物抠图方法,会使用到两种不同的图片编辑软件. 一.PS抠图 ...

最新文章

  1. 每个网页设计者都自以为是
  2. mysql科目成绩百分比_Mysql学习经验总结【2】
  3. Valgrind 使用简单说明-转
  4. Xstream-1 原理
  5. iis7网站可用php吗,在IIS7下面添加对PHP网页的支持
  6. 配置VIM语法高亮及自动缩进
  7. 物联网单片机毕业设计实现
  8. QThread源码浅析
  9. tp5.0 百度编辑器上传图片到阿里云oss
  10. 使用JOPENS-MSDP系统进行简单的地震定位
  11. 用python开发的云监控平台_edwin报警和监控平台开源了(python源码)
  12. 【最优化】序列(逐步)二次规划法(SQP)
  13. 前端八股文,https、跨域、闭包、原型链,布局、防抖节流等
  14. Map和Set,简单模拟实现哈希表以及哈希表部分底层源码的分析
  15. aardio - 虚表库全新升级,支持图片系列专题
  16. Android如何定制主题
  17. CDN-直播-点播-技术简介
  18. centos卸载nvidia驱动_在Ubuntu系统中NVIDIA显卡驱动卸载与安装
  19. Vue3+ElementPlus网页端聊天|vue3.0仿微信/QQ界面实例
  20. 短视频抖音电商编导剧本分镜拍摄内容策划脚本计划表格方案模板

热门文章

  1. Python实现网络聊天
  2. insert...on duplicate key update语法详解
  3. 局域网访问文件提示服务器内存不足,“服务器存储空间不足”的问题
  4. java里面的悲观锁和乐观锁
  5. 网页上的广告条设计[zt]
  6. Angular项目目录结构
  7. 闲来笔记一《心心念念,引日成岁》
  8. Turbo C的图形系统
  9. APPLE  电脑型号大全
  10. win7中的无线网卡驱动文件