这篇论文率先利用先验知识和物体检测技术做 Action Unit 人脸表情识别,在 BP4D 和 DISFA 两个数据库达到了 SOTA 的实验结果:BP4D 数据库的 F1 score 63%。
论文标题:AU R-CNN: Encoding Expert Prior Knowledge into R-CNN for action unit detection
论文链接: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 的约束可以被限制在更细的粒度上:人脸的局部区域上,从而达到更高的精度。
方法
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 的损失函数来计算损失并反向传播优化网络参数: