ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OPPO AI安全竞赛-人脸识别攻防

2022-02-03 19:03:45  阅读:372  来源: 互联网

标签:adv loss 人脸识别 AI image IR model com OPPO


第一次竞赛-OPPO AI安全竞赛-人脸识别攻防

1. 概述

本次比赛将会聚焦于人脸识别场景中的反AI的对抗攻击。为了模拟真实的人脸识别场景并增加比赛的难度,我们将在后台使用防御性较好的一组模型作为黑盒模型。选手在不清楚模型细节的前提之下,构造有目标或无目标的对抗样本

从比赛内容可以看出来是关于人脸模型的黑盒攻击,而由于无法使用基于查询的方式,所以只能从基于迁移的角度构造人脸对抗样本。

本次比赛结果:总共2349个队伍,我们团队初赛10,复赛14,有那么一丝遗憾没有进入决赛…

2.方法总结

模型相关

​ 我们采用集成模型的方式训练人脸对抗样本,模型结构包括FaceNet, MobileFaceNet, IR_101,IR_152, IR_50, IRSE_50等,IRSE_50是在IR_50的基础上了SE(Squeeze-and-Excitation),可以理解为加了一个Attention。

​ 因为是黑盒攻击,所以采用Backbone提取人脸特征,用于分类。

模型名称简介参考链接(code)
FacenetInception Resnet V1作为Backbonehttps://github.com/timesler/facenet-pytorch/blob/master/models/inception_resnet_v1.py
MobileFaceNetmobilenet替换了facenet的inception,进行提取人脸特征https://github.com/JDAI-CV/FaceX-Zoo/blob/main/backbone/MobileFaceNets.py
IR_101ResNet101作为BackBonehttps://gitee.com/heronwang/face.evoLVe.PyTorch/blob/master/backbone/model_irse.py
IR_152ResNet152作为BackBonehttps://gitee.com/heronwang/face.evoLVe.PyTorch/blob/master/backbone/model_irse.py
IR_50ResNet50作为BackBonehttps://gitee.com/heronwang/face.evoLVe.PyTorch/blob/master/backbone/model_irse.py

针对不同的model,我们选择加载在不同训练集上训练的权重,facenet,mobileFaceNet,irse50,IR_152加载在LFW上训练参数(https://drive.google.com/drive/folders/1G_2R_7XQhzzMQdEhph0ZI7dV4sGYjjzu),ir50_ms1m,IR_50_LFW_AdvTrain,IR_101,分别加载baseline中model参数。具体加载方式可见run.py中set_model_info方法。

我们已为所需加载的model_list设置了默认参数,每次运行时会首先加载上述7个model。

解决方案和算法介绍

针对本次比赛赛题,由于每日上传次数的限制,我们从基于迁移性的人脸对抗攻击出发,以FGSM为基本方法,结合目前提高攻击迁移性方法 momentum(MI)input-diversityDI),ensemble-modeltranslation-InvariantTI),Patch-wise(PI)Staircase Sign **Method(SSM)**等(这些方法将在后面具体介绍,包括公式,paper,作者等)。

​ 算法流程:

  1. 输入输出阶段

    ​ 我们通过将攻击图像adv_image和face pair的比对图像com_image(题目中提及到的样本I构建的face pair的比对)输入model,在输入阶段我们参考了 【CVPR2019】Improving transferability of adversarial examples with input diversity(Cihang Xie, Zhishuai Zhang, Yuyin Zhou, Song Bai, Jianyu Wang, Zhou Ren, Alan L. Yuille),对adv_image和com_image做同样的resize和padding后使用interpolate方法将图像调整为model输入尺寸,然后输入model,最后输出[1,512]的特征值。

  2. LOSS及权重

    ​ 使用余弦相似度计算adv_image的特征与com_image的特征距离作为攻击强度目标(攻击损失-adv_loss),另一方面使用MSSSIM计算adv_image与ori_image的结构相似度(质量损失-struct_loss)将这两部分作为total loss用于更新adv_image。

    我们将迭代次数设置为40次,在每次迭代后根据当前的adv_loss和struct_loss更新不同损失权重:

  3. 梯度计算

    ​ 根据loss可以得到gradient,第一步使用了动量的方法,参考了 【CVPR2018】Boosting adversarial attacks with momentum(Yinpeng Dong, Fangzhou Liao, Tianyu Pang, Hang Su, Jun Zhu, Xiaolin Hu, Jianguo Li)我们将此次计算得到的gradient与上次迭代的gradient结合,

    然后第二步参考了 【CVPR2019】Evading Defenses to Transferable Adversarial Examples by Translation-Invariant Attacks(Yinpeng Dong, Tianyu Pang, Hang Su, Jun Zhu),将梯度做一次平移转换(考虑CNN的平移不变性)

    第三步参考 【ECCV2020】Patch-wise Attack for Fooling Deep Neural Network(Lianli Gao,Qilong Zhang,Jingkuan Song,Xianglong Liu,Heng Tao Shen),这个方法是将当前区域干扰超出设置值的部分映射到周围区域(减少直接clip掉的数值造成的信息丢失),同时这部分参考Staircase Sign Method for Boosting Adversarial Attacks(Lianli Gao, Qilong Zhang, Xiaosu Zhu, Jingkuan Song Heng Tao Shen)将sign值做一个百分值计算,这一步的作用是不仅仅考虑gradient的方向,同时考虑数值的影响。(计算参数直接参考文章中参数设置)

  4. adv_image选取

    我们最开始设置的干扰大小的是8,MSSSIM是0.96。迭代40次得到的adv_image,我们使用Face++的人脸比对API验证当前adv_image与com_image的相似程度,满足阙值后保存为待提交数据集。

3. 结语

第一次参加AI与安全相关竞赛,后续还有发表其他比赛的参赛分享,感兴趣的可以关注一波哦,也可私聊我探讨比赛思路。

标签:adv,loss,人脸识别,AI,image,IR,model,com,OPPO
来源: https://blog.csdn.net/WangHY_XCJ/article/details/122777770

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有