|
|
@@ -15,20 +15,20 @@ |
|
|
|
import os |
|
|
|
import re |
|
|
|
import numpy as np |
|
|
|
import matplotlib.image as mp |
|
|
|
import dlib |
|
|
|
import face_recognition as fr |
|
|
|
import face_recognition_models as frm |
|
|
|
from PIL import Image, ImageDraw |
|
|
|
import mindspore |
|
|
|
import mindspore.dataset.vision.py_transforms as P |
|
|
|
from mindspore.dataset.vision.py_transforms import ToPIL as ToPILImage |
|
|
|
from mindspore import Parameter, ops, nn, Tensor |
|
|
|
from mindspore.dataset.vision.py_transforms import ToTensor |
|
|
|
import mindspore.dataset.vision.py_transforms as P |
|
|
|
from loss_design import TrainOneStepCell, MyWithLossCell, FaceLossTargeTattack, FaceLossNoTargetAttack |
|
|
|
import dlib |
|
|
|
import matplotlib.image as mp |
|
|
|
import face_recognition as fr |
|
|
|
import face_recognition_models as frm |
|
|
|
from PIL import Image, ImageDraw |
|
|
|
from loss_design import MyTrainOneStepCell, MyWithLossCell, FaceLossTargetAttack, FaceLossNoTargetAttack |
|
|
|
from FaceRecognition.eval import get_net |
|
|
|
|
|
|
|
class Attack(object): |
|
|
|
class FaceAdversarialAttack(object): |
|
|
|
""" |
|
|
|
Class used to create adversarial facial recognition attacks |
|
|
|
""" |
|
|
@@ -78,10 +78,10 @@ class Attack(object): |
|
|
|
if attack_method == "non-target attack": |
|
|
|
LOSS = FaceLossNoTargetAttack(self.target_emb) |
|
|
|
if attack_method == "target_attack": |
|
|
|
LOSS = FaceLossTargeTattack(self.target_emb) |
|
|
|
LOSS = FaceLossTargetAttack(self.target_emb) |
|
|
|
|
|
|
|
net_with_criterion = MyWithLossCell(self.resnet, LOSS, self.input_tensor) |
|
|
|
train_net = TrainOneStepCell(net_with_criterion, self.opt) |
|
|
|
train_net = MyTrainOneStepCell(net_with_criterion, self.opt) |
|
|
|
|
|
|
|
for i in range(2000): |
|
|
|
|
|
|
@@ -133,28 +133,6 @@ class Attack(object): |
|
|
|
print("target_confidence:", self.target_emb.asnumpy()[0][target]) |
|
|
|
print("input: %d, target: %d, adversarial: %d" % (input, target, adversarial)) |
|
|
|
|
|
|
|
def test1(self, adversarial_tensor): |
|
|
|
self.adversarial_emb = self.resnet( |
|
|
|
self.expand_dims((adversarial_tensor - self.MEAN[:, None, None]) / self.STD[:, None, None], 0)) |
|
|
|
self.input_emb = self.resnet(self.expand_dims(self.input_tensor, 0)) |
|
|
|
self.target_emb = self.resnet(self.expand_dims(self.target_tensor, 0)) |
|
|
|
|
|
|
|
adversarial = np.argmax(self.adversarial_emb.asnumpy()) |
|
|
|
target = np.argmax(self.target_emb.asnumpy()) |
|
|
|
input = np.argmax(self.input_emb.asnumpy()) |
|
|
|
|
|
|
|
print("input:", input) |
|
|
|
print("input_confidence:", self.input_emb.asnumpy()[0][input]) |
|
|
|
print("================================") |
|
|
|
print("adversarial:", adversarial) |
|
|
|
print("adversarial_confidence:", self.adversarial_emb.asnumpy()[0][adversarial]) |
|
|
|
print("Confidence changes for input:", self.adversarial_emb.asnumpy()[0][input]) |
|
|
|
print("================================") |
|
|
|
print("target:", target) |
|
|
|
print("target_confidence:", self.target_emb.asnumpy()[0][target]) |
|
|
|
print("input:%d, target:%d, adversarial:%d" % (input, target, adversarial)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _reverse_norm(self, image_tensor): |
|
|
|
""" |
|
|
|