本文主要是介绍对抗攻击笔记01:李宏毅对抗攻击视频课p2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 正常training是要使得f(x)的值与真实值y-true越接近越好
- Non-targeted Attack是要使得f(x)的值与y-true越远越好
- Targeted Attack目标是要让f(x)与某一错误分类y-false越近越好
- 在添加攻击噪声的同时要使得图像与原图越接近越好(肉眼不被发现)小于e
- 定义两张图片之间的差异使用l0范数,l2范数和l∞范数 来表示图像扰动的大小
- L0范数:表示非0元素的个数,对抗样本中表示扰动的非0元素的个数
- L2范数:表示各元素的平方和再开方,对抗样本中表示扰动的各元素的平方和再开平方根;针对图像数据,L2范数越小表示对抗样本人眼越难识别;
- L∞范数:表示各元素的绝对值的最大值,对抗样本中表示扰动的各元素的最大值;(L∞范数更符合人眼对图片差异的感觉)
计算对抗样本中范数的代码实现
#输入格式示例为:[None,224,244,3] 归一化后的数据
def show_d(img,img_adv,show=True):#(224*224*3)size=(img.shape[0])*(img.shape[1])*(img.shape[2])*(img.shape[3])print('Image Size {} Shape {}'.format(size,img.shape) )#计算该变量deta=img[0] - img_adv[0]#计算绝对量_l0 = len(np.where(np.abs(deta)>0.0)[0]) #0范数,扰动非0元素的个数,表示对抗样本修改原始图像的像素点数_l1 = np.sum(np.abs(deta)) #1范数,各元素的绝对值之和_l2 = np.linalg.norm(deta) #2范数,平方和再开方,通常用2范数来衡量扰动的程度_linf = np.max(np.abs(deta)) #无穷范数,各元素的绝对值的最大值,表示扰动的最大值#计算相对量l0=int(_l0*99/size)+1l1 = int(99*np.sum(np.abs(img[0] - img_adv[0])) / np.sum(np.abs(img[0]))) + 1#l2 = int(99*np.linalg.norm(img[0] - img_adv[0]) / np.linalg.norm(img[0])) + 1 l2=int(99*_l2 / np.linalg.norm(img[0])) + 1#linf = int(99*np.max(np.abs(img[0] - img_adv[0])) / 255) + 1linf = int(99*_linf / 255) + 1print('Noise L_0 norm: 改变的像素点数:{},占比: {}%'.format(_l0,l0) )print('Noise L_2 norm: {} {}%'.format(_l2,l2) )print('Noise L_inf norm: {} {}%'.format(_linf,linf) )if show:plt.figure()plt.subplot(131)plt.title('Original')plt.imshow(img[0])plt.axis('off')plt.subplot(132)plt.title('Adversarial')plt.imshow(img_adv[0])plt.axis('off')plt.subplot(133)plt.title('Adversarial-Original')difference = img_adv - imgdifference=difference / abs(difference).max()/2.0+0.5plt.imshow(difference[0],cmap=plt.cm.gray)plt.axis('off')plt.tight_layout()plt.show()return (l0,l2,linf)
测试
if __name__ == '__main__':ori=np.arange(27).reshape(3,3,3)print(ori)adv=np.zeros(shape=[3,3,3])+oriadv[0][0][0]=2print(adv)ori=np.expand_dims(ori,axis=0)adv=np.expand_dims(adv,axis=0)show_d(ori/255.,adv/255.)
这篇关于对抗攻击笔记01:李宏毅对抗攻击视频课p2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!