
Código de pesquisa para detectar e desintoxicar backdoors em modelos de difusão de texto para imagem, com pipelines para Stable Diffusion v1.4, v1.5, XL e 3 Medium.
O TNC-Defense fornece código de pesquisa para detectar e desintoxicar backdoors em modelos de difusão texto-imagem. O repositório atualmente inclui pipelines de detecção para Stable Diffusion v1.4, Stable Diffusion v1.5, Stable Diffusion XL, e Stable Diffusion 3 Medium, juntamente com pipelines de desintoxicação para Stable Diffusion v1.4 e Stable Diffusion XL.
Somente para uso em pesquisa. Este código destina-se ao estudo da robustez e segurança de modelos de difusão texto-imagem. Os usuários são responsáveis por cumprir as licenças e políticas de uso de todos os modelos, conjuntos de dados e implementações upstream.
TNC-Defense/
├── TNC-Detect/
│ ├── detect_sd14.py # Detection on Stable Diffusion v1.4
│ ├── detect_sd15.py # Detection on Stable Diffusion v1.5
│ ├── detect_sdxl.py # Detection on Stable Diffusion XL
│ ├── detect_sd3.py # Detection on Stable Diffusion 3 Medium
│ ├── ana.py # Detection metrics and visualization
│ ├── run_detect_sd14.sh # Multi-GPU SD1.4 detection
│ └── ana.sh # Analysis entry point
└── TNC-Detox/
├── data/ # Paired clean/backdoored training data
├── common.py # Shared data and reproducibility utilities
├── detox_sd14.py # Detoxification for SD1.4
├── detox_sdxl.py # Detoxification for SDXL
├── evaluate_sd14.py # SD1.4 generation-based evaluation
├── compute_fid.py # FID evaluation
├── run_detox_sd14.sh # Multi-GPU SD1.4 detoxification
└── run_detox_sdxl.sh # SDXL detoxification
O código foi submetido a smoke tests no ambiente Conda TCN com:
Os utilitários de análise e avaliação adicionalmente exigem pacotes incluindo NumPy, pandas, SciPy, scikit-learn, Matplotlib, Pillow e tqdm.
Ative o ambiente antes de executar um experimento:
cd TNC-Defense
conda create -n TCN python=3.10 -y
conda activate TCN
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
Os pontos de entrada Bash usam o python do ambiente ativo. Um interpretador
diferente pode ser fornecido por meio da variável de ambiente PYTHON:
PYTHON=python bash TNC-Detect/run_detect_sd14.sh
Os caminhos do repositório são resolvidos em relação ao local de cada script,
portanto os comandos não dependem do diretório de trabalho atual. Os caminhos de
modelo padrão seguem o layout do projeto local usado nos experimentos. Se os
modelos forem armazenados em outro local, substitua os argumentos de linha de
comando correspondentes, como --base-model-path, --backdoor-model-path,
--base-model ou --tox-path.
Os conjuntos de dados de desintoxicação estão incluídos em:
TNC-Detox/data/
├── sd14/
│ ├── pixel/
│ ├── pixel_mul_tokens/
│ ├── eviledit/
│ ├── personal_bkd/
│ └── villain_mul/
└── sdxl/
├── pixel/
└── pixel_mul_tokens/
Cada conjunto de dados contém clean/, poison/ e metadata.json.
O executor padrão avalia todos os métodos de backdoor SD1.4 configurados. Ele
atribui os métodos aos IDs de GPU definidos em run_detect_sd14.sh e os executa
em paralelo.
cd TNC-Defense/TNC-Detect
bash run_detect_sd14.sh
Para executar um método diretamente:
python detect_sd14.py \
--backdoor-method pixel \
--device cuda:0 \
--seed 0 \
--num-inference-steps 50
Os argumentos disponíveis para cada família de modelos podem ser consultados com:
python detect_sd14.py --help
python detect_sd15.py --help
python detect_sdxl.py --help
python detect_sd3.py --help
Após gerar os arquivos CSV de MSE, configure os arquivos de entrada em ana.sh e
execute:
bash ana.sh
O detector suporta tanto as regras de decisão naive quanto as dynamic-k. As
métricas e os gráficos são produzidos por ana.py.
O executor padrão de SD1.4 executa os cinco métodos configurados nos cinco IDs de GPU especificados no script:
cd TNC-Defense/TNC-Detox
bash run_detox_sd14.sh
Para executar um único método:
python detox_sd14.py \
--method pixel \
--device cuda:0 \
--seed 42
Configure METHOD e GPU_ID em run_detox_sdxl.sh e então execute:
bash run_detox_sdxl.sh
Os valores padrão específicos de cada método, incluindo as etapas de treinamento,
as proporções de amostragem de timestep, os pesos de perda, os tamanhos de lote e
os intervalos de checkpoint, estão definidos na seção METHOD_PROFILES de cada
script de treinamento. Os argumentos de linha de comando podem substituir esses
valores padrão.
Gere imagens de uma ou mais UNets SD1.4 desintoxicadas:
python evaluate_sd14.py \
--detox-model checkpoints/sd14/<checkpoint> \
--prompt-file <prompt-file>
Calcule o FID entre os diretórios de imagens de referência e desintoxicadas:
python compute_fid.py \
--reference-dir <reference-images> \
--candidate-dir <detoxified-images>
42 por padrão e habilita o comportamento
determinístico do cuDNN.Os modelos com backdoor e as configurações de ataque usados por este projeto originam-se dos seguintes recursos públicos:
Cite os artigos originais correspondentes ao usar esses ataques ou checkpoints:
BadT2I (badt2izhai2023), EvilEdit (evileditwang2024), VillanDiffusion
(villandiffusionchou2023) e PersonalBKD (personalizationhuang2024).
Se você considerar este projeto útil em sua pesquisa, cite:
@article{wang2026backdoor,
title={Backdoor sentinel: Detecting and detoxifying backdoors in diffusion models via temporal noise consistency},
author={Wang, Bingzheng and Gu, Xiaoyan and Xu, Hongbo and Li, Hongcheng and Yu, Zimo and Zhou, Jiang and Wang, Weiping},
journal={arXiv preprint arXiv:2602.01765},
year={2026}
}
Este projeto foi construído com referência substancial ao excelente NaviT2I base de código. Agradecemos sinceramente aos autores do NaviT2I por disponibilizarem sua implementação e recursos de apoio.
Agradecemos também aos autores do BadT2I, EvilEdit, VillanDiffusion, PersonalBKD, Hugging Face Diffusers e dos modelos de difusão pré-treinados associados por disponibilizarem publicamente seus códigos e checkpoints. Todos os componentes de terceiros permanecem sujeitos às suas respectivas licenças e termos de uso.