12

A-tech手记:AI与攻防合作战全剖析

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzI2ODA2MjAwNw%3D%3D&%3Bmid=2247487495&%3Bidx=1&%3Bsn=6ceeb1f38248d73567fba8702f6ffde5
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

zmAFNzb.gif!mobile

作者简介

曾兆阳,中山大学五年级博士生,自2016年起从事计算机视觉相关研究至今,多次在国内外AI类竞赛获得冠军。

CLS战队成员: 曾兆阳( AI)、 钱贝贝(AI)、辛冠希(AI)、何立人(攻防)、周东旭(攻防)

很高兴,我们CLS战队能在A-tech科技精英赛中获得冠军。在这篇文章中我会给读者们重点介绍AI赛道和隐藏赛道的难点和主要的提分方案,以及我们战队在这次比赛中的心路历程。

01

赛制解读

A-tech的比赛赛制与往常的其他比赛都不同。 按照时间顺序来看,A-tech的赛制如下所示:

1. AI赛道任务是野生动物目标检测,评测指标是包括速度与精度,攻防赛道按照获得flag的分值计算得分(开赛前)

2. AI赛道获得到三个数据包(data_0, data_1, data_2),其中只有data_0能解压,data_1与data_2需要密码;攻防赛道获得A区的入口(A区背后有BCD区需要靠选手自己发掘)

3. 公布data_1解压密码

4. 强制休息

5. 公布隐藏赛道规则及分值

6. 公布data_2解压密码

值得注意的是,3-6对于比赛选手来说是随着比赛逐步进行才知道的,因此也让整个比赛过程充满了不确定性。

A-tech要求AI与攻防选手互相配合,具体为:

1. Data_1解压密码存在于B区的某台主机上,当攻防选手攻克这台主机时,可以提前获得解压密码

2. 攻防选手攻克C区核心主机时,可以提前获得隐藏赛道规则及分值(隐藏赛道即为D区)

3. 隐藏赛道(D区)的入口需要AI选手完成两个验证码自动识别的程序才能打开

4. Data_2解压密码存在于D区某台主机上,当攻防选手攻克这台主机时,可以提前获得解压密码

5. 当攻防选手成功攻克D区所有主机,可以由AI与攻防选手合力完成一个自动化攻击漏洞程序,完成后有超高分值加分

这次比赛的评分规则如下:

1. AI赛道评测指标为0.6*mAP+0.4*min(FPS/10,100),其中mAP最低要求为70,总运行时间不超过半小时(10000张测试图片左右);

2. 攻防赛道A区每个flag为100分,B区每个flag为200分,一血额外加100分;

3. C区的flag第一、二、三、四个拿到的队伍分别获得16000、12000、8000、4000分;

4. 隐藏赛道(D区)每个flag为2000分,一血额外加2000分;

5. 第一、二、三、四个完成自动化攻击漏洞程序的队伍分别获得18000、16000、14000、12000分;

6. 攻防赛道分值与最终得分的比例约为1000:1;

7. 最终的队伍总分为0.5AI+0.5攻防;

02

AI赛道

A-tech中AI赛道的任务是野生动物目标检测。与其他标准的目标检测任务不同, AI赛道的数据是被“攻击”过的,具体表现为:

1. 公布的类别是32类,共分为三个数据包(data_0, data_1,data_2)。其中,data_0包含28类,data_0+data_1包含29类,data_2为弱监督数据,只有框标注没有类别标注,实际总的有效类别只有29类。

2. 训练数据中部分图片md5完全相同但标注不同,需要将md5数值相同的标注合并,才能得到图片真实的标注(如下图所示)

ZZVvei3.png!mobile

vABVRz.png!mobile

3. 训练和测试数据存在各种各样的干扰,如下图所示(例子分别为椒盐噪声、对抗样本、颜色扰动、水印)

r6feeeE.png!mobile

FJJ3iuv.png!mobile

bYRbeiz.png!mobile

2aaYNvv.png!mobile

各个队伍针对AI赛道的解决方案都是基于Faster R-CNN或者YOLOv5进行改进, 主要的提分点包括:

1.MD5去重清洗数据;

2.中值滤波去椒盐噪声;

3.多尺度测试,牺牲FPS提高mAP;

4.对训练数据加数据增强(噪声、颜色、水印);

5.小尺度训练测试(缩小图片尺度能有效减少椒盐噪声);

6.对黑白图和彩色图分模型进行训练预测;

7.对data_2预测伪label并加入训练;

8.TensorRT推理加速;

9.多进程IO加速;

其中,1-4是我们团队采用的主要提分点。对于本次任务,模型的选择对最终的分数影响不大,一个标准的Faster R-CNN模型或者YOLOv5模型大约能得到60mAP的分数。

针对数据干扰做的改进是整个赛道任务和核心提分点,其中中值滤波去椒盐噪声能提升大约10 mAP,可以说只有当AI选手发现发现并攻克数据中的难点才有机会获得有效的分数(mAP分数需要大于70,否则最终成绩为0)。

03

隐藏赛道

在隐藏赛道中,AI选手需要完成两个验证码识别的程序,分别是简单验证码(下图上)和复杂验证码(下图下);

RNJvYbN.png!mobile

JzEnUjZ.png!mobile

z6v2Qjb.png!mobile

nEvYNjZ.png!mobile

ERVzMnz.png!mobile

VvquMjU.png!mobile

