多媒体安全的大作业中,生成对抗样本时,发现图会变灰:
检查代码:(BIM攻击关键在于最后一句的(-1,1)。
# BIM攻击 for_inrange(self.num_iters): adv_img.stop_gradient = False# 确保adv_img可以计算梯度 # 前向传播 outputs = self.model(adv_img) # 计算损失 loss = self.criterion(outputs, tensor_label) # 计算梯度 loss.backward() # 根据梯度符号更新图像 grad = paddle.to_tensor(adv_img.grad) grad = paddle.sign(grad) # 使用alpha更新图像 adv_img = adv_img.detach() + self.alpha * grad # 将扰动裁剪到epsilon范围内 eta = paddle.clip(adv_img - tensor_img, -self.epsilon, self.epsilon) # 将扰动后的图像裁剪到有效范围 adv_img = paddle.clip(tensor_img + eta, -1, 1)
一开始是(0,1),导致图像的像素值只能在127.5及以上,导致图像变灰
像素值恢复: (normalized_pixel + 1 )*127.5