代码
基于MindSpore框架对人脸识别模型的数字、物理对抗攻击

基于MindSpore框架对人脸识别模型的数字、物理对抗攻击

基于MindSpore框架对人脸识别模型的数字、物理对抗攻击

作者:李明俊昇思MindSpore开发者

目录

1 概述

2 背景知识

2.1 MindSpore简介

2.2 人脸识别技术

2.3人脸识别对抗攻击

3 实施方案及过程

4.总结

1 概述

本案例主要介绍了基于MindSpore框架对人脸识别模型的数字、物理对抗攻击,通过生成对抗口罩,使人脸佩戴后实现有目标攻击和非目标攻击。

2 背景知识

2.1 MindSpore简介

MindSpore是端边云全场景按需协同的华为自研AI框架,提供全场景统一API,为全场景AI的模型开发、模型运行、模型部署提供端到端能力。

MindSpore采用端-边-云按需协作分布式架构、微分原生编程新范式以及AI Native新执行模式,实现更好的资源效率、安全可信,同时降低行业AI开发门槛、释放昇腾芯片算力,助力普惠AI。

2.2 人脸识别技术

人脸识别已经成为了计算机视觉和生物识别领域被研究最多的主题之一。基于人工设计的特征和传统机器学习技术的传统方法近来已被使用非常大型的数据集训练的深度神经网络取代。

Facenet谷歌人脸识别算法,发表于 CVPR 2015,利用相同人脸在不同角度等姿态的照片下有高内聚性,不同人脸有低耦合性。通过 CNN 将人脸映射到欧式空间的特征向量上,实质上:不同图片人脸特征的距离较大;通过相同个体的人脸的距离,总是小于不同个体的人脸这一先验知识训练网络。

DeepFace是FaceBook提出来的,DeepFace采用了基于检测点的人脸检测方法。在LFW数据集中进行人脸识别中取得了97.35%的好成绩,该成绩相对于传统方法中依靠人工显式的提取特征,再进行分类的method,识别准确性获得明显提高,再次证实了CNN在特征提取方面的威力。目前Deepface已成为了一个用于 python 的轻量级人脸识别和人脸属性分析框架。是一个混合人脸识别框架,包含最先进的模型。

尽管近年来人脸识别种类繁多且技术进步,但人脸检测技术仍然存在一些固有的挑战。

姿势变化是主要问题之一,因为大多数人脸识别方法依赖于正面图像。不同的角度都有可能导致人脸识别系统的误判。

光照。图像中的光照变化是人脸识别的一个重要因素。像素中的颜色强度可能会因光照条件而有很大差异。最大的问题是,与另一个主题相比,同一主题的两张不同光照的图像可能会显示出更多的差异。为了解决这个问题,一些识别方法尝试对光照模板进行建模,以构建光照不变算法。这些方法的目标是使形状和纹理独立于光线变化。

遮挡是另一个具有挑战性的人脸识别问题。当人脸的一个或几个部分被遮挡时,就无法拍摄输入图像。这可能是由于配饰(眼镜、面具等)、胡须或刘海造成的。这会严重影响人脸识别系统的分类过程。

2.3 人脸识别对抗攻击

《Accessorize to a Crime: Real and Stealthy Attacks on State-of-the-Art Face Recognition》论文主要贡献是该方法通过打印一副眼镜框来实现物理攻击。当攻击者佩戴其图像,眼镜允许她逃避被识别或冒充另一个人。该研究侧重于白盒人脸识别系统,也展示了如何在黑盒场景中使用类似的技术,以及避免人脸检测。

《AdvHat: Real-World Adversarial Attack on ArcFace Face ID System》论文主要贡献是生成了对抗性贴纸并将其贴在帽子,使用帽子上的贴纸对最先进的公共面部ID系统进行了真实世界的对抗性攻击。这种攻击很容易复制。只需打印彩色矩形即可。在攻击过程中还可以将贴纸投影到图像上,使其具有真实感。

