论文《Local Learning with Deep and Handcrafted Features for Facial Expression Recognition》

作者基于局部特征学习和手工特征,集成模型(BOVW)的方式,在FER2013上达到75.42%的精度,在FER+上达到86.71%的精度。超过所有比赛结果,目前最好。

主要包含,多CNN模型特征提取,手工特征提取,两者模型集成,混合两种类型的特征之后,作者设计了一个局部学习框架,分如下三步:

1.采用KNN模型,针对每张测试图片,选择与其最类似的训练样本(若干)

2.利用上面1得到的样本数据,训练出1:N的多分类器SVM,

3.该SVM用来预测每张测试图片的类别。

下面具体说明:

1.多CNN模型特征提取

作者采用了VGG-Face,VGG-13,VGG-f三种CNN网络模型,其中,VGG-f,VGG-Face作者采用预训练结果进行,之后三种模型训练,采用SGD,batch 512,动量0.9,所有模型基于数据水平翻转做了增强。

VGG-Face,16层,是作者采用的最深的一个网络结构,因为该网络结构预训练的网络权重是用作人脸识别,因此,作者固定了卷积层参数,只训练全连接层参数来适应面部表示识别,并修改了最后的softmax输出类别数,作者采用一个0均值单位方差的高斯分布随机初始化该层。学习速率0.0001,学习策略为验证误差不在下降超过10个epoch时下降10%。作者采用DSD方式fineturn了VGG-Face网络模型,在FER2013数据集上,第一次训练采用Dense方式训练110epoch,然后采用 sparse方式训练40个epoch,稀疏比0.6,之后,再用Dense方式,训练了40个epoch,接着又做了一次sparse训练10次epoch,还是0.6稀疏比。同样,作者也在FER+数据集上训练了FC层,8类,DSD训练过程为:250个Dense epoch->60个Sparse  epoch->30个Dense epoch->60个Sparse epoch。

VGG-F,8层,预训练为物体分类网络,作者fineturn全层,学习速率0.0001,学习策略为验证误差不在下降超过10个epoch时下降10%。作者在每个FC后面,增加一个dropout(0.5),同时也在最后两个卷积层后增加了dropout(0.35)。(话说,都18年的论文了,怎么还有人改这种模型,用这种思路),同样,也采用DSD的方式 ,训练。但是,不同的地方在于,作者对VGG-F的前两个卷积层,在Sparse阶段,做了部分抑制,因为这两层对验证误差,有较高的负面影响,如下图:

因此,作者采用分段稀疏比的方式,每层的最高稀疏比,在{0.3,0.4,0.5,0.6}。这种方式,在FER2013上,对验证集的精度影响不超过0.5%。最终的DSD训练方式:300个Dense epoch->50个Sparse  epoch->50个Dense epoch->50个Sparse epoch->100个Dense epoch->150个Sparse epoch->50个Dense epoch,共750个epoch。在FER+上,学习速率0.001,同样采用DSD,但是没有使用权重抑制,采用一样的dropout机制,但是卷积层后面的占比下降到0.25,DSD过程为:60个Dense epoch->20个Sparse  epoch->20个Dense epoch。

   VGG-13,该网络结构,只在FER+数据集上重新设计,主要的参数,不在多说了,作者也没啥提升,尤其是DSD没有帮助,因此,没有使用DSD方式fineturn。有兴趣的可以看论文。

2.手动特征提取

作者的BOVW模型,分测试和训练两个阶段。在训练阶段,作者对所有训练图片,提取了稠密SIFT特征,然后用K-mean聚类的方式,量化这些描述子,成为visual word(VW),视觉词汇,个人认为主要是针对bag这种投票集成算法,针对视觉图像定义的。这些VW存储在k-d树形成的随机森林里以减少搜索代价。在建立好词汇表后,训练和测试等价,意思就是训练和测试没有之前离线分类那种明显的区分了,后面有用到KNN,所以,训练和测试没有明显区分。

对每张测试/训练图像,存储每张图片上,是否存在每个VW元素的状态,形成二值特征值向量。标准的BOVW模型,没有考虑VW元素之间的空间信息,所以作者通过将图片分块,针对每块提取上面的二值向量特征,然后把每个块得到的二值特征联合起来,形成最终的特征表示。这么做的原因,通俗的解释就是人脸特征表示,尤其是表示的特征,实际上只跟五官等关键区域有关。例如AUs,所以,作者,通过这种方式建立起二值特征之间的空间联系。

3.特征融合与学习

模型融合,作者在学习阶段之前,通过联合自动和手动特征,实现模型融合。其中,自动特征,采用多个CNN网络模型生成,去除了softmax层,即最后的FC层特征,作为输入图片的自动特征表示,并用L2-norm归一化。BOVW只有手动特征,即上面生成的二值向量,也用L2-norm归一化。

全局学习,作者采用线性SVM进行1:N分类。

局部学习,局部学习的目的在于,针对每个类别下的分类效果,进行局部调整,即相对于全部类别一起分,作者分解成针对每个类别,与其他类别的分类训练独立的分类器,以此提高性能。局部学习算法如下:

1.针对每张测试图片,选择与其特征类似的训练样本,这里采用KNN实现。

2.针对1选择的这些图片,训练一个线性SVM分类器,1:N。

3.根据上面2得到的SVM,预测测试图片的类别。

需要注意的是,相似度度量,不是欧式距离,而是余弦距离。

巧合的是,这些每个输入空间的线性SVM分类器,形成的局部学习框架,在整体上来看,却变成了非线性的。这种结构的好处如下:

4.FER结果

从结果可以看出:

1.VGG-Face,原始版本,单模型加上局部SVM,已经到达68.96%。作者fineturn后,增加数据增强,结果达到72.11%,但是移除softmax,用局部SVM代替后,精度反而下降了0.61%。

