《论文阅读》Deep Spatial Gradient and Temporal Depth Learning for Face Anti-spoofing
留个笔记自用
Deep Spatial Gradient and Temporal Depth Learning for Face Anti-spoofing
做什么
Face Anti-spoofing人脸反欺骗,判断捕捉到的人脸是真实人脸,还是伪造的人脸攻击(如彩色纸张打印人脸图,电子设备屏幕中的人脸数字图像以及面具 等)
做了什么
首先先理解一下真实人脸和伪造人脸的区别
这里是用的sobel算子计算的空间梯度幅度图,很明显的看出在RGB图像中,肉眼很难看出两者哪个是真人哪个是假人,而在生成的空间梯度幅度图中两者的区别很明显。
而在时间领域上进行切入(即帧序列),在相机不动的情况下,真实人脸和虚假人脸的立体信息也是有很大差别的,正常情况下,人脸鼻子到右耳的角度α变小后,人脸鼻子到左耳的角度β会变大,而假图像中,α变小,β也可能会变小,直观地说,活人脸的图像包含类似人脸的深度,而印刷和重放载体中的欺骗人脸的图像只有平面深度。
于是乎,这里假设空间细粒度特征和时间特征均会对其影响。
怎么做
整个结构非常复杂,整体的功能就是输入Nf长的序列帧,然后直接输出深度图。
先了解组成这一大结构的小模块。
首先是Residual Spatial Gradient Block (RSGB)模块,这个模块的主要功能是获取细粒度的空间细节
这里的Gradient Magnitude使用的是经典的sobel算子,即
这里的x指的就是input的图像或者feature,这一步是为了获取它的梯度幅度信息,上文也提到过,然后再结合上3×3的卷积提取input的空间局部语义特征,最后就呈现出这样的公式
这里x’指的是input的x经过1×1卷积调整channel后的结果,N指的是BN而φ指的是relu
然后是第二个重要模块Spatio-Temporal Propagation Module(STPM)时空传播模块,这个模块由两个部分组成,一个是STSTB部分,一个是ConvGRU部分。这个模块的主要作用是用于多帧的时空估计。
STSTB主要由五个输入所组成,分别是当前特征Fl(t),特征Fl(t)的sobel算子结果即幅度信息图,Δt时间后的特征Fl(t+Δt)的sobel算子结果和特征Fl(t+Δt)与Fl(t)的相减,还有上一层STSTB的迭代结果,当然这里的1×1卷积也是为了控制通道数,由这五个输入进行整合后得到的输出结果称之为STSTB的feature,这里视为包含了空间细节和时空时序信息的feature,即文主旨
然后是ConvGRU,这就是非常普通的了,值得注意的是这里的迭代时序是纵向的而不是横向的,公式????
然后是最后一小部分refine部分
这里就是为了再度结合时序的关系,将每个时刻输出的深度图都需要经过前面每一帧的深度图进行结合,这里的公式也很好理解????,α越大表示时序内容越重要,Dsingle即当前时刻输出的深度图
然后是训练的LOSS
首先是最简单的LEDL
这里的Dp是预测的深度图,而DG是GT深度图,这个LOSS显而易见是为了使深度图与GT相似
然后是最重要的一个LOSS
LCDL即Contrastive Detph Loss
这个LOSS是对预测的深度图和GT的深度图的attention之间的LOSS,具体方法是使用8种不同的卷积核获取图片的attention结果,图中3×3的卷积核黄色是-1,紫色是1,白色是0
这里的KCDL便是卷积核,DP和DG与上面相同,将卷积核作用后的attention feature进行逐元素对比后得到最后的结果,这个LOSS可以理解为提高不同对象之间的距离关系
接下来是Lbinary
这里的BG是二进制的GT,即是真人脸还是欺骗人脸,Davg是前面每一帧D的平均值,fcs是普通的全连接层和softmax,最后输出的是跟BG相同的类别表示
然后将所有的LOSS整合
总结
1.从时间和空间角度进行切入的又一例子,但其实这样输入的就不是单张图片,感觉上算是加强输入换来的好结果
2.Contrastive Depth Loss是个新活,在细节粒度上哪里都能用