当前位置: 首页 > news >正文

中科院aibench_CVPR2019人脸防伪检测挑战赛Top3论文代码及模型解析

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注极市平台公众号,回复加群,立刻申请入群~

来源:知乎

链接:https://zhuanlan.zhihu.com/p/69542283

本文经作者授权转载,未经允许,不得二次转载

赛事简介

ChaLearn Face Anti-spoofing Attack Detection Challenge@CVPR2019:

CVPR2019的workshop,此次比赛项目是人脸防欺诈攻击检测。

人脸防欺诈攻击检测,主要是帮助人脸识别系统判断被采集人脸是用户本人脸部,还是打印的照片,录制的视频,3D面具等伪造物,所以也叫活体检测。这项技术对于手机解锁,门禁控制,刷脸支付的安全性是至关重要的。

从技术发展上,人脸防欺诈检测可以简单地分为两大类:传统的人工特征模式识别方法和近几年兴起的CNN深度学习方法。通过在几个通用数据集上的测试,目前,深度学习方法在识别准确性上对传统方法已成碾压态势。本次比赛中,也很难见到传统方法的身影。

衡量指标

衡量人脸识别算法性能的优劣有很多不同的标准,比如FAR,FRR,TAR等,这次比赛主要依据的是TPR@10e-4 FPR作为衡量标准。

TPR (True Positive Rate)真正类率,又叫真阳率,代表预测是异常实际也是异常的样本数,占实际总异常数的比例——数值越大,性能越好:

FPR (False Positive Rate)假正类率,又叫假阳率,代表预测是异常但实际是正常的样本数,占实际正常总数的比例——数值越小,性能越好:

TPR@10e-4 FPR即为当FPR为10e-4时候的TPR的数值,之所以采用这种形式是因为在不同的FPR下度量的TPR是会不同的。

这个数值越大,说明算法性能越好。

比赛数据集

此次比赛的数据集是CASIA-SURF,这是中科院自动化所推出的数据集,包含了1000个个体样本的21000段视频。采集设备是英特尔的RealSense SR300立体相机,同时采集了RGB,红外图,和深度图。数据集按3:1:6的比例分成了训练、开发、测试三个子集。大赛为了检验参赛模型有足够泛化能力,训练集只给了一部分。

Top3团队及参赛模型介绍

Top3的团队在美国长滩岛CVPR2019 Worshop上做了技术分享。全部成绩信息:

注:比赛分为多个阶段,本文采用的结果为最终被CVPR2019接受的时间点的结果。

冠军:Visionlabs -俄罗斯明星面部识别初创公司

VisionLabs是俄罗斯的一家专注于人脸识别、物体识别、增强现实和虚拟现实的公司,是全球视觉识别市场的领导者。

这家公司充分发挥了战斗民族的数学天赋(雪地里能格斗,回屋里能解题,能文能武。。),其技术团队由计算机视觉和机器学习专家组成,拥有独家开发的最先进的算法和技术。

VisionLabs处理了俄罗斯和独联体几百万摄像头中的数据流。占据俄罗斯和独联体人脸识别技术引进的80%份额。

美国情报局举办的全球人脸识别挑战赛(IARPA)上,包揽了识别速度和识别准确率两项比赛的冠军。美国情报局承认其人脸识别技术是世界第一。

VisionLabs 与 Facebook 和 Google 是合作伙伴关系,他们共同开发了一个开源计算机视觉平台(Facebook和谷歌为该项目提供了资金支持),这个平台整合了OpenCV和Torch两个最受开发人员欢迎的神经网络和人工智能库。他们与NVidia合作打造了人脸识别汽车钥匙。

CVPR2019的这次挑战赛上VisionLabs拿了冠军。公司长期目标是15到20年内用生物特征取代全俄罗斯的护照。

论文:

Recognizing Multi-modal Face Spoofing with Face Recognition Networks

链接:

http://openaccess

.thecvf.com

/content

_CVPRW_2019/papers/CFS/Parkin_Recognizing_Multi-Modal_Face_Spoofing_With_Face_Recognition_Networks_CVPRW_2019_paper.pdf

代码:

AlexanderParkin/ChaLearn_liveness_challenge

链接:

https://github.com/AlexanderParkin/ChaLearn_liveness_challenge

模型简评:

