更细粒度表情运动单元检测:来自物体检测的启示

2020-04-13 21:14:56
更细粒度表情运动单元检测:来自物体检测的启示

作者 | 马晨


编辑 | 贾伟

本文解读清华大学马晨等人发表的人脸表情运动单元检测的论文:《AU R-CNN:将专家先验知识融合进R-CNN模型进行表情运动单元的检测》。

这篇论文率先利用先验知识和物体检测技术做Action Unit人脸表情识别,在BP4D和DISFA两个数据库达到了SOTA的实验结果:在F1 score这个benchmark下BP4D数据库达到了63%的最佳成绩。

更细粒度表情运动单元检测:来自物体检测的启示

论文链接:https://arxiv.org/abs/1812.05788

代码链接:https://github.com/sharpstill/AU_R-CNN

FACS(Facial Action Coding System)是人脸国际标准组织定义的44种人脸运动单元(AU),这些运动单元可以组合表示人脸表情所有可能的表情(包含皱眉,抿嘴等),AU是组成人脸表情的基石。

本论文中所谓的人脸AU检测的任务是指:识别一段视频中每一帧图像的人脸上出现哪些AU。因为AU只是面部肌肉的细微运动,而且不同的面部肌肉运动幅度大小不同,所以AU检测任务具有挑战性。AU 检测在测谎仪、汽车驾驶辅助系统(探测是否驾驶员瞌睡)等有重要应用。

更细粒度表情运动单元检测:来自物体检测的启示

图 1. Action Unit 的例子

图1是Action Unit的例子,关于Action Unit的表情到底定义了怎样的细微的面部表情。

https://imotions.com/blog/facial-action-coding-system/ 提供了动画演示,读者可以自行观看。

总结一下已有方法的缺点:

1、已有的方法虽然提出了AU center的概念作为AU发生的重要区域,并被定义为人脸关键点的附近,这种定义粗糙而位置不精确。AU发生在人脸肌肉运动的特定区域,但不一定是某个landmark附近。

2、已有的研究使用CNN去识别整张脸的图像,而非局部区域的AU。

3、人脸AU识别是一个多label的分类问题,这种多label的约束可以被限制在更细的粒度上:人脸的局部区域上,从而达到更高的精度。


1 方 法

AU R-CNN的方法框架如图2所示,AU检测最困难之处在于人脸的五官大小不定,每个人长相不同,而且发出的表情的位置也不相同,这种充满挑战性的难题如何检测呢?本文站在前人的肩膀上,利用人脸关键点!人脸关键点提供了丰富的人脸位置信息,若能充分利用,则消除了五官的差异,更能细微精确地检测AU。所以该框架首先将人脸划分成不同的区域,每个区域独立地进行检测,如图2所示:

更细粒度表情运动单元检测:来自物体检测的启示

图 2. AU R-CNN方法的整体框架概览,首先用landmark将人脸的68个关键点定位,再依照不同区域ROI独立检测,最后将每个ROI的检测汇总,便得到了全脸的检测结果!

更细粒度表情运动单元检测:来自物体检测的启示

图 3. 关键点和面部分割图

为了利用这些关键点的信息和AU的定义,本文引入了专家先验知识的概念,AU R-CNN方法将AU与其相关的人脸区域的划分定义为专家知识,提出了AU partition rule的规则。该规则如表1所示:

更细粒度表情运动单元检测:来自物体检测的启示

表1. AU partition rule(也即专家先验知识)

AU partition rule将不同的AU分组,同一个位置区域发生的AU被分为一组,比如都是眼睛部位的AU,所以诞生了AU group的概念(表1左)。由此全脸被划分成九个区域,每个区域是一组ROI表示,最后本文使用该ROI的最小外包矩形来表示该AU group区域,如图4所示。

更细粒度表情运动单元检测:来自物体检测的启示

图4. AU group和其外包矩形,之后这些矩形被送入R-CNN的检测头

另外一个难题在于即使同一个区域也可能发生多个AU的表情出现,因此本文使用了sigmoid cross entropy的损失函数来计算损失并反向传播优化网络参数:

更细粒度表情运动单元检测:来自物体检测的启示
更细粒度表情运动单元检测:来自物体检测的启示

图 5. AU R-CNN整体网络结构图,左侧由先验知识截取出不同区域的bounding box,右侧是检测头去分别检测,与此同时,ground-truth label也被按照不同区域分割了,最后计算sigmoid cross entropy损失。