其中,简单验证码需要识别出准确的数字序列,复杂验证码需要预测图像旋转的角度。在测试的时候,测试图片数量未知,需要准确率达到100%才能通过,且给与选手的反馈只有通过/不通过两种。

简单验证码:

通过分析了简单验证码的图片,发现所有背景区域的rgb值都一样,每个字符的宽度也都差不多,因此可以先用rgb值对图片的边框进行裁剪,然后根据标注字符串的长度对裁剪完的图片做平均切割,然后用切割完的单字符图片训练了一个十分类的分类器(0~9共10个类)。

在这个任务上,一个ResNet-18网络即可在本地验证集上能达到99.9%的准确率;测试的时候,先使用rgb值对图片裁剪,然后使用整个数据集的平均字符宽度对图片做平均切割,然后对每个切割完的小块预测数字,再拼接成结果字符串,即可完成预测。

复杂验证码:

复杂验证码可以作为一个八分类问题解(每45度一个类,共8个类)。ResNet-18、ResNet-34、ResNet-50在本地验证集分别可以达到88%、93%、95%的准确率,最终ResNet-50模型通过了线上测试。

04

心路历程

从参赛选手的角度来看,A-tech比赛时反转不断、惊喜连连的。在比赛刚开始的时候,我们参赛选手并不知道攻防赛题有多少个区,以及各自具体的分值,我们只有随着时间的进行才能由点到面地掌握比赛的核心提分点,从而为队伍带来更大的收益。

从整体的复盘来看:

1. AI赛道的FPS几乎不占分,除非能将FPS优化到好几百;

2. 攻防赛道AB区分数基本不值钱;

3. 攻防赛道每2000分与AI赛道每6.67mAP大约等价,C区和D区的一血能给带来巨大的优势(若都拿到可累积几乎20的mAP优势,了解目标检测的同学应该知道这是一个什么概念);

4. C区不仅可以带来巨大的得分,而且可以提前开启隐藏赛道;

可以看出,C区和D区才是A-tech的核心提分点,率先攻克C区解锁隐藏赛道可以给队伍带来非常大的优势。

回顾整个比赛过程,我们战队印象最深的主要有下面三点:

1、两位攻防选手拿下C区是我们队伍策略安排上一个重要的转折点,通过分析了隐藏赛道的分值以及AI模型的提分潜力,我们决定暂时放弃AI调参,全力抢D区一血,把领先优势把握住,最后我们也达到了自己的预期;

2、隐藏赛道验证码识别题目的难度趋势远远大于上面所描述的那样,出题人要我们模拟的其实是一个真实环境下的攻击行为。对于我们参赛选手来说,唯一知道的信息是运行平台为windows,具体的操作系统版本、运行资源限制、测试图片数量、测试准确率我们全都不知道。我们每次提交的结果,只会收到“通过”或者“不通过”两种反馈。“不通过”可能是因为没运行成功,或者是运行成功但准确率没达到100%。在盲调试了多次之后,才摸清楚运行平台为windows7,然后现场装虚拟机系统,重新打包提交文件。我们队伍总共花了约9个小时才解决了两个验证码题目,远远超出了我们的预期时间;

3、我本场比赛唯一不足的地方是对数据的预判出现了偏差。我猜测data_2会有剩余的三个类,且会在第36小时发布(实际为第39小时)。我根据图片数量以及剩余时间,预期最终的模型大约能训练30个epoch,因此我们队伍之后都是以30个epoch为单位进行AI模型调参的,而这个epoch数量远低于模型需要的300个epoch。当data_2公布后,我们发现并没有我们最后三个类,而剩余的时间仅仅足够重新训练大约60个epoch。最终以AI模型惜败结束了比赛。

特别鸣谢

十分感谢何立人、周东旭,两位攻防大佬给我们积累了足够强大的分数优势;感谢钱贝贝、辛冠希两位AI队友在模型调参、平台部署上提供了强大的技术支援。同时也感谢奶茶姐何淑婷在赛后提供的方案分享。

最后,希望这比赛越办越好,以后有机会还来呀。

beym2iq.png!mobile

A-tech科技精英赛导师点评

“CLS战队针对验证码识别问题,对验证码图片进行了初步分析,并发现了一些规律,比如背景部分的像素值均为[238,238,238]等。

另外针对复杂验证码图片,发现图片的旋转角度只有8 个值,考虑将旋转角度预测转化为分类问题。最后再用ResNet18进行训练和测试,从方法上看有一定的创新性。”

—中国科学院计算技术研究所副研究员 庄福振

“CLS战队在攻防小组与AI小组之间的配合是很密切的,我们注意到攻防选手和AI选手互动较多,队伍内部气氛融洽、活跃,有很多讨论。

在赛场和导师交流的环节中,战队成员也都提出了很多很好的问题。特别是AI选手,上来不急于动手,而是先仔细观察数据,能够发现数据中预设的陷阱,并提出相应的解决方案,这也是他们开始在识别准确度上领先的原因。

之后AI选手为攻防选手验证码识别提供算法上的帮助,使得攻防比分上与其它队伍明显拉开差距。

尽管AI选手在AI赛道的表现上最终未能拔得头筹,整个团队的比分在A榜一直保持领先优势直至比赛结束,这正说明紧密有效的团队合作会使团队取得更好的成绩。”

—北京大学信息科学技术学院教授 王亦洲

点击收看《燃烧吧!天才程序员》完整版节目

ee6Ffi2.jpg!mobile

EzAZfyI.png!mobile


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK