
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}
}
Dieses Projekt entstand unter wesentlicher Bezugnahme auf die hervorragende NaviT2I-Codebasis. Wir danken den Autoren von NaviT2I aufrichtig für die Veröffentlichung ihrer Implementierung und der unterstützenden Ressourcen.
Wir danken außerdem den Autoren von BadT2I, EvilEdit, VillanDiffusion, PersonalBKD, Hugging Face Diffusers sowie den zugehörigen vortrainierten Diffusionsmodellen für die öffentliche Bereitstellung ihres Codes und ihrer Checkpoints. Alle Komponenten von Drittanbietern unterliegen weiterhin ihren jeweiligen Lizenzen und Nutzungsbedingungen.