内容简介:本文转载自52CV群友王哲的知乎文章:https://zhuanlan.zhihu.com/p/70606223
我爱计算机视觉 标星,更快获取CVML新技术
本文转载自52CV群友王哲的知乎文章:
https://zhuanlan.zhihu.com/p/70606223
今天我们来看一篇今年的CVPR,来自于腾讯AI的 Face Anti-Spoofing Model Matters, So Does Data
出自上海交通大学与腾讯AI Lab。
所有范畴:单目可见光静默活体
论文地址:
http://openaccess.thecvf.com/content_CVPR_2019/papers/Yang_Face_Anti-Spoofing_Model_Matters_so_Does_Data_CVPR_2019_paper.pdf
主要贡献:
-
提出一个很容易操作的收集大量数据的方法,包含人工伪造攻击样本和在伪造的基础上扩增,也证实了这批数据对人脸防攻击研究非常非常重要;
-
提出新模型,用时空+注意力机制来融合全局时域信息和局部空间信息,用于分析模型的可解释行为;
-
明显提升了多个AS( Anti-Spoofing,下同 )数据集的SOTA,为实际应用构建靠谱的解决方案同时让业界看到了希望的方向……(好热血的翻译)
简介
和其他活体论文一样,作者的研究背景依旧是现有模型泛化能力差、依赖于其他辅助信息,不能满足实际应用。所以呢,作者研究了收集数据的方法、提出Spatio-Temporal Anti-Spoof Network(STASN,Figure1),研究成果大幅提升了AS数据集上的SOTA,实验结果证实STASN具有自动搜索有效区域(能够区真人与攻击的区域)的能力,并能从这些区域中找到证据细节(摩尔纹,屏幕反光,屏幕边界等)。下面我会详细说明数据扩增和STASN这两部分。
数据
论文中说的这批数据的攻击样本分为两部分:人工伪造的攻击样本和在伪造的基础上做数据扩增的样本;真人视频和攻击视频各有5000个,收集和制作这1w条视频共花了1个月时间。
先说真人样本和人工伪造攻击,作者用 Python 脚本从网上爬了5000条有真人的视频,每一条都用Dlib筛选出5-10s,真人样本就准备好了;
作者用不同的设备播放真人视频在用不同设备翻拍,播放设备包括三种iPhone、超过十种常见的安卓手机、iPad、安卓平板以及台式机和笔记本的屏幕,翻拍设备包括常见的iPhone和安卓手机(光看这个数据,也知道模型效果差不到哪里去),这堆设备产生了2500个攻击视频,每个还是5-10s,两个人花了不到一个月做完的,制作的时候还要注意避免“伪造”的痕迹,比如屏幕反光、摩尔纹和屏幕边框;
重点是自动合成的这批,作者发现实际场景中的攻击样本不是分辨率低就是有反光+透视畸变,就分别合成了带有模糊和透视畸变两种类型的攻击样本,共2500个视频,处理流程如下:
-
模糊:用大小随机的高斯核处理真人样本;
-
透视畸变:将真人样本裁减成设备屏幕大小,替换原本屏幕区域得到X1;将X1与某随机图像B加权叠加得到X2,B的权重为为[0, 0.2]之间的随机数;对X2做透视变换,再与随机背景图做mask叠加,即用背景替换X2透视变换产生的“0”值区域,得到目标图像。如下图所示,至此,第二部分攻击样本合成结束。
这种收集数据的方法看起来确实没多复杂,但同时操作十几台手机还是有点难搞的,两个人一个月做完真的非常非常高效了,作者好像没考虑打印攻击哎~
模型
A 网络结构:
如Figure 3 所示,本文提出的TSASN分三部分,Temporal Anti-spoofing Model(TASM),Spatial Anti-spoofing Model(SASM)和Region Attention Model(RAM),被作者给予最大篇幅描述的是RAM,这也很好理解,毕竟另外两部分真的没什么可说的,普通的不能再普通的常规操作。
-
Temporal Anti-spoofing Model(TASM)
这部分是个CNN-LSTM结构,BackBone用的ResNet 50,用在ImageNet上预训练的权重提特征,后面接一GAP,丢进SoftMax分类,就这么简单暴力;
-
Region Attention Model(RAM)
视频动作捕捉这部分是整篇文章的highlight,RAM用来产生SASM的输入,也就是模型认为对分类更重要的区域。
作者先用图像中心做初始化在原图产生先验框,再学习相对这些先验框的偏移量,对backbone提取的特征,Fk,M*2048*7*7维特征产生M*2048*K*2个预测值,K是先验框的数量。
作者发现直接用中心点做初始化不太行,就改成了Grad-Gram初始化,效果有提升。后续操作是对Fk产生heat map,双线性插值上采样到原图大小,再接个均值池化,得到4*4的score map,从中选出top K,丢到SASM。
-
Spatial Anti-spoofing Model(SASM)
SASM有多个branch,RAM产生多少个crop,就有多少个branch,这些分支都是完全一样的网络结构,共享参数;提取特征后接1*1卷积,2048维->256维,再把K个256维的特征拼一起,丢进SoftMax分类,依旧粗暴。
整个TSASN产生两个分类结果,测试的时候,作者把时域和空域的活体得分合到一起,具体怎么合的,没说。
B 训练:
作者分三个stage训练TSASN,第一步,先用ResNet的与训练权重初始化TASM,再用活体数据微调5 个epoch;第二步,固定TASM参数,配合Grad-Gram算法训练RAM和SASM,5个epoch;最后把学习率*0.1,端到端训练整个网络。
实验
作者使用的超参不在此赘述了,实验也都在常用的数据集上做的,Oulu,Siw,Replay-Attack等,也分别对注意力机制模块和初始区域搜索做了模型简化实验。
值得一提的是,作者使用自己的数据做了对比实验,即对比使用自有数据和不使用自有数据预训练TASM的模型在公开数据集上的性能差异……这个有点迷的。
先看下简化实验的结果,实验在Onlu数据集上进行的,遵循protocol1和protocol3,如Table 1,增加RAM和区域搜索都能提升分类精度,没毛病。
再看不同公开数据集上的结果和其他算法的对比,如Table 2和Table 3所示,‘Ours+’表示用自有数据预训练过TASM的版本。从Table 2上来看,在Onlu上,‘Ours+’遍地开花,取得最多SOTA,没用自有数据预训练的就没那么出彩了,很普通;Table 3展示Siw上的实验结果,只把MSU的Binary or Auxiliary Supervision这篇哪来比较了一下,成绩平平。
重头戏来了,跨数据集的实验结果,作者用CASIA-MFSD和Replay-attack分别作训练集测试集,交叉测试,见Table 4,‘Ours+’以绝对优势取得sota,‘Ours’依旧成绩平平。
分析
可能是作者自己也怀疑模型本身的贡献太少,就对RAM结果和分类结果做了可视化,如图Figure 5,把ResNet50提出的特征降到2维,用Grad-Gram做区域搜索,这里区域的个数为4,这里的分类结果是对每个图像中白色框内的区域预测得到的。
作者并没有说这个实验有没有用到自己的数据预训练,也没说这是在哪个数据集上进行的:-) 可以看到两类样本的在2维坐标系上分的很开,白框好像没什么规律啊,很多都取到背景上,这能证明什么?作者又有解释;看Figure 6,白色框为先验框,橘色为模型预测框,这三对例子说明啥?对于真人,attention 区域都在面中部,而攻击呢,都在边缘、背景处,这…我不知道该怎么评价了,一口老血…
总结
这篇19年的CVPR,提出了powerful and robust 模型(作者自己说的),模型本身利用了时域、空域和attention的信息,还用自有数据集做了预训练,在多个数据集上取得sota;后续实验也证实了大规模数据,尤其是和真实场景相近的数据在实际使用时很重要。(废…)
这篇文章提出的收集样本的方法、CNN-LSTM结构、Attention的使用都是有章可循,但是对于其中的一些细节,我不是很理解,总结如下:
-
在3.1中,作者提到做样本时要尽量避免人工“伪造”的痕迹,比如屏幕反光、边框入镜等,但是摘要最后一句却强调了模型正是把这些细微证据作为分类依据,实验部分也证实了这一点。对于单目活体算法,样本的监督信息很有限(活体标签),攻击媒介的表达仅仅能体现在这些痕迹中,为什么要在做样本的时候尽量避免这些呢,是为了让模型学到和这些无关的特征么?个人觉得没有这必要,这样反而会给人前后矛盾的感觉。
-
在3.2中,作者总结出实际场景中的攻击有模糊和透视畸变两种特点,这是怎么得出来的啊?!在生成透视畸变样本的过程中还专门合成了反光的效果,这难道是模拟不是那么精细设计的攻击嘛(相比于3.1)?对于那个随机背景,在真正使用样本的时候,人脸检测器只把人脸区域抠出来,背景根本用不到啊!如果背景都能框进去,那这个检测器是不是不太行啊!
-
在第6部分对模型做分析时,放大Figure 5可以看到很多白色的框都框在背景上…这是人脸防攻击的实验,扣一块背景去做分类,能说明啥啊!和人脸有啥关系么?把人头轮廓裁剪下,就可以轻松破解这个算法的意思嘛?
-
Table 2、Table 3和Table4的结果给人感觉模型没啥贡献,数据越多越好使,这有什么好证明的么?!看的我好疑惑啊!体现不出交叉测试的结果哪里SOTA……
-
对于CNN-LSTM分支,作者也没做对比实验,所以TASM的贡献是啥?
-
欢迎任意方式的吐槽~~~
(欢迎文末留言探讨,作者会看到的)
活体检测专业交流群
关注最新最前沿的人脸活体检测技术,欢迎加入52CV-活体检测专业交流群,扫码添加CV君拉你入群(如已为CV君好友,请直接私信, 不必重复添加 ),
( 请务必注明:活体 ):
喜欢在QQ交流的童鞋可以加52CV官方QQ群: 702781905 。
(不会时时在线,如果没能及时通过还请见谅)
长按关注 我爱计算机视觉
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 史上最全 OpenCV 活体检测教程!
- 向「假脸」说 No:用OpenCV搭建活体检测器
- 又免费! 虹软用离线“活体检测”赋能开发者刷脸商用密钥
- 全球首个活体机器人诞生:蟾蜍细胞构建,进化算法设计,能动能自愈
- [Windows][C#][.NET][WPF]基于ArcFace2.0+红外双目摄像头的活体检测
- 能量视角下的GAN模型(三):生成模型=能量模型
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。