模型基于经典的ResNet-34和ResNet-50做backbone,加入了SE模块。

SE模块,Sequeeze-and-Excitation(SE) block,源自2017年的论文Squeeze-and-Excitation Networks,l链接:

https://arxiv.org/abs/1709.01507

。SE block并不是一个完整的网络结构,而是一个子结构,可以嵌到其他分类或检测模型中,比如下图是SE-ResNet:

SENet的核心思想在于通过网络根据loss去学习特征权重,使得有效的feature map权重大,无效或效果小的feature map权重小的方式训练模型达到更好的结果。当然,SE block嵌在原有的一些分类网络中不可避免地增加了一些参数和计算量,但是在效果面前还是可以接受的。

夺冠技巧:

正如visionlab自己总结的那样,他们的算法之所以solid,是在数据处理,模型架构,参数初始化三个方面的优势累积的结果。

一、

对训练集的巧妙拆分

为了提高模型的泛化能力和鲁棒性,不仅仅能够识别训练集里面的攻击类型,也能够对测试集里未知的攻击具备识别能力,作者将训练集拆成三份。每一份里面含有两种攻击,然后第三种攻击作为测试。训练的时候,将三个网络看成一个单一模型,对预测结果分数进行平均。

二、

MLFA blocks 多层次特征聚合模块

即Multi-level feature aggregation,使用随机权重初始化MLFA,再用最好的学习策略进行训练,会发现包含MLFA blocks的错误率比不包含的降低了1.5倍。原因是,MLFA blocks可以充分利用来自不同模态粗细层级的特征进行融合。

三、使用多个不同任务的预训练模型fine-tuning

因为训练数据有限,使用预训练模型进行模型参数初始化时很常见的技巧。visionlabs为了让防欺诈模型具有更广泛的人脸特征学习能力,使用了人脸识别和性别检测的预训练模型作为初始化参数,然后在四个数据集上进行fine-tuning。结果证明,对于目标任务的不同预训练模型进行特征迁移是有作用的,使用多种人脸相关任务的综合结果能够提高系统的稳定性和性能。

一系列技巧,让冠军的方案TPR@FPR=10-4已经无限接近100%;但是,这个模型并不是完美的,因为网络复杂,子模型众多,还有SE模块这种子结构增加了系统复杂性,使得它准确率出色,速度却比较尴尬,不能达到实时。这也是该团队下一步的工作重点。

亚军:上海阅面科技有限公司-中国视觉AI新秀

阅面科技是上海交大AI博士赵京雷的初创公司,成立于2015年的上海。

定位明确,致力于在低功耗AI芯片端进行视觉AI应用的开拓,拥有一系列行业领先的核心技术。

核心研发团队由来自阿里、百度、以及卡内基梅隆大学的顶尖人工智能研发人员组成。

论文:

FaceBagNet: Bag-of-local-features Model for Multi-modal Face Anti-spoofing

链接:

http://openaccess.thecvf.com/content_CVPRW_2019/papers/CFS/Shen_FaceBagNet_Bag-Of-Local-Features_Model_for_Multi-Modal_Face_Anti-Spoofing_CVPRW_2019_paper.pdf

代码:

SeuTao/CVPR19-Face-Anti-spoofing

链接:

https://github.com/SeuTao/CVPR19-Face-Anti-spoofing

模型简评:

注:阅面科技是前三名里唯一不提供pretrained model下载链接的团队,截止发稿时间未回答预训练模型相关的问题,保持了十足的神秘感,也给其他人复现其比赛结果造成了一定的障碍。

他们提出了一个带有模态特征擦除功能(MFE)的多路CNN架构,因为其中借鉴了BagNet的思想,故名为FaceBagNet。从短短5页的论文中,可以看出该团队主要使用了2个方法来提升比赛成绩:

一、

patch-based 特征学习

因为欺诈相关的区别性信息遍布于整个脸部区域,所以使用CNN去提取patch级别的图片信息。常见的基于patch的方案,会把整个脸部分割成数个互相不交叠的固定区域,然后每个区域训练一个独立的子网络。

本文的使用方法,对于每一个模态,训练一个单一的CNN随机从脸部获取patch。然后,使用他们自定制的ResNext网络提取特征。网络中包括五组卷积模块,一个GAP,一个softmax层。

结果证明,基于patch的特征对于不同的欺诈攻击具有很高辨别能力。

