CVPR 2021大赛, 安全AI 之防御模型的「白盒对抗攻击」解析

 

作者:孙裕道

1 引言

 

2021年的安全AI挑战者计划的第六期由阿里和CVPR联合推出的竞赛一共分为两个赛道,赛道1是 防御模型的白盒对抗攻击,赛道2是 ImageNet无限制对抗攻击。

CVPR 2021大赛,防御模型的「白盒对抗攻击」解析

比赛链接:

https://tianchi.aliyun.com/s/cb2b6280f50dd95a685e9bb4ce840f4a

(点击文末阅读原文直达)

评估平台:

https://github.com/thu-ml/ares/tree/contest

 

本文主要是对赛道1的赛题的一些讲解。要知道目前很多对抗防御方法被提出以减轻对抗样本的威胁。但是,其中一些防御可以被更强大或更具针对性的攻击攻破,这使得很难判断和评估当前防御和未来防御的有效性。

本次比赛的目的就是对防御模型进行全面而正确的鲁棒性评估。

挑战者计划第二季总奖金池为200万元,本期总奖金为10万美金,并包含近10万元的奖品福利,奖励如下:

CVPR 2021大赛,防御模型的「白盒对抗攻击」解析

 

赛事节点:

CVPR 2021大赛,防御模型的「白盒对抗攻击」解析

2 题目赛况

 

2.1 数据介绍

比赛方通过15个防御模型测试选手提交的攻击算法,其中包括13个在CIFAR-10上训练的模型和2个在ImageNet上训练的模型,比赛方将会利用CIFAR-10测试集的前1000个数据和ImageNet ILSVRC 2012验证集中随机挑选的1000个数据进行测试。为了方便查阅我将其整理成如下表格:

CVPR 2021大赛,防御模型的「白盒对抗攻击」解析

表1 模型介绍

 

举办的比赛方很贴心,他们已经将这些模型链接的下载程序https://github.com/thu-ml/ares/tree/contest 中,如下图所示,为各个模型下载的程序。

需要注意的一点是这些预训练好的模型大部分存储在google 的Drive云端中,所以需要梯子来进行下载。

CVPR 2021大赛,防御模型的「白盒对抗攻击」解析

 

为了能够让大家更加方便的去获取模型我将这13个Cifar-10模型和2个Imagenet模型存放到百度云盘中。下载模型的链接和密码分别为:

  • 链接:https://pan.baidu.com/s/13Je6K5TjNeGiReAtOUBfew
  • 密码:CVPR
CVPR 2021大赛,防御模型的「白盒对抗攻击」解析

 

2.2 评价指标

本次比赛的提交评测,在主办方提供的ARES评测平台上进行。

平台的链接为:

https://github.com/thu-ml/ares/tree/contest

CVPR 2021大赛,防御模型的「白盒对抗攻击」解析
CVPR 2021大赛,防御模型的「白盒对抗攻击」解析

3 提交文件介绍

 

本次比赛提交的是攻击代码,而不是在本地生成的对抗样本。每个提交都是一个名为 Attacker.zip (或者是attacker.zip )的Python软件包的zip 压缩包。在__init__.py 中实现自己的对抗攻击类,主办方为了实现接口的统一,需要调用ares.attack.base中的抽象类BatchAttack对其进行改写,类中共包含3个函数,分别是 __init__(),config(),batch_attack() 。

__init__() 函数接受4个参数:model, batch_size, dataset, session。

model是ares.model.base.ClassifierWithLogits的实例。可以用过调用
model.logits(xs)得到模型的logits输出,进而通过调用tf.gradients() 计算模型梯度。其还提供了模型的其他信息,比如模型的输入数据范围[model.x_min, model.x_max], 模型输入数据的维度model.x_shape。

batch_size是对于模型建议的batch_ size。需要通过此batch_ size 对模型进行调用。我们保证了充足的GPU内存。batch_size在CIFAR-10上是100;在ImageNet上是20。

dataset是“imagenet”或“cifar10”的字符串。

session是tf.Session的实例。模型将会读入此session。需要通过此session运行模型。

 

config函数接受关键词参数kwargs,将扰动通过kwargs[“magnitude”]传入,此函数的返回值被忽略。

batch_attack函数接受3个参数: xs, ys, ys_target。

xs是原始样本。需要对其产生对抗样本。xs是numpy格式的数组, 其维度为(batch_size, *model.x_shape)。

ys是对应的真实类别。

ys_target用于目标攻击,在此次比赛中没有用到,将被设置为None。

 

主办方在评测的过程中需要对提交的攻击限制时长:

每个数据的平均梯度计算次数应少于100次

平均模型预测次数应少于200次

所有模型的总运行时间应少于3小时

4 实际提交

 

在提交自己的代码之前一定需要现在本地的实验环境中先跑通否则就会各种报错,如下图所示:

 

CVPR 2021大赛,防御模型的「白盒对抗攻击」解析

 

我提交的是PGD攻击的样例代码,可以得到44.07的分数,进一步的攻击还在尝试中。

 

CVPR 2021大赛,防御模型的「白盒对抗攻击」解析

 

总体的排行榜如下所示,最高分是52.36分。

 

CVPR 2021大赛,防御模型的「白盒对抗攻击」解析

2月25日19:00~20:30将有一场赛事直播,欢迎围观~

围观链接:https://live.bilibili.com/h5/22775494

转载请注明:《CVPR 2021大赛, 安全AI 之防御模型的「白盒对抗攻击」解析