|
|
@@ -20,7 +20,7 @@ import mindspore.dataset.vision.py_transforms as P |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TrainOneStepCell(nn.Cell): |
|
|
|
class MyTrainOneStepCell(nn.TrainOneStepCell): |
|
|
|
""" |
|
|
|
Encapsulation class of network training. |
|
|
|
|
|
|
@@ -34,11 +34,7 @@ class TrainOneStepCell(nn.Cell): |
|
|
|
""" |
|
|
|
|
|
|
|
def __init__(self, network, optimizer, sens=1.0): |
|
|
|
super(TrainOneStepCell, self).__init__(auto_prefix=False) |
|
|
|
self.network = network |
|
|
|
self.network.set_grad() |
|
|
|
self.optimizer = optimizer |
|
|
|
self.weights = self.optimizer.parameters |
|
|
|
super(MyTrainOneStepCell, self).__init__(network, optimizer,sens) |
|
|
|
self.grad = ops.composite.GradOperation(get_all=True, sens_param=False) |
|
|
|
|
|
|
|
def construct(self, *inputs): |
|
|
@@ -47,6 +43,8 @@ class TrainOneStepCell(nn.Cell): |
|
|
|
grads = self.grad(self.network)(*inputs) |
|
|
|
self.optimizer(grads) |
|
|
|
return grads, loss |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -78,7 +76,7 @@ class MyWithLossCell(nn.Cell): |
|
|
|
return self.net |
|
|
|
|
|
|
|
|
|
|
|
class FaceLossTargeTattack(nn.Cell): |
|
|
|
class FaceLossTargetAttack(nn.Cell): |
|
|
|
"""The loss function of the target attack""" |
|
|
|
|
|
|
|
def __init__(self, target_emb): |
|
|
@@ -96,20 +94,6 @@ class FaceLossTargeTattack(nn.Cell): |
|
|
|
self.reduce_mean = ops.ReduceMean() |
|
|
|
|
|
|
|
def construct(self, adversarial_emb, input_emb, mask_tensor): |
|
|
|
#像素平滑 |
|
|
|
# vert_diff = mask_tensor[:, 1:] - mask_tensor[:, :-1] |
|
|
|
# hor_diff = mask_tensor[:, :, 1:] - mask_tensor[:, :, :-1] |
|
|
|
# vert_diff_sq = self.pow(vert_diff, 2) |
|
|
|
# hor_diff_sq = self.pow(hor_diff, 2) |
|
|
|
# A = self.zeroslike(Tensor(self.uniformreal((3, 1, 112)))) |
|
|
|
# B = self.zeroslike(Tensor(self.uniformreal((3, 112, 1)))) |
|
|
|
# vert_pad = self.concat_op1((vert_diff_sq, A)) |
|
|
|
# hor_pad = self.concat_op2((hor_diff_sq, B)) |
|
|
|
# tv_sum = vert_pad + hor_pad |
|
|
|
# tv = ops.functional.sqrt(tv_sum + 1e-5) |
|
|
|
# tv_final_sum = self.sum(tv) |
|
|
|
# tv_loss = (1e-4) * tv_final_sum |
|
|
|
# print("tv_loss:",tv_loss) |
|
|
|
prod_sum = self.reduce_sum(adversarial_emb * self.target_emb, (1,)) |
|
|
|
square1 = self.reduce_sum(ops.functional.square(adversarial_emb), (1,)) |
|
|
|
square2 = self.reduce_sum(ops.functional.square(self.target_emb), (1,)) |
|
|
@@ -137,21 +121,6 @@ class FaceLossNoTargetAttack(nn.Cell): |
|
|
|
self.reduce_mean = ops.ReduceMean() |
|
|
|
|
|
|
|
def construct(self, adversarial_emb, input_emb, mask_tensor): |
|
|
|
# 像素平滑 |
|
|
|
# vert_diff = mask_tensor[:, 1:] - mask_tensor[:, :-1] # |
|
|
|
# hor_diff = mask_tensor[:, :, 1:] - mask_tensor[:, :, :-1] |
|
|
|
# vert_diff_sq = self.pow(vert_diff, 2) |
|
|
|
# hor_diff_sq = self.pow(hor_diff, 2) |
|
|
|
# A = self.zeroslike(Tensor(self.uniformreal((3, 1, 112)))) # |
|
|
|
# B = self.zeroslike(Tensor(self.uniformreal((3, 112, 1)))) |
|
|
|
# vert_pad = self.concat_op1((vert_diff_sq, A)) |
|
|
|
# hor_pad = self.concat_op2((hor_diff_sq, B)) |
|
|
|
# tv_sum = vert_pad + hor_pad |
|
|
|
# tv = ops.functional.sqrt(tv_sum + 1e-5) |
|
|
|
# tv_final_sum = self.sum(tv) |
|
|
|
# tv_loss = (1e-4) * tv_final_sum |
|
|
|
# print("tv_loss:",tv_loss) |
|
|
|
|
|
|
|
prod_sum = self.reduce_sum(adversarial_emb * input_emb, (1,)) |
|
|
|
square1 = self.reduce_sum(ops.functional.square(adversarial_emb), (1,)) |
|
|
|
square2 = self.reduce_sum(ops.functional.square(input_emb), (1,)) |
|
|
|