论文:Weakly-Supervised Unconstrained Action Unit Detection via Latent Feature Domain
源码:https://github.com/ZhiwenShao/ADLD
复现结果:
采用BP4D作为source database,EmotioNet作为dest database训练弱监督(–mode=‘weak’)模型,
在EmotioNet上的测试结果为平均F1是0.331,比论文中的0.368略低,
在BP4D上的测试结果为平均F1是0.629,比论文中的0.610略高。
感受:代码风格很好写得又易读又美观,完全可以根据代码把整个结构和训练过程理解一下画一下,跑整个工作基本上按照步骤走就能直接跑出来,复现过程没有碰上任何困难,感谢作者无私奉献公开代码,敢于公开代码的才是真大佬呀,膜拜~
算法内容和代码整合理解
论文中作者给的算法结构图:
我自己画出来完整的训练过程结构图是这样的:
其中蓝色字母代表输入输出的图片或者特征图,黑色字母代表网络结构块,红色字母代表loss function。虚线部分是全监督(目标数据集图片也提供AU标签的时候)才有的。
代码与上图对应符号信息:
下面从左到右按照我画的这张图和表格来挨着讲这个结构。
训练过程解释:
图上网络结构中所有的相同符号代表同一个网络,参数完全相同的,比如图上 G G G出现了6次,实际上是同一个网络结构。一共有8个网络结构块(上图表格里面第一列的8个符号代表的8个网络)需要训练学习,其中 D f s D_f^s Dfs与 D f t D_f^t Dft具有相同的网络结构,但是是两个网络,不共享参数。
g s g^s gs和 g t g^t gt是输入图片,图片分别是源数据集BP4D和目标数据集EmotioNet的图片,大小为 3 × 176 × 176 3 \times 176 \times 176 3×176×176, s s s是sourse源, t t t是target目标。
E f E_f Ef对输入的图片提取基础特征,得到特征图 x s x^s xs和 x t x^t xt, 大小为 64 × 44 × 44 64 \times 44 \times 44 64×44×44.
E t E_t Et和 F l F_l Fl分别用于提取跟landmark无关的文本特征和landmark特征(t: texture feature, l: landmark-related feature, 姑且这么记)。landmark信息和AU信息是一伙的,绑定在一起了,所以哪个图有landmark信息哪个就有AU信息。生成的特征图 z t ? z_t^? zt? 和 z l ? z_l^? zl? ( ? ? ?代表 t t t或 s s s) 的大小分别是 64 × 44 × 44 64 \times 44 \times 44 64×44×44 和 49 × 44 × 44 49 \times 44 \times 44 49×44×44.
从 x ? x^? x?到 z t ? z_t^? zt? 和 z l ? z_l^? zl?的过程是把特征解耦的过程,目的是把landmark特征隔离出来。 z l ? z_l^? zl? 我们期望它含有landmark信息的,所以用来计算特征点检测的loss L l L_l Ll。 z t ? z_t^? zt?我们期待它不含有landmark信息,所以用一个对抗网络 D l D_l Dl来获取landmark信息,我们希望 E t E_t Et不能获取landmark信息,希望 D l D_l Dl能提取到landmark信息。由此确定landmark对抗学习的loss L a d l L_{ad_l} Ladl。
F a F_a Fa是提取AU信息的网络,这里 F a ( x s ) F_a(x^s) Fa(xs)期望能得到真实的AU信息,所以 F a ( x s ) F_a(x^s) Fa(xs)被用于计算AU检测的loss L a L_a La了。同样地,如果是全监督(–mode=‘full’),那么目标数据集也会提供AU标签,所以 F a ( x t ) F_a(x^t) Fa(xt