CVPR 2019 | 腾讯AI:做好活体检测,模型重要,数据亦然

点击我爱计算机视觉标星,更快获取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个视频,处理流程如下:

  1. 模糊:用大小随机的高斯核处理真人样本;

  2. 透视畸变:将真人样本裁减成设备屏幕大小,替换原本屏幕区域得到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的使用都是有章可循,但是对于其中的一些细节,我不是很理解,总结如下:

  1. 在3.1中,作者提到做样本时要尽量避免人工“伪造”的痕迹,比如屏幕反光、边框入镜等,但是摘要最后一句却强调了模型正是把这些细微证据作为分类依据,实验部分也证实了这一点。对于单目活体算法,样本的监督信息很有限(活体标签),攻击媒介的表达仅仅能体现在这些痕迹中,为什么要在做样本的时候尽量避免这些呢,是为了让模型学到和这些无关的特征么?个人觉得没有这必要,这样反而会给人前后矛盾的感觉。

  2. 在3.2中,作者总结出实际场景中的攻击有模糊和透视畸变两种特点,这是怎么得出来的啊?!在生成透视畸变样本的过程中还专门合成了反光的效果,这难道是模拟不是那么精细设计的攻击嘛(相比于3.1)?对于那个随机背景,在真正使用样本的时候,人脸检测器只把人脸区域抠出来,背景根本用不到啊!如果背景都能框进去,那这个检测器是不是不太行啊!

  3. 在第6部分对模型做分析时,放大Figure 5可以看到很多白色的框都框在背景上…这是人脸防攻击的实验,扣一块背景去做分类,能说明啥啊!和人脸有啥关系么?把人头轮廓裁剪下,就可以轻松破解这个算法的意思嘛?

  4. Table 2、Table 3和Table4的结果给人感觉模型没啥贡献,数据越多越好使,这有什么好证明的么?!看的我好疑惑啊!体现不出交叉测试的结果哪里SOTA……

  5. 对于CNN-LSTM分支,作者也没做对比实验,所以TASM的贡献是啥?

  6. 欢迎任意方式的吐槽~~~

(欢迎文末留言探讨,作者会看到的)


活体检测专业交流群

关注最新最前沿的人脸活体检测技术,欢迎加入52CV-活体检测专业交流群,扫码添加CV君拉你入群(如已为CV君好友,请直接私信,不必重复添加),

(请务必注明:活体):

喜欢在QQ交流的童鞋可以加52CV官方QQ群:702781905。

(不会时时在线,如果没能及时通过还请见谅)


长按关注我爱计算机视觉

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
## 使用前准备​ 1. 前往注册: [腾讯云账号注册](https://cloud.tencent.com/register) (详细指引见 [注册腾讯云](https://cloud.tencent.com/document/product/378/9603)) 2. 取得存储桶名称 **BucketName**: 请前往 [创建存储桶](https://cloud.tencent.com/document/product/460/10637) 3. 取得 **APPID**、**SecretId**、**SecretKey**:请前往 [云API密钥](https://console.cloud.tencent.com/cam/capi) ,点击“新建密钥” ## 快速体验 1. 修改文件 src/main/java/com/qcloud/image/demo/Demo.java 的 main() 方法,填入上述申请到的 **APPID**、**SecretId**、**SecretKey**、**BucketName** 2. 导入到 IDE:工程用 Maven 构建,以 Intellij IDEA 为例,导入方式为:Import Project -> 选择工程目录 -> Import project from external model -> Maven 3. 运行:Demo.java 右键,Run Demo.main() ## 使用简介 ### 初始化 ```java ImageClient imageClient = new ImageClient(APPID, SecretId, SecretKey); ``` ### 设置代理 根据实际网络环境,可能要设置代理,例如: ```java Proxy proxy = new Proxy(Type.HTTP, new InetSocketAddress("127.0.0.1", 8080)); imageClient.setProxy(proxy); ``` ### 使用 SDK 提供功能如下: **图像识别**:鉴黄,标签 **文字识别(OCR)**:身份证,名片,通用,驾驶证行驶证,营业执照,银行卡,车牌号 **人脸识别**:人脸检,五官定位,个体信息管理,人脸验证,人脸对比及人脸检索 **人脸核身**:照片核身(通过照片和身份证信息),获取唇语验证码(用于体核身),体核身(通过视频和照片),体核身(通过视频和身份证信息) ```java // 调用车牌识别API示例 String imageUrl = "http://youtu.qq.com/app/img/experience/char_general/icon_ocr_license_3.jpg"; String result = imageClient.ocrPlate(new OcrPlateRequest("bucketName", imageUrl)); System.out.println(result); ``` 更多例子详情可参见 [Demo.java](https://github.com/tencentyun/image-java-sdk-v2.0/blob/master/src/main/java/com/qcloud/image/demo/Demo.java) 的代码。 ## 集成到你的项目中 ### 获得 SDK jar 文件 1. 直接使用 release/*-with-dependencies.jar 2. 自行编译:在工程根目录下执行命令 `mvn assembly:assembly`,编译结果见 target/*-with-dependencies.jar ### 导入 jar 文件 根据项目具体情况导入 *-with-dependencies.jar
CVPR 2019中发表了一篇题为“迁移学习:无监督领域自适应的对比适应网络(Contrastive Adaptation Network for Unsupervised Domain Adaptation)”的论文。这篇论文主要介绍了一种用于无监督领域自适应的对比适应网络。 迁移学习是指将从一个源领域学到的知识应用到一个目标领域的任务中。在无监督领域自适应中,源领域和目标领域的标签信息是不可用的,因此算法需要通过从源领域到目标领域的无监督样本对齐来实现知识迁移。 该论文提出的对比适应网络(Contrastive Adaptation Network,CAN)的目标是通过优化源领域上的特征表示,使其能够适应目标领域的特征分布。CAN的关键思想是通过对比损失来对源领域和目标领域的特征进行匹配。 具体地说,CAN首先通过一个共享的特征提取器来提取源领域和目标领域的特征表示。然后,通过对比损失函数来量源领域和目标领域的特征之间的差异。对比损失函数的目标是使源领域和目标领域的特征在特定的度量空间中更加接近。最后,CAN通过最小化对比损失来优化特征提取器,以使源领域的特征能够适应目标领域。 该论文还对CAN进行了实验验证。实验结果表明,与其他无监督领域自适应方法相比,CAN在多个图像分类任务上取得了更好的性能,证明了其有效性和优越性。 综上所述,这篇CVPR 2019论文介绍了一种用于无监督领域自适应的对比适应网络,通过对源领域和目标领域的特征进行对比学习,使得源领域的特征能够适应目标领域。该方法在实验中展现了较好的性能,有望在无监督领域自适应任务中发挥重要作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值