2.VGG-F,原始版本,实际效果只有59.38%,在此基础上增加SVM,也只有66.09%,这应该是局部SVM的作用。作者fineturn后,达到70.30%。移除softmax后,增加SVM,70.60%。

3.VGG-13,66.87%,比其他都低。

其他结果如下图:

最终的最佳效果,是多个模型融合出来的特征组合,即BOVW特征向量,预训练VGG-Face, Fineturn VGG-Face,fineturn VGG-F,VGG-13四个CNN网络结构提取出的深度特征,最终采用局部SVM的方式,达到75.42.

其他基于FER+的,不在赘述。有兴趣的可以看论文。

表情识别(六)--局部特征学习和Handcrafted特征结合相关推荐

  1. 基于人脸的常见表情识别(1)——深度学习基础知识

    基于人脸的常见表情识别(1)--深度学习基础知识 神经网络 1. 感知机 2. 多层感知机与反向传播 卷积神经网络 1. 全连接神经网络的2大缺陷 2. 卷积神经网络的崛起 卷积神经网络的基本网络层 ...

  2. 一文掌握基于深度学习的人脸表情识别开发(基于PaddlePaddle)

    目录 一.概述 1.1 表情分类 1.2 表情识别方法 1.2.1 人工特征方法 1.2.2 神经网络方法 1.3 本文实现 二.环境准备 2.1 安装PaddlePaddle 2.2 安装Paddl ...

  3. 深度人脸表情识别研究进展

    近年来,随着人工智能与人机交互技术的发展,人脸检测.对齐.识别技术的不断跟进,自动人脸表情识别由于其潜在的社交媒体分析和情感计算能力而成为了计算机视觉领域的热点研究话题,并在众多商业场景中有着巨大的应 ...

  4. 深度学习实战(六):从零开始实现表情识别

    深度学习实战(六):从零开始实现表情识别 1. 项目简介 2. 数据获取 2.1 数据爬取 2.2 数据整理 2.3 数据清洗 2.4 提取嘴唇区域 3. 模型训练 3.1 数据接口准备 3.1.1 ...

  5. 计算机表情识别技术研究学什么,表情识别的图像预处理和特征提取方法研究

    表情识别的图像预处理和特征提取方法研究 表情识别是基于视觉信息将脸部的运动或脸部特征的形变进行分类,包括三部分:脸部定位.脸部特征抽取和表情分类.本文首先使用肤色模型进行脸部定位;对提取出来的人脸进 ...

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

    [文章首发于蜂口知道公众号,内容来源于蜂口小程序,欢迎关注了解~] 作者:龙鹏,前360AI研究员算法工程师,现任陌陌深度学习实验室高级算法工程师. 本次继续给大家 带来的是表情识别这个问题. 我们将 ...

  7. 学习笔记之范海鹰微表情识别

    微表情识别 1. 微表情由来 1.1 基本情绪和次级情绪 1.2 保罗·埃克罗的贡献 2. 微表情意义 2.1 微表情产生原理 2.2 微表情的形态意义 2.3 微表情的读心内涵 2.4 微表情的应用 ...

  8. [实训题目EmoProfo]基于深度学习的表情识别服务搭建(一)

    基于深度学习的表情识别服务搭建(一) 文章目录 基于深度学习的表情识别服务搭建(一) 背景 识别服务设计 实现方式的选择 dlib性能验证 功能实现 小结 背景 之前我完成了终端和服务端之间交流的全部 ...

  9. 【表情识别】基于Gabor特征实现微表情识别系统含Matlab源码

    1 简介 表情识别的研究目标是让计算机能够自动识别出人的表情信息,从而更进一步地增强人机交互的友好性及智能性.但是由于人脸表情识别涉及图像处理,计算机视觉,应用数学等学科的融合,正是由于这种多学科交叉 ...

最新文章

  1. sql sever avg保留小数_《数据库系统概念》笔记 (一)SQL
  2. 敏捷、精益、六西格玛之间到底有什么差异?
  3. easyui form提交和formdata提交记录,查看FormData对象内部的值
  4. MEF初体验之九:部件生命周期
  5. 在GPU上部署Bert模型
  6. Mac可以在Dock上监视磁盘活动
  7. 游戏帐号被盗,但是杀毒软件没有发现病毒?DNS挟持盗号原理剖析
  8. 基于熵权法评估某高校各班级整体情况(公式详解+简单工具介绍)
  9. ENSPAC的web配置直接转发
  10. 【非常简单bug管理工具-TAPD 】
  11. 《RAFT-Stereo:Multilevel Recurrent Field Transforms for Stereo Matching》论文笔记
  12. Huffman 编码的实现(C语言)
  13. matlab共形映射程序,从共形映射角度看Schwarz引理
  14. PHP:抓取网页指定内容
  15. Bearer ${Token},放置在HTTP头中发送
  16. 考文垂鹰摩托车的历史
  17. 幂函数 、 指数 、 对数 、底数
  18. 使用SoftICE调试程序入门
  19. 数商云SRM系统招标流程分享,助力建筑材料企业降低采购成本,提高采购效率
  20. Saas和Paas是什么意思,区别是什么

热门文章

  1. 闲聊libhybris
  2. 调试系列1:bugreport源码篇
  3. 从mediaserver入手快速理解binder机制(最简单理解binder)
  4. python之zip
  5. C#之异步导致内存泄漏
  6. 解决WordPress无法发送电子邮件
  7. big sur支持机型_小米10 Pro官方下架:高端在售机型只剩它
  8. python 框架和 spring mvc_整合WebSphere Portal 7和Spring 3.0 Portlet MVC(下)
  9. linux centos history 查看命令历史 显示时间戳
  10. B-数,B+树,B*树简单定义