2


AU R-CNN扩展

AU R-CNN可以被作为一个基础框架产生出来很多扩展和变种,这是由于视频的先后帧之间有时间顺序关系,所以可以使用ConvLSTM建模先后帧之间的关系。如下图所示,每个部位的小box被单独的时间轴建模,用一个独立的ConvLSTM去建模并学习。

更细粒度表情运动单元检测:来自物体检测的启示

图 6. AU R-CNN的ConvLSTM扩展,这种扩展模型可以学习并建模视频的先后帧关系

但是在具体实验中,作者发现这种利用上下帧的建模方法效果不是很好,甚至总体的平均F 1 score不如单帧检测。作者在实验部分也分析了其中的原因。

另外除了ConvLSTM这种时空卷积,还可以使用双流法等其他方法进行扩展,总体如下表:

更细粒度表情运动单元检测:来自物体检测的启示


3


实 验

实验在BP4D和DISFA两个数据库上进行,该文的实验部分值得称道的一点是,作者采用了标准的AU R-CNN,并在ResNet-101和VGG-16、VGG-19几个网络上进行测试:

实验结果如下,可以看到AU R-CNN结合ResNet-101的backbone取得最佳的实验结果:

更细粒度表情运动单元检测:来自物体检测的启示
更细粒度表情运动单元检测:来自物体检测的启示

剥离实验中,主要探究这种局部检测到底比标准的CNN那种全脸检测效果好多少,所以在不同分辨率下与标准CNN也进行了比较:

更细粒度表情运动单元检测:来自物体检测的启示

DISFA数据库都是连续的表情视频,实验结果如下:

更细粒度表情运动单元检测:来自物体检测的启示
更细粒度表情运动单元检测:来自物体检测的启示

最后,作者总结了不同的AU R-CNN扩展及其适用范围:

更细粒度表情运动单元检测:来自物体检测的启示


4


总 结

在本文中,作者研究了如何将先验知识融合进R-CNN这种物体检测框架,并使用RoI pooling层在每个位置分别检测,丰富的实验证明了该做法的有效性,也取得了State-of-the-art的实验结果。

2020-04-13 21:14:56
更细粒度表情运动单元检测:来自物体检测的启示

作者 | 马晨


编辑 | 贾伟

本文解读清华大学马晨等人发表的人脸表情运动单元检测的论文:《AU R-CNN:将专家先验知识融合进R-CNN模型进行表情运动单元的检测》。

这篇论文率先利用先验知识和物体检测技术做Action Unit人脸表情识别,在BP4D和DISFA两个数据库达到了SOTA的实验结果:在F1 score这个benchmark下BP4D数据库达到了63%的最佳成绩。

更细粒度表情运动单元检测:来自物体检测的启示

论文链接:https://arxiv.org/abs/1812.05788

代码链接:https://github.com/sharpstill/AU_R-CNN

FACS(Facial Action Coding System)是人脸国际标准组织定义的44种人脸运动单元(AU),这些运动单元可以组合表示人脸表情所有可能的表情(包含皱眉,抿嘴等),AU是组成人脸表情的基石。

本论文中所谓的人脸AU检测的任务是指:识别一段视频中每一帧图像的人脸上出现哪些AU。因为AU只是面部肌肉的细微运动,而且不同的面部肌肉运动幅度大小不同,所以AU检测任务具有挑战性。AU 检测在测谎仪、汽车驾驶辅助系统(探测是否驾驶员瞌睡)等有重要应用。

更细粒度表情运动单元检测:来自物体检测的启示

图 1. Action Unit 的例子

图1是Action Unit的例子,关于Action Unit的表情到底定义了怎样的细微的面部表情。

https://imotions.com/blog/facial-action-coding-system/ 提供了动画演示,读者可以自行观看。

总结一下已有方法的缺点:

1、已有的方法虽然提出了AU center的概念作为AU发生的重要区域,并被定义为人脸关键点的附近,这种定义粗糙而位置不精确。AU发生在人脸肌肉运动的特定区域,但不一定是某个landmark附近。

2、已有的研究使用CNN去识别整张脸的图像,而非局部区域的AU。

3、人脸AU识别是一个多label的分类问题,这种多label的约束可以被限制在更细的粒度上:人脸的局部区域上,从而达到更高的精度。


1 方 法