二、使用MFE模块进行multi-stream融合

RGB,IR,depth三种模态各有一个独立的子网络,三个子网络提取的特征肯定是不同的。在第三个卷积模块后,将特征图进行拼接。这是不同模态结果进行融合的方案。

为什么要使用MFE模块呢?因为这里面有一个问题,直接简单的拼接不同模态的channel,无法充分利用不同模态之间的关联特性。为了防止过拟合和更好的进行特征学习,于是引入了MFE,即Modal Feature Erasing。训练的时候,随机选择一个模态的特征输入进行擦除(其实就是置零)。结果证明,这招有效防止了过拟合。dropout的既视感。

季军:英特尔公司+华科大

英特尔,没什么好说的,老牌美企,半导体行业的常青树,对深度学习领域不断投注资本(并购狂魔)。这次的季军来自位于上海的亚太研发中心,鉴于英特尔长期致力于和国内高校进行合作研究,论文也属名了华科大。

论文:

FeatherNets: Convolutional Neural Networks as Ligh as Feather for Face Anti-spoofing

链接:

https://arxiv.org/pdf/1904.09290.pdf

代码:

https://github.com/SoftwareGift...

链接:

https://github.com/SoftwareGift/FeatherNets_Face-Anti-spoofing-Attack-Detection-Challenge-CVPR2019

模型简评:

模型的名字叫FeatherNet,寓意轻如鸿毛,是轻量级的神经网络模型。主要有两个特色方法:

一、Streaming Model 流模块

主要是替代全局平均池化GAP(Global Average Pooling)。

GAP被众多state of the art 目标检测网络采用,比如ReasNets,DenseNet,MobileNetV2,ShuffleNetV2,非常主流,适合降维和防止过拟合。但是在人脸相关的任务中,GAP对准确性却容易造成负面影响,主要原因在于其中的“equal importance”不适合人脸任务。为什么呢?简而言之,人脸图像不同于一般的目标检测图像,中心区域应该比边缘区域享有更高的权重,GAP是无法做区域权重区分的。能做到这一点的,一个可能选择是全连接层,但是会大量增加模型参数和过拟合的风险,不可取。

作者选用了(DWConv)Depthwise convolution layer来解决这个问题,读者会觉得有点儿眼熟,因为在2018年有一篇论文“Mobilefacenets: Efficient cnns for accurate real-time face verification on mobile devices. ”,里面就论证了Global Depthwise Convolution (GDConv) layer对于人脸任务的有效性。

根据测试结果,Streaming module比GAP精确度更高,又不会像FC层显著增加参数和过拟合风险。

这就是为什么要多读相关领域的论文,因为拿来主义经常很奏效!

二、multi-result fusion

多模态数据的结果最终一定是要融合的,具体到融合的策略就八仙过海各显神通了。FeatherNets选择的是传统的cascade级联的方法,设计了一种新的融合分类器体系结构,将从多模态数据(depth 和 IR 数据)中学习到的多模型进行组合和级联;具体架构如下:1.基于depth images先判断好区分的样本,输出real和fake的结果;2.将上一阶段不好确定的样本再通过IR images再判断一轮,输出最终结果。

结语

显而易见,基于CNN的深度学习方法已经彻底改变了人脸防欺诈检测领域的发展轨迹,就如同DeepFace等技术也改变了人脸检测,人脸识别等其他领域的发展轨迹一样,可以成为一场正在进行的技术革命;

对于这项挑战赛,在数据集、评价方法都已经限定的情况下,结果就是一切。相对于一般的CVPR文章,创新性的考核实际是被削弱了的。而能够决定分数的,实际是经验和技巧。不难发展,名列前茅的参赛选手,都在Kaggle等比赛平台上经验丰富,硕果累累。论文是调试技巧的强行归纳,这也是为什么论文都比较短的原因。

拿来主义一直是很有效的。当然,这里的拿来主义并不是贬义的,更不是简单的搬运,而是基于对大量论文的涉猎,通过深入的理解消化和融会贯通,而获得的对问题本质的敏锐洞察力,和对潜在的解决方案的横向连接能力。无他,唯手熟尔。

Top3的方案不约而同地采用了PyTorch平台进行实现。所以,平台之争孰为王者又多了一个有力例证。

参考文献

