Esta es la implementación del código (pytorch) para el paper: TROJANZOO
TrojanZooproporciona una plataforma pytorch universal para llevar a cabo investigaciones de seguridad (especialmente ataques/defensas de puerta trasera) de clasificación de imágenes en el aprendizaje profundo. Está compuesto por dos paquetes: trojanzoo
y trojanvision
. trojanzoo
contiene clases abstractas y utilidades, mientras que trojanvision
contiene clases abstractas y concretas para la tarea de clasificación de imágenes.
Captura
Características
- ¡Una salida colorida y detallada!
- Diseño modular (plug and play)
- Buen código con soporte de Lint (este paquete requiere
python>=3.9
) - Registra tu propio módulo en la biblioteca.
- Salida de Pytorch nativa
trojanzoo
y trojanvision
proporciona una API para generar instancias de pytorch en bruto, lo que hace que sea flexible para trabajar con pytorch nativo y otras bibliotecas de terceros.
- Habilitar el AMP (Automatic Mixed Precision) nativo de Pytorch con
--amp
para el entrenamiento - Archivos de configuración flexible
- Buena información de ayuda para comprobar los argumentos. (
-h
o--help
) - Resumen detallado y bien organizado
summary()
para cada módulo.
Instalación
pip install trojanzoo
(por hacer) conda install trojanzoo
docker pull local0state/trojanzoo
Inicio Rápido
Puede utilizar los scripts de ejemplo proporcionados para reproducir los resultados de la evaluación del paper.
- Entrenar un modelo: por ejemplo,
ResNetComp18
enCIFAR10
con un 95% de Acc
python train.py --verbose 1 --amp --dataset cifar10 --model resnetcomp18 --epoch 300 --lr 0.1 --lr_scheduler --lr_step_size 100 --save
- Prueba de ataque puerta trasera (por ejemplo, BadNet): por ejemplo,
BadNet
conResNetComp18
enCIFAR10
python backdoor_attack.py --verbose 1 --pretrain --validate_interval 1 --amp --dataset cifar10 --model resnetcomp18 --attack badnet --random_init --epoch 50 --lr 0.01 --save
- Prueba de defensa de puerta trasera (por ejemplo, Neural Cleanse): por ejemplo,
Neural Cleanse
contraBadNet
python backdoor_attack.py --verbose 1 --pretrain --validate_interval 1 --dataset cifar10 --model resnetcomp18 --attack badnet --defense neural_cleanse --random_init --epoch 50 --lr 0.01
IMC
python backdoor_attack.py --verbose --pretrain --validate_interval 1 --amp --dataset cifar10 --model resnetcomp18 --attack imc --random_init --epoch 50 --lr 0.01 --save
AdvMind (con attack adaptive
y model adaptive
)
python adv_defense.py --verbose --pretrain --validate_interval 1 --dataset cifar10 --model resnetcomp18 --attack pgd --defense advmind --attack_adapt --defense_adapt
Uso detallado
Estructura de los archivos de configuración
Todos los argumentos del analizador pueden establecer valores por defecto en los archivos de configuración.
Si los valores de los argumentos no se establecen en los archivos de configuración, utilizaremos los valores por defecto de __init__()
Parámetros Config: (orden de prioridad ascendente)
- Paquete por defecto:
/trojanzoo/configs/
,/trojanvision/configs/
- Usuario por defecto: No se ha decidido aún.(Habilitarlo en el código
trojanzoo/configs/__init__.py
,trojanvision/configs/__init__.py
) - Workspace por defecto:
/configs/trojanzoo/
,/configs/trojanvision/
- Configuración personalizada:
--config
- Parámetros CMD:
--
Ruta de almacenamiento del conjunto de datos, modelo, resultados de ataque y defensa
- Dataset:
--data_dir
(./data/data
) - Model:
--model_dir
(./data/model
) - Attack:
--attack_dir
(./data/attack
) - Defense:
--defense_dir
(./data/defense
)
Información de la salida detallada:
- módulos CMD:
--verbose
- Colorful output:
--color
- tqdm progress bar:
--tqdm
- Comprobar el uso de los argumentos de la línea de comandos:
--help
- AdvMind información detallada:
--output
Usa tu conjunto de datos DIY/Modelo/Ataque/Defensa
- Sigue el ejemplo para escribir tu clase DIY. (
CIFAR10
,ResNet
,IMC
,Neural Cleanse
)
Es necesario subclasificar la clase base. (Dataset
, Model
, Attack
, Defense
)
Clases de base opcionales dependiendo de su caso de uso: (ImageSet
, ImageFolder
, ImageModel
)
- Registra tu clase DIY en
trojanvision
- Crea tus archivos de configuración si es necesario.
- ¡Listo para empezar!
trojanzoo (este enlace se abre en una nueva ventana) por ain-soph (este enlace se abre en una nueva ventana)
TrojanZoo provides a universal pytorch platform to conduct security researches (especially backdoor attacks/defenses) of image classification in deep learning.