AU R-CNN的方法框架如图2所示,AU检测最困难之处在于人脸的五官大小不定,每个人长相不同,而且发出的表情的位置也不相同,这种充满挑战性的难题如何检测呢?本文站在前人的肩膀上,利用人脸关键点!人脸关键点提供了丰富的人脸位置信息,若能充分利用,则消除了五官的差异,更能细微精确地检测AU。所以该框架首先将人脸划分成不同的区域,每个区域独立地进行检测,如图2所示:

更细粒度表情运动单元检测:来自物体检测的启示

图 2. AU R-CNN方法的整体框架概览,首先用landmark将人脸的68个关键点定位,再依照不同区域ROI独立检测,最后将每个ROI的检测汇总,便得到了全脸的检测结果!

更细粒度表情运动单元检测:来自物体检测的启示

图 3. 关键点和面部分割图

为了利用这些关键点的信息和AU的定义,本文引入了专家先验知识的概念,AU R-CNN方法将AU与其相关的人脸区域的划分定义为专家知识,提出了AU partition rule的规则。该规则如表1所示:

更细粒度表情运动单元检测:来自物体检测的启示

表1. AU partition rule(也即专家先验知识)

AU partition rule将不同的AU分组,同一个位置区域发生的AU被分为一组,比如都是眼睛部位的AU,所以诞生了AU group的概念(表1左)。由此全脸被划分成九个区域,每个区域是一组ROI表示,最后本文使用该ROI的最小外包矩形来表示该AU group区域,如图4所示。

更细粒度表情运动单元检测:来自物体检测的启示

图4. AU group和其外包矩形,之后这些矩形被送入R-CNN的检测头

另外一个难题在于即使同一个区域也可能发生多个AU的表情出现,因此本文使用了sigmoid cross entropy的损失函数来计算损失并反向传播优化网络参数:

更细粒度表情运动单元检测:来自物体检测的启示
更细粒度表情运动单元检测:来自物体检测的启示

图 5. AU R-CNN整体网络结构图,左侧由先验知识截取出不同区域的bounding box,右侧是检测头去分别检测,与此同时,ground-truth label也被按照不同区域分割了,最后计算sigmoid cross entropy损失。


2


AU R-CNN扩展

AU R-CNN可以被作为一个基础框架产生出来很多扩展和变种,这是由于视频的先后帧之间有时间顺序关系,所以可以使用ConvLSTM建模先后帧之间的关系。如下图所示,每个部位的小box被单独的时间轴建模,用一个独立的ConvLSTM去建模并学习。

更细粒度表情运动单元检测:来自物体检测的启示

图 6. AU R-CNN的ConvLSTM扩展,这种扩展模型可以学习并建模视频的先后帧关系

但是在具体实验中,作者发现这种利用上下帧的建模方法效果不是很好,甚至总体的平均F 1 score不如单帧检测。作者在实验部分也分析了其中的原因。

另外除了ConvLSTM这种时空卷积,还可以使用双流法等其他方法进行扩展,总体如下表:

更细粒度表情运动单元检测:来自物体检测的启示


3


实 验

实验在BP4D和DISFA两个数据库上进行,该文的实验部分值得称道的一点是,作者采用了标准的AU R-CNN,并在ResNet-101和VGG-16、VGG-19几个网络上进行测试:

实验结果如下,可以看到AU R-CNN结合ResNet-101的backbone取得最佳的实验结果:

更细粒度表情运动单元检测:来自物体检测的启示
更细粒度表情运动单元检测:来自物体检测的启示

剥离实验中,主要探究这种局部检测到底比标准的CNN那种全脸检测效果好多少,所以在不同分辨率下与标准CNN也进行了比较:

更细粒度表情运动单元检测:来自物体检测的启示

DISFA数据库都是连续的表情视频,实验结果如下:

更细粒度表情运动单元检测:来自物体检测的启示
更细粒度表情运动单元检测:来自物体检测的启示

最后,作者总结了不同的AU R-CNN扩展及其适用范围:

更细粒度表情运动单元检测:来自物体检测的启示


4


总 结

在本文中,作者研究了如何将先验知识融合进R-CNN这种物体检测框架,并使用RoI pooling层在每个位置分别检测,丰富的实验证明了该做法的有效性,也取得了State-of-the-art的实验结果。

https://www.toutiao.com/i6815184084155761159/

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/198180.html

(0)
上一篇 2021年11月17日
下一篇 2021年11月17日

相关推荐

发表回复

登录后才能评论