GeekPwn对抗样本挑战赛冠军队伍开源人脸识别攻击解决方案

2018 年 12 月 11 日 机器之心

机器之心编辑

参与:路、王淑婷


10 月 24 日,2018 GeekPwn 国际安全极客大赛在上海展开,由 FAIR 研究工程师吴育昕、约翰霍普金斯大学在读博士谢慈航组成的团队获得了令人瞩目的 CAAD CTF 冠军。近日,该冠军队伍开源了其在人脸识别攻击项目中的解决方案。


2018 Geekpwn CAAD(对抗样本挑战赛)继承了 NIPS CAAD 2017 比赛的形式,但同时也添加了一些新的挑战。2018 年 10 月,吴育昕和谢慈航受邀参加 Geekpwn CAAD CTF,这是一场展示不同类型对抗样本攻防的现场比赛。


比赛上半场中,赛会要求所有选手进行非定向图片(将飞行器识别为任何其他物体)、定向图片(将武器识别为特定的其他物品)以及亚马逊名人鉴别系统(将大赛主持人蒋昌建的照片识别为施瓦辛格)共计三种图像的对抗样本攻击。由于在比赛前选手并不知晓题目模型所采用的算法,所以此类攻击也被称为「黑盒攻击」,其中第三个挑战在赛前更是被评委视为「无法完成的任务」。


第三项挑战是一项新挑战,要求参赛队伍攻击未知的人脸识别系统。在限时 30 分钟的上半场比赛中,参赛者拿到大赛主持人蒋昌建的照片。他们需要对照片做一些小的修改,以欺骗人脸识别系统,让它把照片中的人识别为施瓦辛格。比赛结束后,大家才知道该人脸识别系统是亚马逊名人鉴别系统。


由吴育昕与谢慈航组成的「IYSWIM」战队在限时 30 分钟的比赛中,首先于 21 分钟破解了亚马逊名人鉴别系统 Celebrity Recognition,并随后在定向图片的对抗样本攻击上破解成功,取得了领先。


近日,吴育昕在博客中简单介绍了他们对人脸识别的攻击,代码也放到了 GitHub 上。吴育昕称他们对比赛其他类型的攻击使用的是类似的算法,只是换了不同的 CNN。而关于比赛下半段防御相关内容的 paper 将稍后放出,代码和模型将于明年开源。


攻击方法


吴育昕在博客中称其黑盒攻击是很传统的方法,即用已知模型做梯度下降。


1. Model:


搜了搜 GitHub 上的人脸识别代码,找了个 5 分钟内能跑起来的 facenet。毕竟 GitHub 上大部分代码质量堪忧,有不少项目完全是靠 README 骗 star 的。能否短时间内复现 evaluation 结果是评判质量的重要 metric。更何况,我这次只需要能 evaluation 就够了。


facenet 的人脸识别流程很标准:对每张脸 I 输出一个 vector f(I),然后通过比较不同脸的 f(I) 之间的 cosine distance 进行人脸识别。


2. Objective:


对于分类器的 target/untarget attack,没什么好说的,就是 minimize/maximize 一个 cross entropy loss。而对于人脸,我们首先收集 target 人物的 N 张人脸图片,运行模型得到 N 个 embedding vector v_i。我们的 objective 就是 minimize 输入图片的 embedding 到这 N 个 embedding 的平均距离:



3. Attack:


我们在最原始的 PGD (Projected Gradient Descent) 攻击上加了点 trick。原始的 PGD 就是


 1)算 objective 对输入图片的梯度 ΔI

 2)更新输入 I = I−sign(ΔI)

 3)clip 以免输入超出允许范围:I←clip(I,I_orig−ϵ,I_orig+ϵ)

 4)回到第一步循环


这里有不少 trick 可以提高黑盒攻击的 generalization 能力:


 1)对梯度 normalize 一下,然后更新时用 0.9 的 momentum

 2)在循环每一步给图片随机加点小 noise

 3)在循环每一步对输入图片做些乱七八糟的随机 resize 变换

 4)对梯度做 spatial smoothing


这些 trick 从去年的 NIPS 比赛之后就陆续被大家用了。这次的人脸攻击用了 1,2,3。第三条是我比赛时发现代码不 work 临时加上的。事后验证发现,这一点尤其重要。如果不加的话攻击很难成功。


在相关的 GitHub repo 中,我们可以看到该团队的攻击代码和结果:


结果


比赛期间,吴育昕团队成功地攻击了 AWS 名人鉴别系统,让它把蒋昌建识别为了施瓦辛格。



下面这个挑战比较困难(不同随机种子的成功率较低),可能是因为:1)原人物和目标人物都是美国名人。2)性别不同。



很明显,Azure Vision API 和 Clarifai Celebrity Recognition 系统都可以被欺骗:



以上图像的原版本和对抗版本都可以从以下地址找到,若有兴趣你可以下载并在公开 API 上进行测试:https://github.com/ppwwyyxx/Adversarial-Face-Attack/blob/master/images


使用代码的准备工作


1. 安装 TensorFlow ≥ 1.7

2. 按照 facenet wiki 中的步骤 1 - 4 设置 facenet (https://github.com/davidsandberg/facenet/wiki/Validate-on-LFW)

3. 复制此 repo 并解压内部的预训练模型:


git clone https://github.com/ppwwyyxx/Adversarial-Face-Attack
cd Adversarial-Face-Attack
wget https://github.com/ppwwyyxx/Adversarial-Face-Attack/releases/download/v0.1/model-20180402-114759.tar.bz2
tar xjvf model-20180402-114759.tar.bz2


你也可以从 facenet 下载模型(https://github.com/davidsandberg/facenet#pre-trained-models)。


4. 验证模型和数据集:


./face_attack.py --data /path/to/lfw_mtcnnpy_160 --validate-lfw
# /path/to/lfw_mtcnnpy_160 is obtained above in step #4 in facenet wiki.


它应该在 LFW 数据集上有高准确率,如:


Accuracy: 0.99517+-0.00361
Validation rate: 0.97467+-0.01454 @ FAR=0.00067


执行攻击


./face_attack.py --data /path/to/lfw_mtcnnpy_160 \
    --attack images/clean-JCJ.png \
    --target Arnold_Schwarzenegger \
    --output JCJ-to-Schwarzenegger.png


--target 必须是在 LFW 数据集中有很多图像(越多越好)的人。可以通过以下方式找到这种人:


find /path/to/lfw_mtcnnpy_160/ -type f -printf "%h\0" | \
    xargs -0 -L1 basename | sort | uniq -c | sort -k1 -n 


你可以在 LFW 目录中添加新的名人作为 victim,或者为 LFW 中现有的名人添加图像。添加新图像之后,你需要重复 facenet wiki 中的步骤 4,以裁剪和对齐添加的新图像。


请注意,攻击包含随机性:你不会每次都得到相同的输出。


  • 博客地址:http://ppwwyyxx.com/2018/Geekpwn-CAAD-CTF/

  • GitHub 地址:https://github.com/ppwwyyxx/Adversarial-Face-Attack


 

本文为机器之心编辑,转载请联系本公众号获得授权

✄------------------------------------------------

加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com

投稿或寻求报道:content@jiqizhixin.com

广告 & 商务合作:bd@jiqizhixin.com

登录查看更多
1

相关内容

对抗样本由Christian Szegedy等人提出,是指在数据集中通过故意添加细微的干扰所形成的输入样本,导致模型以高置信度给出一个错误的输出。在正则化背景下,通过对抗训练减少原有独立同分布的测试集的错误率——在对抗扰动的训练集样本上训练网络。 对抗样本是指通过在数据中故意添加细微的扰动生成的一种输入样本,能够导致神经网络模型给出一个错误的预测结果。 实质:对抗样本是通过向输入中加入人类难以察觉的扰动生成,能够改变人工智能模型的行为。其基本目标有两个,一是改变模型的预测结果;二是加入到输入中的扰动在人类看起来不足以引起模型预测结果的改变,具有表面上的无害性。对抗样本的相关研究对自动驾驶、智能家居等应用场景具有非常重要的意义。
【综述】基于图的对抗式攻击和防御,附22页论文下载
专知会员服务
68+阅读 · 2020年3月5日
【浙江大学】对抗样本生成技术综述
专知会员服务
89+阅读 · 2020年1月6日
CVPR2019人脸防伪检测挑战赛Top3论文代码及模型解析
极市平台
47+阅读 · 2019年12月22日
【紫冬分享】自动化所团队获PRCV2018 美图短视频实时分类挑战赛冠军
中国科学院自动化研究所
10+阅读 · 2018年11月30日
干货 | 各大数据竞赛 Top 解决方案汇总
AI科技评论
12+阅读 · 2018年11月12日
Kaggle 新赛:第二届 YouTube-8M 视频理解挑战赛
AI研习社
10+阅读 · 2018年5月26日
百度魅族深度学习大赛初赛冠军作品(图像识别.源码)
数据挖掘入门与实战
5+阅读 · 2018年3月9日
开源 | 基于Python的人脸识别:识别准确率高达99.38%!
全球人工智能
4+阅读 · 2017年7月29日
Conditional BERT Contextual Augmentation
Arxiv
8+阅读 · 2018年12月17日
Arxiv
5+阅读 · 2018年5月16日
Arxiv
7+阅读 · 2018年4月21日
Arxiv
4+阅读 · 2018年2月13日
Arxiv
3+阅读 · 2015年5月16日
VIP会员
相关VIP内容
【综述】基于图的对抗式攻击和防御,附22页论文下载
专知会员服务
68+阅读 · 2020年3月5日
【浙江大学】对抗样本生成技术综述
专知会员服务
89+阅读 · 2020年1月6日
Top
微信扫码咨询专知VIP会员