
Forschungscode zur Erkennung und Entgiftung von Backdoors in Text-zu-Bild-Diffusionsmodellen, mit Pipelines für Stable Diffusion v1.4, v1.5, XL und 3 Medium.
TNC-Defense stellt Forschungscode zur Erkennung und Entgiftung von Backdoors in Text-zu-Bild-Diffusionsmodellen bereit. Das Repository enthält derzeit Erkennungspipelines für Stable Diffusion v1.4, Stable Diffusion v1.5, Stable Diffusion XL und Stable Diffusion 3 Medium sowie Entgiftungspipelines für Stable Diffusion v1.4 und Stable Diffusion XL.
Nur für Forschungszwecke. Dieser Code dient der Untersuchung der Robustheit und Sicherheit von Text-zu-Bild-Diffusionsmodellen. Die Nutzer sind dafür verantwortlich, die Lizenzen und Nutzungsrichtlinien aller vorgelagerten Modelle, Datensätze und Implementierungen einzuhalten.
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
Der Code wurde in der TCN-Conda-Umgebung einem Smoke-Test unterzogen mit:
Die Analyse- und Auswertungswerkzeuge erfordern zusätzlich Pakete wie NumPy, pandas, SciPy, scikit-learn, Matplotlib, Pillow und tqdm.
Aktivieren Sie die Umgebung, bevor Sie ein Experiment ausführen:
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
Die Bash-Einstiegspunkte verwenden das python der aktiven Umgebung. Über die Umgebungsvariable PYTHON kann ein anderer Interpreter angegeben werden:
PYTHON=python bash TNC-Detect/run_detect_sd14.sh
Alle Repository-Pfade werden relativ zum Speicherort des jeweiligen Skripts aufgelöst, sodass die Befehle nicht vom aktuellen Arbeitsverzeichnis abhängen. Die Standard-Modellpfade folgen dem lokalen Projektlayout, das für die Experimente verwendet wird. Wenn Modelle an anderer Stelle gespeichert sind, überschreiben Sie die entsprechenden Befehlszeilenargumente wie --base-model-path, --backdoor-model-path, --base-model oder --tox-path.
Die Entgiftungsdatensätze befinden sich unter:
TNC-Detox/data/
├── sd14/
│ ├── pixel/
│ ├── pixel_mul_tokens/
│ ├── eviledit/
│ ├── personal_bkd/
│ └── villain_mul/
└── sdxl/
├── pixel/
└── pixel_mul_tokens/
Jeder Datensatz enthält clean/, poison/ und metadata.json.
Der Standard-Runner evaluiert alle konfigurierten SD1.4-Backdoor-Methoden. Er weist die Methoden den in run_detect_sd14.sh definierten GPU-IDs zu und startet sie parallel.
cd TNC-Defense/TNC-Detect
bash run_detect_sd14.sh
Um eine Methode direkt auszuführen:
python detect_sd14.py \
--backdoor-method pixel \
--device cuda:0 \
--seed 0 \
--num-inference-steps 50
Die verfügbaren Argumente für jede Modellfamilie können mit folgendem Befehl eingesehen werden:
python detect_sd14.py --help
python detect_sd15.py --help
python detect_sdxl.py --help
python detect_sd3.py --help
Nachdem die MSE-CSV-Dateien generiert wurden, konfigurieren Sie die Eingabedateien in ana.sh und führen Sie folgenden Befehl aus:
bash ana.sh
Der Detektor unterstützt sowohl die naive als auch die dynamische k-Entscheidungsregel. Metriken und Diagramme werden von ana.py erstellt.
Der Standard-SD1.4-Runner startet die fünf konfigurierten Methoden auf den fünf im Skript angegebenen GPU-IDs:
cd TNC-Defense/TNC-Detox
bash run_detox_sd14.sh
Um eine einzelne Methode auszuführen:
python detox_sd14.py \
--method pixel \
--device cuda:0 \
--seed 42
Konfigurieren Sie METHOD und GPU_ID in run_detox_sdxl.sh und führen Sie dann aus:
bash run_detox_sdxl.sh
Die methodenspezifischen Standardwerte, einschließlich Trainingsschritten, Timestep-Sampling-Verhältnissen, Verlustgewichten, Batchgrößen und Checkpoint-Intervallen, sind im Abschnitt METHOD_PROFILES jedes Trainingsskripts definiert. Befehlszeilenargumente können diese Standardwerte überschreiben.
Generieren Sie Bilder aus einem oder mehreren entgifteten SD1.4-UNets:
python evaluate_sd14.py \
--detox-model checkpoints/sd14/<checkpoint> \
--prompt-file <prompt-file>
Berechnen Sie den FID zwischen Referenz- und entgifteten Bildverzeichnissen:
python compute_fid.py \
--reference-dir <reference-images> \
--candidate-dir <detoxified-images>
42 und aktiviert deterministisches cuDNN-Verhalten.Die von diesem Projekt verwendeten Backdoor-Modelle und Angriffskonfigurationen stammen aus den folgenden öffentlichen Ressourcen:
Bitte zitieren Sie die entsprechenden Originalarbeiten, wenn Sie diese Angriffe oder Checkpoints verwenden: BadT2I (badt2izhai2023), EvilEdit (evileditwang2024), VillanDiffusion (villandiffusionchou2023) und PersonalBKD (personalizationhuang2024).
Wenn Sie dieses Projekt für Ihre Forschung nützlich finden, zitieren Sie bitte:
@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}
}