NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别

2016-09-11  Amateur  业余机器学习与深度学习
NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第1张图片转载自:http://mp.weixin.qq.com/s?__biz=MzI0MjU1NTk3NA==&mid=2247483760&idx=1&sn=e50b07e264e588a42ae38056342e60d0&mpshare=1&scene=23&srcid=1101SPe8SIV0hUuvbaj0zKmx#rd

本文是机器学习领域顶级会议 NIPS 2016 所接收的论文中深度学习相关的一篇论文。这篇论文的作者来自美国的南卡莱罗纳大学 (https://cse.sc.edu/~mengz/papers/NIPS2016.pdf)。

  • Incremental Boosting Convolutional Neural Network for Facial Action Unit Recognition
    Shizhong Han*, University of South Carolina; Zibo Meng, University of South Carolina; Ahmed Shehab Khan, University of South Carolina; Yan Tong, University of South Carolina

面部表情能够有力地表达和传递情绪,并且可以表达一个人的意图。Ekman 和 Friesen 开发了面部表情编码系统(Facial Action Coding System,FACS)(https://www.cs.cmu.edu/~face/facs.htm),该系统给出了面部表情集合,其中每个表情都是由面部单元构成的。自动面部单元识别系统不仅可以用于人类行为分析,还在人机交互(human-computer interaction,HCI)中具有巨大潜力,比如在线/远程教育,交互式游戏,智能交通,也可以促进心理学的前沿研究。


在无意识人脸表情中识别面部单元具有一定的挑战性,主要有一下几个原因:微小的面部表情变化,头部可以自由摇动,单元之间的咬合,已编码的训练数据有限。目前有很多方法可以从视频或静态图片中抽取特征,用来表征由目标面部单元引起的人脸在外观上的变化或几何上的变化。大多数方法都是利用人工方法抽取特征,并不是为面部单元识别而设计的。最近,卷积神经网络在很多应用中取得了重大成功,比如目标检测与分类,视频分析,在人脸表情和面部单元识别中也有很多应用。


卷积神经网络需要很多参数,尤其是网络结构比较深的情形。为取得较好的效果,需要大量的训练图片,也需要mini-batch 训练策略,即每次迭代只利用一小批的图片。跟目标分类与检测中百万级的训练图像不同,面部单元编码的训练图片比较有限,而且通常是从小众群体中采集而来,比如 FERA2015 SEMAINE  数据集中的48000张图片,含有15个主体,Denver Intensity of Spontaneous Facial Action (DISFA) 数据集中的139814张图片来自27个主体。卷积神经网络经常过拟合,在没见过的样本或主体中泛化效果并不好。


Boosting, 比如 AdaBoost,是一种流行的集成学习技巧,这种方法通过结合多个弱分类器来提升效果,而且在面部单元识别中泛化效果较好。Boosting可以融入到CNN中,如此一来可以选择每次迭代所选择和激活的具有判别性的神经单元。然而,Boosting CNN (B-CNN)在每个小批上迭代时会由于缺少训练数据而过拟合。而且,上次迭代或上小批中所得信息不能传播,意即,每次迭代都会训练一批新的弱分类器,之前所得弱分类器会被丢弃。


NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第2张图片


受增量学习启发,作者提出了一种新的增量Boosting CNN (IB-CNN),这种方法目标在于,每当新训练样本出现时,都会积累B-CNN学习中所得信息。如Fig 1 所示,每次CNN迭代中都利用了一批图像。全连接层的输出会作为特征,即boosting可以选择弱分类器,而且可以选择当前批中目标面部单元的判别性特征子集(蓝色的点)。然后,将本次迭代所选择的特征跟前一次迭代中所选择的(红色的点)结合起来就可以得到一个增量式强分类器。活跃特征的权重,即蓝点和红点,需要更新,每次更新用来保证所选特征具有较高的权重。最后,损失函数,即由弱分类器和增量式强分类器得到的全局分类误差,可以迭代式反向传播,就可以得到微调后的卷积神经网络。作者提出的IB-CNN的决策边界比较复杂,因为其中用到了boosting方法,而且这种方法利用增量学习的优势,在mini-batch方法中可以避免过拟合。


增量Boosting方法

NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第3张图片
增量学习方法可以提高预测性能,也可以减少过拟合。如 Fig 2 下面所示,当前迭代中所选择的蓝色的节点和之前迭代所选择的红色节点增量式结合起来,形成增量式强学习器,在第 t 次迭代中的分类器如下:

NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第4张图片    (5)

其中,NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第5张图片是在第t-1次迭代中所得增量强学习器,NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第6张图片当前迭代中的boosted强学习器。

NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第7张图片  (1)



将 式1  代入 式5  可以得到: NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第8张图片    (6)其中NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第9张图片是第 t 次迭代中通过boosting方法得到的。如果之前没有选择第j个弱分类器,则阈值 NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第10张图片可以通过第t次迭代通过boosting方法估计得到。否则,NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第11张图片就继承自后向反馈所得之前的迭代,后向反馈公式如下:NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第12张图片(7)

然后,增量强分类器会随着迭代次数的增加而更新,如Fig 3所示,如果某个神经元在当前迭代中处于激活状态,则相应的权重会增加,否则,权重会减小。并且所有弱分类器权重的总和为1。因此,选择次数较多的弱分类器,即对多数mini-batch都有效的弱分类器,对应的权值较大。所以,IB-CNN的全局误差可以由下式计算:

NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第13张图片    (8)其中NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第14张图片


NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第15张图片


跟B-CNN相比,IB-CNN可以从所有mini-batch中提取信息。测试过程中, IB-CNN 使用增量强分类器,而B-CNN使用最后迭代中所得强分类器。


IB-CNN 微调

IB-CNN的微调过程中使用了随机梯度下降法,即通过公式 8 来更新IB-CNN中的参数。xij 和 λj 的下降方向可以由下面的公式计算

NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第16张图片
只在增量boosting的活跃节点计算( 图三中的红点和蓝点). 可以反向传播到下面的全连接层和卷积层。增量boosting算法或 IB-CNN 可以总结为 Algorithm 1。


NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第17张图片


实验

数据集

SEMAINE 数据集包括来自31个主体的无意识表情,将其分成两组: 15个个体的用来训练,共 48,000张图片,16个个体的用来校验,共 45,000 张图片。

DISFA 数据集包含27个主体的图片,其中涉及不同种族,不同性别,不同年龄,共130,814 张图片。


实验细节

实验基于Caffe来实现的。如 Fig 1 所示,经过预处理的人脸图片作为网络的输入。IB-CNN 包括三个具有激活函数的卷积层,两个 maxpooling 层,一个全连接层,还包含作者所提出的 IB 层用来预测 AU 标签。其中,前两个卷积层包含32个特征映射,其中每个过滤器大小都是 5 × 5的,滑动步幅为 1。然后,输出的特征映射送入rectified层,后面紧跟着 maxpooling 层,其中maxpooling 层用来下采样,下采样的步幅为 3。最后得到的卷积层含有64个过滤器,并且每个过滤器大小都是 5×5,输出大小为 9×5 的特征映射作为全连接层的输入,全连接层含有 128 个节点。全连接层的输出送入作者提出的 IB 层。每个目标AU训练时都用到了随机梯度下降,其中动量系数为0.9,mini-batch的大小为 100。


实验结果


NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第18张图片


其中 η  用来控制函数的斜率,可以根据函数的分布来定为 η = σ / c,其中 σ 是函数的 f(·) 的标准差, c 是一个常数。其中函数 f(xij , λj ) ∈ R 定义为阈值为λj的one-level决策树分类器(one-level 即为只依赖一个属性)。


NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第19张图片


NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第20张图片

NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第21张图片

NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第22张图片

NIPS 2016 -- 增量Boosting CNN 用于面部动作单元识别_第23张图片


总结

作者提出了一种新颖的 IB-CNN,这种方法将 boosting 分类器融入到 CNN 中,用来识别 AU (Action Unit)。

为了解决每个mini-batch中正样本不足,作者提出了一种增量式boosting 算法,这种方法可以积累多个batch中的信息。

作者提出了一种新颖的误差函数,来微调 IB-CNN,这种误差结合了增量强学习器和每个弱分类器的误差。

IB-CNN 对于训练样本不足时,可以识别不常见的AU。IB-CNN 是一种泛化的机器学习方法,也可以在其他学习任务中使用,尤其是训练样本不足的情形。



参考资料

https://cse.sc.edu/~mengz/papers/NIPS2016.pdf

http://lyonesse.stanford.edu/~langley/papers/stump.ml92.pdf

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.118.2687&rep=rep1&type=pdf

https://www.cs.cmu.edu/~face/facs.htm

https://www.ecse.rpi.edu/~cvrl/tongy/aurecognition.html

http://what-when-how.com/face-recognition/facial-expression-recognition-face-recognition-techniques-part-1/

https://nips.cc/Conferences/2016/AcceptedPapers

封面图片来源 http://www.braismartinez.com/media/AUs_example_xlg.png


你可能感兴趣的:(DL_ML_CNN原理)