《VLA: A Practical Visible Light-based Attack on Face Recognition Systems in Physical World》论文主要贡献是一种利用可见光对黑盒人脸识别系统的新型攻击。在VLA中,基于可见光的对抗性扰动被制作并投射到人脸上,这使得对抗者可以进行有针对性的或无针对性的攻击。VLA将对抗性扰动分解为扰动帧和隐藏帧,前者在人脸图像上添加修改,改变当前用户的特征,而后者则使这些修改对人眼来说不显眼。该方法不需要创建可穿戴的人工制品,提供了一种更舒适的替代设置来直接对 FR 模型进行物理攻击。

3 实施方案及过程

针对现有技术的调研,我们给出的实施具体方案是基于MindSpore框架,通过生成对抗口罩,使人脸佩戴后实现有目标攻击和非目标攻击。

实施流程简介:

首先介绍一下达到对抗攻击的具体训练步骤。这里以有目标攻击为例。首先选取两种图片一张做为输入图片,一张做为目标图片,然后会利用dilb库对图像做一个预处理,包括旋转,提取人脸。

然后根据提取人脸的特征点,初始化一个口罩来,将口罩与输入图片结合形成初始化的对抗图片。利用对抗图片、输入图片、目标图片输入到人脸识别模型后得到的输出置信度向量分布,优化的过程就是通过优化口罩的像素值,使得对抗图片的置信度向量接近目标图片的置信度向量,并远离输入图片的置信度向量。最后达到对抗图片的输出标签与目标图片的输出标签一致。

口罩生成:

利用Dlib库68点面部标志检测,利用脸颊、鼻尖、鼻梁特征点绘制一个口罩区域。

具体代码如下:

人脸识别模型选择:

在华为官方网站选取了FaceRecognition人脸识别模型,该模型基于Resnet的人脸识别网络。使用大约470万张人脸图像作为训练数据集,110万张人脸图像作为评估数据集。

MindSpore代码撰写:

第一次接触mindspore框架,很感谢官网提高的教程和文档,大大的提高了初学者的开发速度。在编写代码中也是查看了官网的自定义相关的介绍,包括自定义损失函数,自定义优化器,自定义训练过程。

这里给出了自定义的有目标攻击loss函数,主要通过对抗图片输出的置信度向量和目标图片输出的置信度向量进行负的余弦相似度计算,通过优化对抗口罩的像素,使得计算的负的余弦相似度值越小,达到有目标攻击的效果。

实验结果:

这里给出了有目标攻击的实验图片。

简单说明一下,无目标攻击就是实现是输入人脸佩戴上对抗口罩在人脸识别模型下的错误分类。有目标攻击就是实现输入人脸佩戴上对抗口罩在人脸识别模型下错误分类到目标图片上。可以看到具体的一个实验结果。

首先无目标攻击实现了从正确标签60到错误标签251的偏移。标签270的置信度从25.16下降到了9.52。然后是有目标攻击的实验结果,可以看到输入人脸佩戴上对抗口罩使得人脸识别模型误分类到目标标签345上。从输入图片在345标签的置信度0.95增长到了10.96,效果显著。

4 总结

首先感谢MindSpore社区提供的平台,感谢任务期间导师给予的帮助。从接到任务,到调研工作,到探讨实施方案,到每次进度会和导师们和同学们一起相互交流,在这个过程中受益匪浅。在完成任务,准备PR提交时,代码规范、注释等细节问题又让我学到很多。既要写好代码,也要写好代码。到提交一个PR到社区,最后被采纳合并到主干,被更多的人使用,会非常开心和有成就感。

MindSpore官方资料

官方QQ群 : 486831414

官网https://www.mindspore.cn/

Gitee : https : //gitee.com/mindspore/mindspore

GitHub : https://github.com/mindspore-ai/mindspore

论坛https://bbs.huaweicloud.com/forum/forum-1076-1.html