乌鲁木齐最好的白癜风医院 http://m.39.net/pf/a_4484869.html
作者简介
曾兆阳,中山大学五年级博士生,自年起从事计算机视觉相关研究至今,多次在国内外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,),其中mAP最低要求为70,总运行时间不超过半小时(00张测试图片左右);
2.攻防赛道A区每个flag为分,B区每个flag为分,一血额外加分;
3.C区的flag第一、二、三、四个拿到的队伍分别获得、10、、分;
4.隐藏赛道(D区)每个flag为0分,一血额外加0分;
5.第一、二、三、四个完成自动化攻击漏洞程序的队伍分别获得1、、1、10分;
6.攻防赛道分值与最终得分的比例约为0:1;
7.最终的队伍总分为0.5AI+0.5攻防;
(更多关于赛制的详细介绍,可以参考主办方的赛制分享文章《独家:A-tech科技精英赛百万奖金背后的秘密》)
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数值相同的标注合并,才能得到图片真实的标注(如下图所示)
3.训练和测试数据存在各种各样的干扰,如下图所示(例子分别为椒盐噪声、对抗样本、颜色扰动、水印)
各个队伍针对AI赛道的解决方案都是基于FasterR-CNN或者YOLOv5进行改进,主要的提分点包括:
1.MD5去重清洗数据;
2.中值滤波去椒盐噪声;
3.多尺度测试,牺牲FPS提高mAP;
4.对训练数据加数据增强(噪声、颜色、水印);
5.小尺度训练测试(缩小图片尺度能有效减少椒盐噪声);
6.对黑白图和彩色图分模型进行训练预测;
7.对data_2预测伪label并加入训练;
8.TensorRT推理加速;
9.多进程IO加速;
其中,1-4是我们团队采用的主要提分点。对于本次任务,模型的选择对最终的分数影响不大,一个标准的FasterR-CNN模型或者YOLOv5模型大约能得到60mAP的分数。
针对数据干扰做的改进是整个赛道任务和核心提分点,其中中值滤波去椒盐噪声能提升大约10mAP,可以说只有当AI选手发现发现并攻克数据中的难点才有机会获得有效的分数(mAP分数需要大于70,否则最终成绩为0)。
03
隐藏赛道
在隐藏赛道中,AI选手需要完成两个验证码识别的程序,分别是简单验证码(下图上)和复杂验证码(下图下);
其中,简单验证码需要识别出准确的数字序列,复杂验证码需要预测图像旋转的角度。在测试的时候,测试图片数量未知,需要准确率达到%才能通过,且给与选手的反馈只有通过/不通过两种。
简单验证码:
通过分析了简单验证码的图片,发现所有背景区域的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.攻防赛道每0分与AI赛道每6.67mAP大约等价,C区和D区的一血能给带来巨大的优势(若都拿到可累积几乎20的mAP优势,了解目标检测的同学应该知道这是一个什么概念);
4.C区不仅可以带来巨大的得分,而且可以提前开启隐藏赛道;
可以看出,C区和D区才是A-tech的核心提分点,率先攻克C区解锁隐藏赛道可以给队伍带来非常大的优势。
回顾整个比赛过程,我们战队印象最深的主要有下面三点:
1、两位攻防选手拿下C区是我们队伍策略安排上一个重要的转折点,通过分析了隐藏赛道的分值以及AI模型的提分潜力,我们决定暂时放弃AI调参,全力抢D区一血,把领先优势把握住,最后我们也达到了自己的预期;
2、隐藏赛道验证码识别题目的难度趋势远远大于上面所描述的那样,出题人要我们模拟的其实是一个真实环境下的攻击行为。对于我们参赛选手来说,唯一知道的信息是运行平台为windows,具体的操作系统版本、运行资源限制、测试图片数量、测试准确率我们全都不知道。我们每次提交的结果,只会收到“通过”或者“不通过”两种反馈。“不通过”可能是因为没运行成功,或者是运行成功但准确率没达到%。在盲调试了多次之后,才摸清楚运行平台为windows7,然后现场装虚拟机系统,重新打包提交文件。我们队伍总共花了约9个小时才解决了两个验证码题目,远远超出了我们的预期时间;
3、我本场比赛唯一不足的地方是对数据的预判出现了偏差。我猜测data_2会有剩余的三个类,且会在第36小时发布(实际为第39小时)。我根据图片数量以及剩余时间,预期最终的模型大约能训练30个epoch,因此我们队伍之后都是以30个epoch为单位进行AI模型调参的,而这个epoch数量远低于模型需要的个epoch。当data_2公布后,我们发现并没有我们最后三个类,而剩余的时间仅仅足够重新训练大约60个epoch。最终以AI模型惜败结束了比赛。
特别鸣谢
十分感谢何立人、周东旭,两位攻防大佬给我们积累了足够强大的分数优势;感谢钱贝贝、辛冠希两位AI队友在模型调参、平台部署上提供了强大的技术支援。同时也感谢奶茶姐何淑婷在赛后提供的方案分享。
最后,希望这比赛越办越好,以后有机会还来呀。
A-tech科技精英赛导师点评
“CLS战队针对验证码识别问题,对验证码图片进行了初步分析,并发现了一些规律,比如背景部分的像素值均为[,,]等。
另外针对复杂验证码图片,发现图片的旋转角度只有8个值,考虑将旋转角度预测转化为分类问题。最后再用ResNet18进行训练和测试,从方法上看有一定的创新性。”
—中国科学院计算技术研究所副研究员庄福振
“CLS战队在攻防小组与AI小组之间的配合是很密切的,我们注意到攻防选手和AI选手互动较多,队伍内部气氛融洽、活跃,有很多讨论。
在赛场和导师交流的环节中,战队成员也都提出了很多很好的问题。特别是AI选手,上来不急于动手,而是先仔细观察数据,能够发现数据中预设的陷阱,并提出相应的解决方案,这也是他们开始在识别准确度上领先的原因。
之后AI选手为攻防选手验证码识别提供算法上的帮助,使得攻防比分上与其它队伍明显拉开差距。
尽管AI选手在AI赛道的表现上最终未能拔得头筹,整个团队的比分在A榜一直保持领先优势直至比赛结束,这正说明紧密有效的团队合作会使团队取得更好的成绩。”
???????????????—北京大学信息科学技术学院教授王亦洲
???????????????点击收看《燃烧吧!天才程序员》完整版节目预览时标签不可点收录于话题#个上一篇下一篇