-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
47 lines (32 loc) · 1.61 KB
/
Copy pathmain.py
File metadata and controls
47 lines (32 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import argparse
from argparse import Namespace
from pipeline import pipeline_init_cm, pipeline_injection, pipeline_detection, pipeline_assessor, pipeline_evaluation
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("--scenario", type = str, default = "STD")
args, unknown = parser.parse_known_args()
args_dict = vars(args).copy()
# parse unknown arguments
for i in range(0, len(unknown), 2):
if unknown[i].startswith("--") and (i + 1) < len(unknown):
key = unknown[i][2:]
value = unknown[i + 1]
if value.isdigit():
value = int(value)
elif value.lower() in ["true", "false"]:
value = value.lower() == "true"
args_dict[key] = value
return Namespace(**args_dict)
def main(args):
cm = pipeline_init_cm(args = args) # init config manager
# Injection Phase: Generate poisoned files based on scenario configuration.
pipeline_injection(cm = cm, flag = cm.global_config.Flag_injection)
# Detection Phase: Run selected detection models and obtain classification results (detection side, micro-level).
pipeline_detection(cm = cm, flag = cm.global_config.Flag_detection)
# Assessment Phase: Evaluate the impact of generated files and compute distributional distances (attack side, micro-level).
pipeline_assessor(cm = cm, flag = cm.global_config.Flag_assess)
# Evaluation Phase: Conduct macro-level evaluation per scenario.
pipeline_evaluation(cm = cm, flag = cm.global_config.Flag_evaluation)
if __name__ == "__main__":
args = parse_args()
main(args)