[1] ChaLearn Face Anti-spoofing Attack Detection Challenge@CVPR2019,link

[2] Shifeng Zhang, Xiaobo Wang, Ajian Liu, Chenxu Zhao, Jun Wan, Sergio Escalera, Hailin Shi, Zezheng Wang, Stan Z. Li, " CASIA-SURF: A Dataset and Benchmark for Large-scale Multi-modal Face Anti-spoofing ", arXiv, 2018 PDF

[3] Aleksandr Parkin et al, "Recognizing Multi-modal Face Spoofing with Face Recognition Networks" (1st place)

http://openaccess.thecvf.com/content_CVPRW_2019/papers/CFS/Parkin_Recognizing_Multi-Modal_Face_Spoofing_With_Face_Recognition_Networks_CVPRW_2019_paper.pdf

[4] FaceBagNet: Bag-of-local-features Model for Multi-modal Face Anti-spoofing (2nd place)http://openaccess.thecvf.com/content_CVPRW_2019/papers/CFS/Shen_FaceBagNet_Bag-Of-Local-Features_Model_for_Multi-Modal_Face_Anti-Spoofing_CVPRW_2019_paper.pdf

[5] Peng Zhang et al, "FeatherNets: Convolutional Neural Networks as Ligh as Feather for Face Anti-spoofing"(3rd place) https://arxiv.org/pdf/1904.09290.pdf

[6] Squeeze-and-Excitation Networks https://arxiv.org/abs/1709.01507

-End-

CV细分方向交流群

添加极市小助手微信(ID : cv-mart),备注:研究方向-姓名-学校/公司-城市(如:目标检测-小极-北大-深圳),即可申请加入目标检测、目标跟踪、人脸、工业检测、医学影像、三维&SLAM、图像分割等极市技术交流群(已经添加小助手的好友直接私信),更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流,一起来让思想之光照的更远吧~

△长按添加极市小助手

△长按关注极市平台

觉得有用麻烦给个在看啦~

相关文章:

  • flutter 页面加载动画_为页面切换加入动画效果
  • 可变悬挂与空气悬挂的区别_可调悬挂和空气悬挂有什么区别啊,求解释
  • base64图裁剪 php_php解析base64数据生成图片的方法
  • cahrt框架 ios_iOS使用Charts框架绘制柱形图
  • 关于python搞笑段子精选_你能讲一个让人瞬间爆笑的笑话吗?
  • php yield 个人小解_php 新特性之yield大数组处理优化
  • div盒子边距_CSS | 盒子模型之外边距(margin)
  • php mongodb 按照日期统计_PHP程序员应该掌握哪些技术?
  • 图片在section上下居中_停!你的时间不应该花在无谓的图片/文字对齐上
  • python小课堂28_python课堂整理28----re模块
  • fabric shim安装合约_Fabric 2.0 实战 - 设置背书策略
  • springboot 单测加入参数_SpringBoot加Lambda进行参数校验的一个通用方案
  • java 炸金花_炸金花绝对大小计算 比较及排序算法(Java)
  • ios请求头解决参数中文乱码_vue Axios 向后端提交参数 请求头 json 方式(Content-Type: application/json; charset=UTF-8)...
  • three相机在模型上_javascript – Three.js围绕物体旋转相机(可能会移动)
  • avalon2.2的VM生成过程
  • AWS实战 - 利用IAM对S3做访问控制
  • C++类中的特殊成员函数
  • crontab执行失败的多种原因
  • Facebook AccountKit 接入的坑点
  • git 常用命令
  • JavaScript对象详解
  • java小心机(3)| 浅析finalize()
  • magento2项目上线注意事项
  • Node + FFmpeg 实现Canvas动画导出视频
  • PAT A1120
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 动态魔术使用DBMS_SQL
  • 关于字符编码你应该知道的事情
  • 将 Measurements 和 Units 应用到物理学
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 首页查询功能的一次实现过程
  • 自制字幕遮挡器
  • #微信小程序:微信小程序常见的配置传旨
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (NSDate) 时间 (time )比较
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (力扣)1314.矩阵区域和
  • (六)vue-router+UI组件库
  • (算法)Game
  • (五)c52学习之旅-静态数码管
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • **CI中自动类加载的用法总结
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net 设置默认首页
  • .ui文件相关
  • // an array of int
  • @Import注解详解