人脸对抗样本生成策略

人脸对抗样本生成策略

  1. 攻击前的数据预处理
  2. 攻击模型选择
  3. 攻击方法选择

1. face recognize 的流程 识别过程

一般流程是,先检测 后识别 。检测部分现在商用的moel 加入了活体检测。这个检测主要是针对于五官部分的。
正常传统的 人脸识别过程 face detection ,face alignment(没有理解这部分的作用),face recognize(进行特征提取),后面接的就是数据库查询,对比,相似度最高的那个即为那个人。

1. face detection

  人脸检测,常用的是2015年的mtcnn 工业界主要使用的是这个。
获取的是 人脸面部的五个点坐标,两个眼睛、鼻子、左右嘴唇,五个点 。然后进行透视变化 , 人脸检测中一般是将 人脸由侧脸或者其他姿态的变为正脸 进行train之前就已经变化完
  lfw 数据集的size为250*250 大小,model 的输入尺度一般 112*112 或者112*96 所以在输入train 之前需要对照片进行resize,透视变化后resize或者 透视变化那个矩阵就直接使用那个尺度。
  

2. face recognize

   人脸识别,可以理解为一个分类任务或者是一个特征提取任务。 如果比较两个人是不是同一个人,即val验证 ,这个就是得到人面部的feature map 一般为512维的特征向量 ,通过计算余弦相似度(cosface,arcface)或者 欧式距离(facenet),通过model提取到face 的feature 计算sim。

2. 攻击方法总结 attack

1.基于梯度 fgsm系列

  1. fgsm 单步迭代攻击(最原始)
  2. i-fgsm 更改迭代步数(迭代)
  3. mifgsm 添加动量项 稳定梯度下降的方向(加速下降 但是会陷入局部最优点 特别容易过拟合
  4. nifgsm 使用方差进行调整梯度下降的大小(会增大很多的计算量看个人的需求,牺牲计算资源换取提升)
  5. tifgsm 利用图像的输入不变性 对梯度进行一定的处理(线性或者平滑处理,我理解的就是相当于滤波处理)
  6. difgsm 针对于input 进行变化,传统的输入是固定的,容易过拟合,可以对input 进行resize ,论文源码里面是用过padding 填充黑边(可以使用随机颜色,这样鲁棒性会更强一些
  7. sifgsm 针对于图像进行除以固定的值输入到网络中,si将输入进行变化,中间生成的梯度进行叠加(对输入进行变化

总结下来,基于梯度的攻击,无非两种 一种是想办法对输入进行augement,尽量多样性(di,si),一种是对梯度的处理(mi,ni,ti)。归根到底的想法都是提高 adv-example的鲁棒性。

2.其他攻击方法(不是很熟悉)

  1. PGD,可以理解成ifgsm吧,但是他的初始化有一个随机噪声,所以 pgd 目前还是攻击效果最好的单种攻击方法。
  2. cw,基于优化的方法,看看就好,感觉好像没有什么人使用,如果需要使用时候在仔细研究
  3. deepfool,基于决策边界,模拟边界,想以最小的扰动去攻击model(黑盒无效)
  4. 纯黑盒的就是基于问询的那一系列
  5. One Pixel Attack 这种修改比较少的像素,感觉就很扯

3. 对扰动进行限制,或者对mask进行扰动

如果对 扰动大小进行分类就是 无限制扰动 跟有限制扰动。
无限制扰动在0-255之间,但是一般会 对区域进行限制,会寻找最小的区域或者说固定区域去攻击。这变成最重要的策略是如何选取mask。
有限制扰动,一般会限制扰动大小,这种一般是图像的,不会对区域限制。
扰动不是越大越好,扰动大了,会更加的overfitting ,扰动小了会导致你的attack 的acc 不高,这个需要进行取舍。 归根到底就是去提高对抗样本的迁移性,不要陷入overfitting。

2. face attack

还是对抗攻击那一套,但是就主要是一些trick的使用

  1. 模型的选择问题, 使用模型集成需要使用的(1. 高精度模型(决策边界很明确)跟低精度模型(决策边界需要模糊),因为不通模型的决策边界不通,低精度的model 的鲁棒性更强一些 2. 使用不同数据集训练的model,丰富数据集 模拟真实的场景 3. 使用不用结构的model facenet 使用的是vgg,在找一些resnet 或者其他的model 4. 使用添加了对抗训练的model 这个很重要 对抗训练之后的model 跟没有对抗训练的鲁棒性差别很大)
  2. input 的下采样问题 ,使用torch.nn.upsample() 这样下采样会带有原始的梯度。 下采样有双线性插值跟三线性插值 如果只使用一个线性插值,可能会导致有的点在下采样的时候没有梯度 使用下采样函数将输入的照片resize成model 的输入大小,进行回传梯度
  3. 攻击方法 可以使用集成方法 mi+di +ti +si+ni
  4. 模型集成策略 可以添加一个drop 层 控制选择哪些model 激活,随机激活 这样也可以提高adv-eaxmple 的迁移性
  5. 关于每个模型的权重问题,可以使用 sim 作为权重,优先优化精度不高的,sim比较低的模型使用(1-sim),选择一个优化方向
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值