Merge pull request !109 from pkuliuliu/mastertags/v1.0.0
@@ -28,7 +28,7 @@ import numpy as np | |||||
from mindspore.train import Model | from mindspore.train import Model | ||||
from mindspore.train.serialization import load_param_into_net, load_checkpoint | from mindspore.train.serialization import load_param_into_net, load_checkpoint | ||||
import mindspore.nn as nn | import mindspore.nn as nn | ||||
from mindarmour.diff_privacy.evaluation.membership_inference import MembershipInference | |||||
from mindarmour.privacy.evaluation import MembershipInference | |||||
from mindarmour.utils import LogUtil | from mindarmour.utils import LogUtil | ||||
logging = LogUtil.get_instance() | logging = LogUtil.get_instance() | ||||
logging.set_level(20) | logging.set_level(20) | ||||
@@ -29,10 +29,10 @@ import mindspore.dataset.transforms.c_transforms as C | |||||
from mindspore.dataset.transforms.vision import Inter | from mindspore.dataset.transforms.vision import Inter | ||||
import mindspore.common.dtype as mstype | import mindspore.common.dtype as mstype | ||||
from mindarmour.diff_privacy import DPModel | |||||
from mindarmour.diff_privacy import PrivacyMonitorFactory | |||||
from mindarmour.diff_privacy import NoiseMechanismsFactory | |||||
from mindarmour.diff_privacy import ClipMechanismsFactory | |||||
from mindarmour.privacy.diff_privacy import DPModel | |||||
from mindarmour.privacy.diff_privacy import PrivacyMonitorFactory | |||||
from mindarmour.privacy.diff_privacy import NoiseMechanismsFactory | |||||
from mindarmour.privacy.diff_privacy import ClipMechanismsFactory | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from lenet5_config import mnist_cfg as cfg | from lenet5_config import mnist_cfg as cfg | ||||
@@ -29,9 +29,9 @@ import mindspore.dataset.transforms.c_transforms as C | |||||
from mindspore.dataset.transforms.vision import Inter | from mindspore.dataset.transforms.vision import Inter | ||||
import mindspore.common.dtype as mstype | import mindspore.common.dtype as mstype | ||||
from mindarmour.diff_privacy import DPModel | |||||
from mindarmour.diff_privacy import PrivacyMonitorFactory | |||||
from mindarmour.diff_privacy import NoiseMechanismsFactory | |||||
from mindarmour.privacy.diff_privacy import DPModel | |||||
from mindarmour.privacy.diff_privacy import PrivacyMonitorFactory | |||||
from mindarmour.privacy.diff_privacy import NoiseMechanismsFactory | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from dp_ada_gaussian_config import mnist_cfg as cfg | from dp_ada_gaussian_config import mnist_cfg as cfg | ||||
@@ -29,9 +29,9 @@ import mindspore.dataset.transforms.c_transforms as C | |||||
from mindspore.dataset.transforms.vision import Inter | from mindspore.dataset.transforms.vision import Inter | ||||
import mindspore.common.dtype as mstype | import mindspore.common.dtype as mstype | ||||
from mindarmour.diff_privacy import DPModel | |||||
from mindarmour.diff_privacy import PrivacyMonitorFactory | |||||
from mindarmour.diff_privacy import NoiseMechanismsFactory | |||||
from mindarmour.privacy.diff_privacy import DPModel | |||||
from mindarmour.privacy.diff_privacy import PrivacyMonitorFactory | |||||
from mindarmour.privacy.diff_privacy import NoiseMechanismsFactory | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from dp_ada_sgd_graph_config import mnist_cfg as cfg | from dp_ada_sgd_graph_config import mnist_cfg as cfg | ||||
@@ -29,10 +29,10 @@ import mindspore.dataset.transforms.c_transforms as C | |||||
from mindspore.dataset.transforms.vision import Inter | from mindspore.dataset.transforms.vision import Inter | ||||
import mindspore.common.dtype as mstype | import mindspore.common.dtype as mstype | ||||
from mindarmour.diff_privacy import DPModel | |||||
from mindarmour.diff_privacy import PrivacyMonitorFactory | |||||
from mindarmour.diff_privacy import DPOptimizerClassFactory | |||||
from mindarmour.diff_privacy import ClipMechanismsFactory | |||||
from mindarmour.privacy.diff_privacy import DPModel | |||||
from mindarmour.privacy.diff_privacy import PrivacyMonitorFactory | |||||
from mindarmour.privacy.diff_privacy import DPOptimizerClassFactory | |||||
from mindarmour.privacy.diff_privacy import ClipMechanismsFactory | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from lenet5_config import mnist_cfg as cfg | from lenet5_config import mnist_cfg as cfg | ||||
@@ -20,8 +20,8 @@ from mindspore.nn import SoftmaxCrossEntropyWithLogits | |||||
from mindspore.train.serialization import load_checkpoint, load_param_into_net | from mindspore.train.serialization import load_checkpoint, load_param_into_net | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.gradient_method import FastGradientSignMethod | |||||
from mindarmour.fuzzing.model_coverage_metrics import ModelCoverageMetrics | |||||
from mindarmour.adv_robustness.attacks import FastGradientSignMethod | |||||
from mindarmour.fuzz_testing import ModelCoverageMetrics | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
sys.path.append("..") | sys.path.append("..") | ||||
@@ -19,8 +19,8 @@ from mindspore import context | |||||
from mindspore.train.serialization import load_checkpoint, load_param_into_net | from mindspore.train.serialization import load_checkpoint, load_param_into_net | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.fuzzing.fuzzing import Fuzzer | |||||
from mindarmour.fuzzing.model_coverage_metrics import ModelCoverageMetrics | |||||
from mindarmour.fuzz_testing import Fuzzer | |||||
from mindarmour.fuzz_testing import ModelCoverageMetrics | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
sys.path.append("..") | sys.path.append("..") | ||||
@@ -22,8 +22,8 @@ from mindspore.train.serialization import load_checkpoint, load_param_into_net | |||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.carlini_wagner import CarliniWagnerL2Attack | |||||
from mindarmour.evaluations.attack_evaluation import AttackEvaluate | |||||
from mindarmour.adv_robustness.attacks import CarliniWagnerL2Attack | |||||
from mindarmour.adv_robustness.evaluations import AttackEvaluate | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
@@ -22,8 +22,8 @@ from mindspore.train.serialization import load_checkpoint, load_param_into_net | |||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.deep_fool import DeepFool | |||||
from mindarmour.evaluations.attack_evaluation import AttackEvaluate | |||||
from mindarmour.adv_robustness.attacks.deep_fool import DeepFool | |||||
from mindarmour.adv_robustness.evaluations import AttackEvaluate | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
@@ -23,8 +23,8 @@ from mindspore.nn import SoftmaxCrossEntropyWithLogits | |||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.gradient_method import FastGradientSignMethod | |||||
from mindarmour.evaluations.attack_evaluation import AttackEvaluate | |||||
from mindarmour.adv_robustness.attacks import FastGradientSignMethod | |||||
from mindarmour.adv_robustness.evaluations import AttackEvaluate | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
@@ -21,9 +21,9 @@ from mindspore.train.serialization import load_checkpoint, load_param_into_net | |||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.attacks.black.genetic_attack import GeneticAttack | |||||
from mindarmour.evaluations.attack_evaluation import AttackEvaluate | |||||
from mindarmour.adv_robustness.attacks import BlackModel | |||||
from mindarmour.adv_robustness.attacks.black.genetic_attack import GeneticAttack | |||||
from mindarmour.adv_robustness.evaluations import AttackEvaluate | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
@@ -19,8 +19,8 @@ from mindspore import context | |||||
from mindspore.train.serialization import load_checkpoint, load_param_into_net | from mindspore.train.serialization import load_checkpoint, load_param_into_net | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.attacks.black.hop_skip_jump_attack import HopSkipJumpAttack | |||||
from mindarmour import BlackModel | |||||
from mindarmour.adv_robustness.attacks import HopSkipJumpAttack | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
sys.path.append("..") | sys.path.append("..") | ||||
@@ -22,8 +22,8 @@ from mindspore.train.serialization import load_checkpoint, load_param_into_net | |||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.jsma import JSMAAttack | |||||
from mindarmour.evaluations.attack_evaluation import AttackEvaluate | |||||
from mindarmour.adv_robustness.attacks import JSMAAttack | |||||
from mindarmour.adv_robustness.evaluations import AttackEvaluate | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
@@ -23,8 +23,8 @@ from mindspore.nn import SoftmaxCrossEntropyWithLogits | |||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.lbfgs import LBFGS | |||||
from mindarmour.evaluations.attack_evaluation import AttackEvaluate | |||||
from mindarmour.adv_robustness.attacks import LBFGS | |||||
from mindarmour.adv_robustness.evaluations import AttackEvaluate | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
@@ -23,9 +23,8 @@ from mindspore.nn import SoftmaxCrossEntropyWithLogits | |||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.iterative_gradient_method import \ | |||||
MomentumDiverseInputIterativeMethod | |||||
from mindarmour.evaluations.attack_evaluation import AttackEvaluate | |||||
from mindarmour.adv_robustness.attacks import MomentumDiverseInputIterativeMethod | |||||
from mindarmour.adv_robustness.evaluations import AttackEvaluate | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
@@ -19,8 +19,8 @@ from mindspore import context | |||||
from mindspore.train.serialization import load_checkpoint, load_param_into_net | from mindspore.train.serialization import load_checkpoint, load_param_into_net | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.attacks.black.natural_evolutionary_strategy import NES | |||||
from mindarmour import BlackModel | |||||
from mindarmour.adv_robustness.attacks import NES | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
sys.path.append("..") | sys.path.append("..") | ||||
@@ -23,8 +23,8 @@ from mindspore.nn import SoftmaxCrossEntropyWithLogits | |||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.iterative_gradient_method import ProjectedGradientDescent | |||||
from mindarmour.evaluations.attack_evaluation import AttackEvaluate | |||||
from mindarmour.adv_robustness.attacks import ProjectedGradientDescent | |||||
from mindarmour.adv_robustness.evaluations import AttackEvaluate | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
@@ -20,9 +20,9 @@ from mindspore.train.serialization import load_checkpoint, load_param_into_net | |||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.attacks.black.pointwise_attack import PointWiseAttack | |||||
from mindarmour.evaluations.attack_evaluation import AttackEvaluate | |||||
from mindarmour import BlackModel | |||||
from mindarmour.adv_robustness.attacks import PointWiseAttack | |||||
from mindarmour.adv_robustness.evaluations import AttackEvaluate | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
sys.path.append("..") | sys.path.append("..") | ||||
@@ -21,9 +21,9 @@ from mindspore.train.serialization import load_checkpoint, load_param_into_net | |||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.attacks.black.pso_attack import PSOAttack | |||||
from mindarmour.evaluations.attack_evaluation import AttackEvaluate | |||||
from mindarmour import BlackModel | |||||
from mindarmour.adv_robustness.attacks.black.pso_attack import PSOAttack | |||||
from mindarmour.adv_robustness.evaluations import AttackEvaluate | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
@@ -20,9 +20,9 @@ from mindspore.train.serialization import load_checkpoint, load_param_into_net | |||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.attacks.black.salt_and_pepper_attack import SaltAndPepperNoiseAttack | |||||
from mindarmour.evaluations.attack_evaluation import AttackEvaluate | |||||
from mindarmour import BlackModel | |||||
from mindarmour.adv_robustness.attacks import SaltAndPepperNoiseAttack | |||||
from mindarmour.adv_robustness.evaluations import AttackEvaluate | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
sys.path.append("..") | sys.path.append("..") | ||||
@@ -23,8 +23,8 @@ from mindspore.nn import SoftmaxCrossEntropyWithLogits | |||||
from mindspore.train import Model | from mindspore.train import Model | ||||
from mindspore.train.callback import LossMonitor | from mindspore.train.callback import LossMonitor | ||||
from mindarmour.attacks import FastGradientSignMethod | |||||
from mindarmour.defenses import NaturalAdversarialDefense | |||||
from mindarmour.adv_robustness.attacks import FastGradientSignMethod | |||||
from mindarmour.adv_robustness.defenses import NaturalAdversarialDefense | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
@@ -28,13 +28,13 @@ from mindspore.train.serialization import load_checkpoint, load_param_into_net | |||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks import FastGradientSignMethod | |||||
from mindarmour.attacks import GeneticAttack | |||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.defenses import NaturalAdversarialDefense | |||||
from mindarmour.detectors.black.similarity_detector import SimilarityDetector | |||||
from mindarmour.evaluations import BlackDefenseEvaluate | |||||
from mindarmour.evaluations import DefenseEvaluate | |||||
from mindarmour.adv_robustness.attacks import FastGradientSignMethod | |||||
from mindarmour.adv_robustness.attacks import GeneticAttack | |||||
from mindarmour.adv_robustness.attacks import BlackModel | |||||
from mindarmour.adv_robustness.defenses import NaturalAdversarialDefense | |||||
from mindarmour.adv_robustness.detectors import SimilarityDetector | |||||
from mindarmour.adv_robustness.evaluations import BlackDefenseEvaluate | |||||
from mindarmour.adv_robustness.evaluations import DefenseEvaluate | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
sys.path.append("..") | sys.path.append("..") | ||||
@@ -23,9 +23,9 @@ from mindspore.train.serialization import load_checkpoint, load_param_into_net | |||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from lenet5_net import LeNet5 | from lenet5_net import LeNet5 | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.attacks.black.pso_attack import PSOAttack | |||||
from mindarmour.detectors.black.similarity_detector import SimilarityDetector | |||||
from mindarmour import BlackModel | |||||
from mindarmour.adv_robustness.attacks.black.pso_attack import PSOAttack | |||||
from mindarmour.adv_robustness.detectors import SimilarityDetector | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
@@ -1,13 +1,19 @@ | |||||
""" | """ | ||||
MindArmour, a tool box of MindSpore to enhance model security and | |||||
trustworthiness against adversarial examples. | |||||
MindArmour, a tool box of MindSpore to enhance model trustworthiness and achieve | |||||
privacy-preserving machine learning. | |||||
""" | """ | ||||
from .attacks import Attack | |||||
from .attacks.black.black_model import BlackModel | |||||
from .defenses.defense import Defense | |||||
from .detectors.detector import Detector | |||||
from .adv_robustness.attacks import Attack | |||||
from .adv_robustness.attacks.black.black_model import BlackModel | |||||
from .adv_robustness.defenses.defense import Defense | |||||
from .adv_robustness.detectors.detector import Detector | |||||
from .fuzz_testing.fuzzing import Fuzzer | |||||
from .privacy.diff_privacy import DPModel | |||||
from .privacy.evaluation.membership_inference import MembershipInference | |||||
__all__ = ['Attack', | __all__ = ['Attack', | ||||
'BlackModel', | 'BlackModel', | ||||
'Detector', | 'Detector', | ||||
'Defense'] | |||||
'Defense', | |||||
'Fuzzer', | |||||
'DPModel', | |||||
'MembershipInference'] |
@@ -0,0 +1,19 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | |||||
Adversarial Robustness. | |||||
This module is a tool box to enhance model security and against adversarial | |||||
examples. | |||||
""" |
@@ -1,3 +1,16 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | """ | ||||
This module includes classical black-box and white-box attack algorithms | This module includes classical black-box and white-box attack algorithms | ||||
in making adversarial examples. | in making adversarial examples. |
@@ -0,0 +1,16 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | |||||
This module is a submodule, which provides some black-box based adversarial method. | |||||
""" |
@@ -17,13 +17,12 @@ Genetic-Attack. | |||||
import numpy as np | import numpy as np | ||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from mindarmour.attacks.attack import Attack | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.utils._check_param import check_numpy_param, check_model, \ | from mindarmour.utils._check_param import check_numpy_param, check_model, \ | ||||
check_pair_numpy_param, check_param_type, check_value_positive, \ | check_pair_numpy_param, check_param_type, check_value_positive, \ | ||||
check_int_positive, check_param_multi_types | check_int_positive, check_param_multi_types | ||||
from ..attack import Attack | |||||
from .black_model import BlackModel | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'GeneticAttack' | TAG = 'GeneticAttack' |
@@ -16,12 +16,13 @@ Hop-skip-jump attack. | |||||
""" | """ | ||||
import numpy as np | import numpy as np | ||||
from mindarmour.attacks.attack import Attack | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.utils._check_param import check_pair_numpy_param, check_model, \ | from mindarmour.utils._check_param import check_pair_numpy_param, check_model, \ | ||||
check_numpy_param, check_int_positive, check_value_positive, \ | check_numpy_param, check_int_positive, check_value_positive, \ | ||||
check_value_non_negative, check_param_type | check_value_non_negative, check_param_type | ||||
from ..attack import Attack | |||||
from .black_model import BlackModel | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'HopSkipJumpAttack' | TAG = 'HopSkipJumpAttack' |
@@ -18,12 +18,11 @@ import time | |||||
import numpy as np | import numpy as np | ||||
from scipy.special import softmax | from scipy.special import softmax | ||||
from mindarmour.attacks.attack import Attack | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.utils._check_param import check_pair_numpy_param, check_model, \ | from mindarmour.utils._check_param import check_pair_numpy_param, check_model, \ | ||||
check_numpy_param, check_int_positive, check_value_positive, check_param_type | check_numpy_param, check_int_positive, check_value_positive, check_param_type | ||||
from ..attack import Attack | |||||
from .black_model import BlackModel | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'NES' | TAG = 'NES' |
@@ -16,13 +16,12 @@ Pointwise-Attack. | |||||
""" | """ | ||||
import numpy as np | import numpy as np | ||||
from mindarmour.attacks.attack import Attack | |||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.attacks.black.salt_and_pepper_attack import \ | |||||
SaltAndPepperNoiseAttack | |||||
from mindarmour.utils._check_param import check_model, check_pair_numpy_param, \ | from mindarmour.utils._check_param import check_model, check_pair_numpy_param, \ | ||||
check_int_positive, check_param_type | check_int_positive, check_param_type | ||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from ..attack import Attack | |||||
from .black_model import BlackModel | |||||
from .salt_and_pepper_attack import SaltAndPepperNoiseAttack | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'PointWiseAttack' | TAG = 'PointWiseAttack' |
@@ -16,13 +16,12 @@ PSO-Attack. | |||||
""" | """ | ||||
import numpy as np | import numpy as np | ||||
from mindarmour.attacks.attack import Attack | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.utils._check_param import check_model, check_pair_numpy_param, \ | from mindarmour.utils._check_param import check_model, check_pair_numpy_param, \ | ||||
check_numpy_param, check_value_positive, check_int_positive, \ | check_numpy_param, check_value_positive, check_int_positive, \ | ||||
check_param_type, check_equal_shape, check_param_multi_types | check_param_type, check_equal_shape, check_param_multi_types | ||||
from ..attack import Attack | |||||
from .black_model import BlackModel | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'PSOAttack' | TAG = 'PSOAttack' |
@@ -18,12 +18,12 @@ import time | |||||
import numpy as np | import numpy as np | ||||
from mindarmour.attacks.attack import Attack | |||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.utils._check_param import check_model, check_pair_numpy_param, \ | from mindarmour.utils._check_param import check_model, check_pair_numpy_param, \ | ||||
check_param_type, check_int_positive, check_param_multi_types | check_param_type, check_int_positive, check_param_multi_types | ||||
from mindarmour.utils._check_param import normalize_value | from mindarmour.utils._check_param import normalize_value | ||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from ..attack import Attack | |||||
from .black_model import BlackModel | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'SaltAndPepperNoise-Attack' | TAG = 'SaltAndPepperNoise-Attack' |
@@ -19,13 +19,12 @@ import numpy as np | |||||
from mindspore import Tensor | from mindspore import Tensor | ||||
from mindspore.nn import Cell | from mindspore.nn import Cell | ||||
from mindarmour.attacks.attack import Attack | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.utils._check_param import check_numpy_param, check_model, \ | from mindarmour.utils._check_param import check_numpy_param, check_model, \ | ||||
check_pair_numpy_param, check_int_positive, check_param_type, \ | check_pair_numpy_param, check_int_positive, check_param_type, \ | ||||
check_param_multi_types, check_value_positive, check_equal_shape | check_param_multi_types, check_value_positive, check_equal_shape | ||||
from mindarmour.utils.util import GradWrap | |||||
from mindarmour.utils.util import jacobian_matrix | |||||
from mindarmour.utils.util import GradWrap, jacobian_matrix | |||||
from .attack import Attack | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'CW' | TAG = 'CW' |
@@ -19,13 +19,12 @@ import numpy as np | |||||
from mindspore import Tensor | from mindspore import Tensor | ||||
from mindspore.nn import Cell | from mindspore.nn import Cell | ||||
from mindarmour.attacks.attack import Attack | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.utils.util import GradWrap | |||||
from mindarmour.utils.util import jacobian_matrix | |||||
from mindarmour.utils.util import GradWrap, jacobian_matrix | |||||
from mindarmour.utils._check_param import check_pair_numpy_param, check_model, \ | from mindarmour.utils._check_param import check_pair_numpy_param, check_model, \ | ||||
check_value_positive, check_int_positive, check_norm_level, \ | check_value_positive, check_int_positive, check_norm_level, \ | ||||
check_param_multi_types, check_param_type | check_param_multi_types, check_param_type | ||||
from .attack import Attack | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'DeepFool' | TAG = 'DeepFool' |
@@ -19,16 +19,14 @@ from abc import abstractmethod | |||||
import numpy as np | import numpy as np | ||||
from mindspore import Tensor | from mindspore import Tensor | ||||
from mindspore.nn import Cell | |||||
from mindspore.nn import SoftmaxCrossEntropyWithLogits | |||||
from mindspore.nn import Cell, SoftmaxCrossEntropyWithLogits | |||||
from mindarmour.attacks.attack import Attack | |||||
from mindarmour.utils.util import WithLossCell | |||||
from mindarmour.utils.util import GradWrapWithLoss | |||||
from mindarmour.utils.util import WithLossCell, GradWrapWithLoss | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.utils._check_param import check_pair_numpy_param, check_model, \ | from mindarmour.utils._check_param import check_pair_numpy_param, check_model, \ | ||||
normalize_value, check_value_positive, check_param_multi_types, \ | normalize_value, check_value_positive, check_param_multi_types, \ | ||||
check_norm_level, check_param_type | check_norm_level, check_param_type | ||||
from .attack import Attack | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'SingleGrad' | TAG = 'SingleGrad' |
@@ -17,18 +17,16 @@ from abc import abstractmethod | |||||
import numpy as np | import numpy as np | ||||
from PIL import Image, ImageOps | from PIL import Image, ImageOps | ||||
from mindspore.nn import SoftmaxCrossEntropyWithLogits | |||||
from mindspore.nn import Cell, SoftmaxCrossEntropyWithLogits | |||||
from mindspore import Tensor | from mindspore import Tensor | ||||
from mindspore.nn import Cell | |||||
from mindarmour.attacks.attack import Attack | |||||
from mindarmour.attacks.gradient_method import FastGradientSignMethod | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.utils.util import WithLossCell | |||||
from mindarmour.utils.util import GradWrapWithLoss | |||||
from mindarmour.utils.util import WithLossCell, GradWrapWithLoss | |||||
from mindarmour.utils._check_param import check_pair_numpy_param, \ | from mindarmour.utils._check_param import check_pair_numpy_param, \ | ||||
normalize_value, check_model, check_value_positive, check_int_positive, \ | normalize_value, check_model, check_value_positive, check_int_positive, \ | ||||
check_param_type, check_norm_level, check_param_multi_types | check_param_type, check_norm_level, check_param_multi_types | ||||
from .attack import Attack | |||||
from .gradient_method import FastGradientSignMethod | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'IterGrad' | TAG = 'IterGrad' |
@@ -19,14 +19,12 @@ import numpy as np | |||||
from mindspore import Tensor | from mindspore import Tensor | ||||
from mindspore.nn import Cell | from mindspore.nn import Cell | ||||
from mindarmour.attacks.attack import Attack | |||||
from mindarmour.utils.util import GradWrap | |||||
from mindarmour.utils.util import jacobian_matrix | |||||
from mindarmour.utils.util import GradWrap, jacobian_matrix | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.utils._check_param import check_pair_numpy_param, check_model, \ | from mindarmour.utils._check_param import check_pair_numpy_param, check_model, \ | ||||
check_param_type, check_int_positive, check_value_positive, \ | check_param_type, check_int_positive, check_value_positive, \ | ||||
check_value_non_negative | check_value_non_negative | ||||
from .attack import Attack | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'JSMA' | TAG = 'JSMA' |
@@ -21,13 +21,12 @@ from mindspore import Tensor | |||||
from mindspore.nn import Cell | from mindspore.nn import Cell | ||||
from mindspore.nn import SoftmaxCrossEntropyWithLogits | from mindspore.nn import SoftmaxCrossEntropyWithLogits | ||||
from mindarmour.attacks.attack import Attack | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.utils.util import WithLossCell | |||||
from mindarmour.utils.util import GradWrapWithLoss | |||||
from mindarmour.utils.util import WithLossCell, GradWrapWithLoss | |||||
from mindarmour.utils._check_param import check_pair_numpy_param, check_model, \ | from mindarmour.utils._check_param import check_pair_numpy_param, check_model, \ | ||||
check_int_positive, check_value_positive, check_param_type, \ | check_int_positive, check_value_positive, check_param_type, \ | ||||
check_param_multi_types | check_param_multi_types | ||||
from .attack import Attack | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'LBFGS' | TAG = 'LBFGS' |
@@ -1,3 +1,16 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | """ | ||||
This module includes classical defense algorithms in defencing adversarial | This module includes classical defense algorithms in defencing adversarial | ||||
examples and enhancing model security and trustworthy. | examples and enhancing model security and trustworthy. |
@@ -17,14 +17,13 @@ Adversarial Defense. | |||||
import numpy as np | import numpy as np | ||||
from mindspore import Tensor | from mindspore import Tensor | ||||
from mindspore.nn import Cell | |||||
from mindspore.nn.optim.momentum import Momentum | |||||
from mindspore.nn import SoftmaxCrossEntropyWithLogits | |||||
from mindspore.nn import Cell, SoftmaxCrossEntropyWithLogits | |||||
from mindspore.nn import WithLossCell, TrainOneStepCell | from mindspore.nn import WithLossCell, TrainOneStepCell | ||||
from mindspore.nn.optim.momentum import Momentum | |||||
from mindarmour.utils._check_param import check_pair_numpy_param, check_model, \ | from mindarmour.utils._check_param import check_pair_numpy_param, check_model, \ | ||||
check_param_in_range, check_param_type, check_param_multi_types | check_param_in_range, check_param_type, check_param_multi_types | ||||
from mindarmour.defenses.defense import Defense | |||||
from .defense import Defense | |||||
class AdversarialDefense(Defense): | class AdversarialDefense(Defense): |
@@ -14,9 +14,8 @@ | |||||
""" | """ | ||||
Natural Adversarial Defense. | Natural Adversarial Defense. | ||||
""" | """ | ||||
from mindarmour.defenses.adversarial_defense import \ | |||||
AdversarialDefenseWithAttacks | |||||
from mindarmour.attacks.gradient_method import FastGradientSignMethod | |||||
from ..attacks.gradient_method import FastGradientSignMethod | |||||
from .adversarial_defense import AdversarialDefenseWithAttacks | |||||
class NaturalAdversarialDefense(AdversarialDefenseWithAttacks): | class NaturalAdversarialDefense(AdversarialDefenseWithAttacks): |
@@ -14,10 +14,8 @@ | |||||
""" | """ | ||||
Projected Adversarial Defense. | Projected Adversarial Defense. | ||||
""" | """ | ||||
from mindarmour.defenses.adversarial_defense import \ | |||||
AdversarialDefenseWithAttacks | |||||
from mindarmour.attacks.iterative_gradient_method import \ | |||||
ProjectedGradientDescent | |||||
from ..attacks.iterative_gradient_method import ProjectedGradientDescent | |||||
from .adversarial_defense import AdversarialDefenseWithAttacks | |||||
class ProjectedAdversarialDefense(AdversarialDefenseWithAttacks): | class ProjectedAdversarialDefense(AdversarialDefenseWithAttacks): |
@@ -1,3 +1,16 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | """ | ||||
This module includes detector methods on distinguishing adversarial examples | This module includes detector methods on distinguishing adversarial examples | ||||
from benign examples. | from benign examples. |
@@ -0,0 +1,16 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | |||||
init black detector. | |||||
""" |
@@ -20,11 +20,11 @@ import numpy as np | |||||
from mindspore import Tensor | from mindspore import Tensor | ||||
from mindspore import Model | from mindspore import Model | ||||
from mindarmour.detectors.detector import Detector | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.utils._check_param import check_model, check_numpy_param, \ | from mindarmour.utils._check_param import check_model, check_numpy_param, \ | ||||
check_int_positive, check_value_positive, check_param_type, \ | check_int_positive, check_value_positive, check_param_type, \ | ||||
check_param_in_range | check_param_in_range | ||||
from ..detector import Detector | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'SimilarityDetector' | TAG = 'SimilarityDetector' |
@@ -16,11 +16,10 @@ Ensemble Detector. | |||||
""" | """ | ||||
import numpy as np | import numpy as np | ||||
from mindarmour.detectors.detector import Detector | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.utils._check_param import check_numpy_param, \ | from mindarmour.utils._check_param import check_numpy_param, \ | ||||
check_param_multi_types | check_param_multi_types | ||||
from .detector import Detector | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'EnsembleDetector' | TAG = 'EnsembleDetector' |
@@ -21,11 +21,11 @@ from scipy.special import softmax | |||||
from mindspore import Tensor | from mindspore import Tensor | ||||
from mindspore import Model | from mindspore import Model | ||||
from mindarmour.detectors.detector import Detector | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.utils._check_param import check_numpy_param, check_model, \ | from mindarmour.utils._check_param import check_numpy_param, check_model, \ | ||||
check_param_in_range, check_param_multi_types, check_int_positive, \ | check_param_in_range, check_param_multi_types, check_int_positive, \ | ||||
check_value_positive | check_value_positive | ||||
from .detector import Detector | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'MagNet' | TAG = 'MagNet' |
@@ -21,12 +21,12 @@ import numpy as np | |||||
from mindspore import Model | from mindspore import Model | ||||
from mindspore import Tensor | from mindspore import Tensor | ||||
from mindarmour.detectors.detector import Detector | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.utils._check_param import check_numpy_param, check_param_type, \ | from mindarmour.utils._check_param import check_numpy_param, check_param_type, \ | ||||
check_pair_numpy_param, check_model, check_int_positive, \ | check_pair_numpy_param, check_model, check_int_positive, \ | ||||
check_value_positive, check_value_non_negative, check_param_in_range, \ | check_value_positive, check_value_non_negative, check_param_in_range, \ | ||||
check_equal_shape | check_equal_shape | ||||
from .detector import Detector | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'RegionBasedDetector' | TAG = 'RegionBasedDetector' |
@@ -20,11 +20,11 @@ from scipy import ndimage | |||||
from mindspore import Model | from mindspore import Model | ||||
from mindspore import Tensor | from mindspore import Tensor | ||||
from mindarmour.detectors.detector import Detector | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.utils._check_param import check_model, check_numpy_param, \ | from mindarmour.utils._check_param import check_model, check_numpy_param, \ | ||||
check_pair_numpy_param, check_int_positive, check_param_type, \ | check_pair_numpy_param, check_int_positive, check_param_type, \ | ||||
check_param_in_range, check_equal_shape, check_value_positive | check_param_in_range, check_equal_shape, check_value_positive | ||||
from .detector import Detector | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'SpatialSmoothing' | TAG = 'SpatialSmoothing' |
@@ -0,0 +1,27 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | |||||
This module includes various metrics to evaluate the result of attacks or | |||||
defenses. | |||||
""" | |||||
from .attack_evaluation import AttackEvaluate | |||||
from .defense_evaluation import DefenseEvaluate | |||||
from .visual_metrics import RadarMetric | |||||
from . import black | |||||
from .black.defense_evaluation import BlackDefenseEvaluate | |||||
__all__ = ['AttackEvaluate', | |||||
'BlackDefenseEvaluate', | |||||
'DefenseEvaluate', | |||||
'RadarMetric'] |
@@ -0,0 +1,13 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. |
@@ -1,14 +0,0 @@ | |||||
""" | |||||
This module includes various metrics to evaluate the result of attacks or | |||||
defenses. | |||||
""" | |||||
from .attack_evaluation import AttackEvaluate | |||||
from .defense_evaluation import DefenseEvaluate | |||||
from .visual_metrics import RadarMetric | |||||
from . import black | |||||
from .black.defense_evaluation import BlackDefenseEvaluate | |||||
__all__ = ['AttackEvaluate', | |||||
'BlackDefenseEvaluate', | |||||
'DefenseEvaluate', | |||||
'RadarMetric'] |
@@ -0,0 +1,22 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | |||||
This module provides a neuron coverage-gain based fuzz method to evaluate the | |||||
robustness of given model. | |||||
""" | |||||
from .fuzzing import Fuzzer | |||||
from .model_coverage_metrics import ModelCoverageMetrics | |||||
__all__ = ['Fuzzer', | |||||
'ModelCoverageMetrics'] |
@@ -20,15 +20,15 @@ import numpy as np | |||||
from mindspore import Model | from mindspore import Model | ||||
from mindspore import Tensor | from mindspore import Tensor | ||||
from mindarmour.fuzzing.model_coverage_metrics import ModelCoverageMetrics | |||||
from mindarmour.utils._check_param import check_model, check_numpy_param, \ | from mindarmour.utils._check_param import check_model, check_numpy_param, \ | ||||
check_param_multi_types, check_norm_level, check_param_in_range, \ | check_param_multi_types, check_norm_level, check_param_in_range, \ | ||||
check_param_type, check_int_positive | check_param_type, check_int_positive | ||||
from mindarmour.fuzzing.image_transform import Contrast, Brightness, Blur, \ | |||||
Noise, Translate, Scale, Shear, Rotate | |||||
from mindarmour.attacks import FastGradientSignMethod, \ | |||||
MomentumDiverseInputIterativeMethod, ProjectedGradientDescent | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from ..adv_robustness.attacks import FastGradientSignMethod, \ | |||||
MomentumDiverseInputIterativeMethod, ProjectedGradientDescent | |||||
from .image_transform import Contrast, Brightness, Blur, \ | |||||
Noise, Translate, Scale, Shear, Rotate | |||||
from .model_coverage_metrics import ModelCoverageMetrics | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'Fuzzer' | TAG = 'Fuzzer' | ||||
@@ -95,7 +95,7 @@ class Fuzzer: | |||||
>>> {'method': 'FGSM', 'params': {'eps': 0.1, 'alpha': 0.1}}] | >>> {'method': 'FGSM', 'params': {'eps': 0.1, 'alpha': 0.1}}] | ||||
>>> train_images = np.random.rand(32, 1, 32, 32).astype(np.float32) | >>> train_images = np.random.rand(32, 1, 32, 32).astype(np.float32) | ||||
>>> model_fuzz_test = Fuzzer(model, train_images, 10, 1000) | >>> model_fuzz_test = Fuzzer(model, train_images, 10, 1000) | ||||
>>> samples, labels, preds, strategies, report = model_fuzz_test.fuzzing(mutate_config, initial_seeds) | |||||
>>> samples, labels, preds, strategies, report = model_fuzz_test.fuzz_testing(mutate_config, initial_seeds) | |||||
""" | """ | ||||
def __init__(self, target_model, train_dataset, neuron_num, segmented_num=1000): | def __init__(self, target_model, train_dataset, neuron_num, segmented_num=1000): | ||||
@@ -151,7 +151,7 @@ class Fuzzer: | |||||
'Rotate'. Thirdly, attack methods include: 'FGSM', 'PGD' and 'MDIIM'. | 'Rotate'. Thirdly, attack methods include: 'FGSM', 'PGD' and 'MDIIM'. | ||||
`mutate_config` must have method in the type of pixel value based | `mutate_config` must have method in the type of pixel value based | ||||
transform methods. The way of setting parameters for first and | transform methods. The way of setting parameters for first and | ||||
second type methods can be seen in 'mindarmour/fuzzing/image_transform.py'. | |||||
second type methods can be seen in 'mindarmour/fuzz_testing/image_transform.py'. | |||||
For third type methods, you can refer to the corresponding class. | For third type methods, you can refer to the corresponding class. | ||||
initial_seeds (list[list]): Initial seeds used to generate mutated | initial_seeds (list[list]): Initial seeds used to generate mutated | ||||
samples. The format of initial seeds is [[image_data, label], | samples. The format of initial seeds is [[image_data, label], | ||||
@@ -169,7 +169,7 @@ class Fuzzer: | |||||
Default: 20. | Default: 20. | ||||
Returns: | Returns: | ||||
- list, mutated samples in fuzzing. | |||||
- list, mutated samples in fuzz_testing. | |||||
- list, ground truth labels of mutated samples. | - list, ground truth labels of mutated samples. | ||||
@@ -376,11 +376,11 @@ class Fuzzer: | |||||
def _evaluate(self, fuzz_samples, gt_labels, fuzz_preds, | def _evaluate(self, fuzz_samples, gt_labels, fuzz_preds, | ||||
fuzz_strategies, metrics): | fuzz_strategies, metrics): | ||||
""" | """ | ||||
Evaluate generated fuzzing samples in three dimention: accuracy, | |||||
Evaluate generated fuzz_testing samples in three dimention: accuracy, | |||||
attack success rate and neural coverage. | attack success rate and neural coverage. | ||||
Args: | Args: | ||||
fuzz_samples (numpy.ndarray): Generated fuzzing samples according to seeds. | |||||
fuzz_samples (numpy.ndarray): Generated fuzz_testing samples according to seeds. | |||||
gt_labels (numpy.ndarray): Ground Truth of seeds. | gt_labels (numpy.ndarray): Ground Truth of seeds. | ||||
fuzz_preds (numpy.ndarray): Predictions of generated fuzz samples. | fuzz_preds (numpy.ndarray): Predictions of generated fuzz samples. | ||||
fuzz_strategies (numpy.ndarray): Mutate strategies of fuzz samples. | fuzz_strategies (numpy.ndarray): Mutate strategies of fuzz samples. |
@@ -1,8 +0,0 @@ | |||||
""" | |||||
This module includes various metrics to fuzzing the test of DNN. | |||||
""" | |||||
from .fuzzing import Fuzzer | |||||
from .model_coverage_metrics import ModelCoverageMetrics | |||||
__all__ = ['Fuzzer', | |||||
'ModelCoverageMetrics'] |
@@ -0,0 +1,18 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | |||||
This module provides various methods to protect the privacy of given model, and | |||||
also provides some methods to evaluate the risk of privacy leakage of given | |||||
model. | |||||
""" |
@@ -1,5 +1,18 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | """ | ||||
This module provide Differential Privacy feature to protect user privacy. | |||||
This module provides Differential Privacy feature to protect user privacy. | |||||
""" | """ | ||||
from .mechanisms.mechanisms import NoiseGaussianRandom | from .mechanisms.mechanisms import NoiseGaussianRandom | ||||
from .mechanisms.mechanisms import NoiseAdaGaussianRandom | from .mechanisms.mechanisms import NoiseAdaGaussianRandom | ||||
@@ -11,7 +24,6 @@ from .monitor.monitor import RDPMonitor | |||||
from .monitor.monitor import ZCDPMonitor | from .monitor.monitor import ZCDPMonitor | ||||
from .optimizer.optimizer import DPOptimizerClassFactory | from .optimizer.optimizer import DPOptimizerClassFactory | ||||
from .train.model import DPModel | from .train.model import DPModel | ||||
from .evaluation.membership_inference import MembershipInference | |||||
__all__ = ['NoiseGaussianRandom', | __all__ = ['NoiseGaussianRandom', | ||||
'NoiseAdaGaussianRandom', | 'NoiseAdaGaussianRandom', | ||||
@@ -22,5 +34,4 @@ __all__ = ['NoiseGaussianRandom', | |||||
'RDPMonitor', | 'RDPMonitor', | ||||
'ZCDPMonitor', | 'ZCDPMonitor', | ||||
'DPOptimizerClassFactory', | 'DPOptimizerClassFactory', | ||||
'DPModel', | |||||
'MembershipInference'] | |||||
'DPModel'] |
@@ -0,0 +1,16 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | |||||
init mechanisms. | |||||
""" |
@@ -0,0 +1,16 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | |||||
init monitor. | |||||
""" |
@@ -0,0 +1,16 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | |||||
init optimizer. | |||||
""" |
@@ -22,9 +22,9 @@ from mindspore.ops import functional as F | |||||
from mindspore.common import dtype as mstype | from mindspore.common import dtype as mstype | ||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.diff_privacy import NoiseMechanismsFactory | |||||
from mindarmour.diff_privacy.mechanisms.mechanisms import _MechanismsParamsUpdater | |||||
from mindarmour.utils._check_param import check_int_positive | from mindarmour.utils._check_param import check_int_positive | ||||
from ..mechanisms.mechanisms import NoiseMechanismsFactory | |||||
from ..mechanisms.mechanisms import _MechanismsParamsUpdater | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'DP optimizer' | TAG = 'DP optimizer' |
@@ -0,0 +1,16 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | |||||
init train. | |||||
""" |
@@ -48,10 +48,9 @@ from mindspore.nn import Cell | |||||
from mindspore import ParameterTuple | from mindspore import ParameterTuple | ||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
from mindarmour.diff_privacy.mechanisms.mechanisms import \ | |||||
_MechanismsParamsUpdater | |||||
from mindarmour.utils._check_param import check_value_positive, check_param_type | from mindarmour.utils._check_param import check_value_positive, check_param_type | ||||
from mindarmour.utils._check_param import check_int_positive | from mindarmour.utils._check_param import check_int_positive | ||||
from ..mechanisms.mechanisms import _MechanismsParamsUpdater | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'DP model' | TAG = 'DP model' |
@@ -0,0 +1,21 @@ | |||||
# Copyright 2020 Huawei Technologies Co., Ltd | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# http://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
""" | |||||
This module provides some methods to evaluate the risk of privacy leakage of | |||||
given model. | |||||
""" | |||||
from .membership_inference import MembershipInference | |||||
__all__ = ['MembershipInference'] |
@@ -1,5 +1,6 @@ | |||||
""" | """ | ||||
Util methods of MindArmour.""" | |||||
Util methods of MindArmour. | |||||
""" | |||||
from .logger import LogUtil | from .logger import LogUtil | ||||
from .util import GradWrap | from .util import GradWrap | ||||
from .util import GradWrapWithLoss | from .util import GradWrapWithLoss | ||||
@@ -14,7 +14,7 @@ | |||||
""" check parameters for MindArmour. """ | """ check parameters for MindArmour. """ | ||||
import numpy as np | import numpy as np | ||||
from mindarmour.utils.logger import LogUtil | |||||
from .logger import LogUtil | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'check parameters' | TAG = 'check parameters' | ||||
@@ -17,7 +17,7 @@ from mindspore import Tensor | |||||
from mindspore.nn import Cell | from mindspore.nn import Cell | ||||
from mindspore.ops.composite import GradOperation | from mindspore.ops.composite import GradOperation | ||||
from mindarmour.utils.logger import LogUtil | |||||
from .logger import LogUtil | |||||
LOGGER = LogUtil.get_instance() | LOGGER = LogUtil.get_instance() | ||||
TAG = 'util' | TAG = 'util' | ||||
@@ -29,7 +29,7 @@ from mindspore.common import dtype as mstype | |||||
from mindspore.ops import operations as P | from mindspore.ops import operations as P | ||||
from mindspore.ops import functional as F | from mindspore.ops import functional as F | ||||
from mindarmour.attacks.gradient_method import FastGradientSignMethod | |||||
from mindarmour.adv_robustness.attacks import FastGradientSignMethod | |||||
from resnet_cifar10 import resnet50_cifar10 | from resnet_cifar10 import resnet50_cifar10 | ||||
@@ -21,8 +21,8 @@ from mindspore import Tensor | |||||
from mindspore import context | from mindspore import context | ||||
from mindspore.nn import Cell | from mindspore.nn import Cell | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.attacks.black.genetic_attack import GeneticAttack | |||||
from mindarmour import BlackModel | |||||
from mindarmour.adv_robustness.attacks import GeneticAttack | |||||
context.set_context(mode=context.GRAPH_MODE, device_target="Ascend") | context.set_context(mode=context.GRAPH_MODE, device_target="Ascend") | ||||
@@ -20,8 +20,8 @@ from mindspore import Tensor | |||||
from mindspore import context | from mindspore import context | ||||
from mindspore.train.serialization import load_checkpoint, load_param_into_net | from mindspore.train.serialization import load_checkpoint, load_param_into_net | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.attacks.black.hop_skip_jump_attack import HopSkipJumpAttack | |||||
from mindarmour import BlackModel | |||||
from mindarmour.adv_robustness.attacks import HopSkipJumpAttack | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), | sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), | ||||
@@ -20,8 +20,8 @@ from mindspore import Tensor | |||||
from mindspore import context | from mindspore import context | ||||
from mindspore.train.serialization import load_checkpoint, load_param_into_net | from mindspore.train.serialization import load_checkpoint, load_param_into_net | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.attacks.black.natural_evolutionary_strategy import NES | |||||
from mindarmour import BlackModel | |||||
from mindarmour.adv_robustness.attacks import NES | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), | sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), | ||||
@@ -23,8 +23,8 @@ from mindspore import Tensor | |||||
from mindspore import context | from mindspore import context | ||||
from mindspore.train.serialization import load_checkpoint, load_param_into_net | from mindspore.train.serialization import load_checkpoint, load_param_into_net | ||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.attacks.black.pointwise_attack import PointWiseAttack | |||||
from mindarmour import BlackModel | |||||
from mindarmour.adv_robustness.attacks import PointWiseAttack | |||||
from mindarmour.utils.logger import LogUtil | from mindarmour.utils.logger import LogUtil | ||||
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), | sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), | ||||
@@ -22,8 +22,8 @@ import mindspore.nn as nn | |||||
from mindspore.nn import Cell | from mindspore.nn import Cell | ||||
from mindspore import context | from mindspore import context | ||||
from mindarmour.attacks.black.pso_attack import PSOAttack | |||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour.adv_robustness.attacks import PSOAttack | |||||
from mindarmour import BlackModel | |||||
# for user | # for user | ||||
@@ -22,9 +22,8 @@ from mindspore import Tensor | |||||
from mindspore.nn import Cell | from mindspore.nn import Cell | ||||
from mindspore import context | from mindspore import context | ||||
from mindarmour.attacks.black.salt_and_pepper_attack import \ | |||||
SaltAndPepperNoiseAttack | |||||
from mindarmour.attacks.black.black_model import BlackModel | |||||
from mindarmour import BlackModel | |||||
from mindarmour.adv_robustness.attacks import SaltAndPepperNoiseAttack | |||||
context.set_context(mode=context.GRAPH_MODE) | context.set_context(mode=context.GRAPH_MODE) | ||||
context.set_context(device_target="Ascend") | context.set_context(device_target="Ascend") | ||||
@@ -21,7 +21,7 @@ import mindspore.ops.operations as P | |||||
from mindspore.nn import Cell | from mindspore.nn import Cell | ||||
import mindspore.context as context | import mindspore.context as context | ||||
from mindarmour.attacks.gradient_method import FastGradientMethod | |||||
from mindarmour.adv_robustness.attacks import FastGradientMethod | |||||
context.set_context(mode=context.GRAPH_MODE, device_target="Ascend") | context.set_context(mode=context.GRAPH_MODE, device_target="Ascend") | ||||
@@ -21,7 +21,7 @@ import mindspore.ops.operations as M | |||||
from mindspore.nn import Cell | from mindspore.nn import Cell | ||||
from mindspore import context | from mindspore import context | ||||
from mindarmour.attacks.carlini_wagner import CarliniWagnerL2Attack | |||||
from mindarmour.adv_robustness.attacks import CarliniWagnerL2Attack | |||||
context.set_context(mode=context.GRAPH_MODE, device_target="Ascend") | context.set_context(mode=context.GRAPH_MODE, device_target="Ascend") | ||||