TNC-Defense は、テキストから画像を生成する拡散モデル(text-to-image diffusion models)におけるバックドアの検出と無害化のための研究コードを提供します。このリポジトリには現在、Stable Diffusion v1.4、Stable Diffusion v1.5、Stable Diffusion XL、Stable Diffusion 3 Medium 向けの検出パイプラインと、Stable Diffusion v1.4 および Stable Diffusion XL 向けの無害化パイプラインが含まれています。
研究目的専用。 このコードは、テキストから画像を生成する拡散モデルの堅牢性と安全性の研究を目的としています。利用者は、すべての上位モデル、データセット、および実装のライセンスと利用ポリシーを遵守する責任があります。
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
このコードは、TCN Conda 環境でスモークテスト済みです。構成は次のとおりです。
解析および評価ユーティリティには、NumPy、pandas、SciPy、scikit-learn、Matplotlib、Pillow、tqdm などのパッケージが追加で必要です。
実験を実行する前に、環境をアクティベートしてください。
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
Bash エントリポイントは、アクティブな環境の python を使用します。別のインタープリタを指定する場合は、PYTHON 環境変数を使用できます。
PYTHON=python bash TNC-Detect/run_detect_sd14.sh
リポジトリ内のすべてのパスは、各スクリプトの場所を基準に解決されるため、コマンドはカレントワーキングディレクトリに依存しません。デフォルトのモデルパスは、実験で使用したローカルプロジェクトの構成に従います。モデルを別の場所に保存する場合は、--base-model-path、--backdoor-model-path、--base-model、--tox-path などの対応するコマンドライン引数で上書きしてください。
無害化データセットは次の場所に含まれています。
TNC-Detox/data/
├── sd14/
│ ├── pixel/
│ ├── pixel_mul_tokens/
│ ├── eviledit/
│ ├── personal_bkd/
│ └── villain_mul/
└── sdxl/
├── pixel/
└── pixel_mul_tokens/
各データセットには、clean/、poison/、metadata.json が含まれています。
デフォルトのランナーは、設定されているすべての SD1.4 バックドア手法を評価します。run_detect_sd14.sh で定義された GPU ID にメソッドを割り当て、並列に起動します。
cd TNC-Defense/TNC-Detect
bash run_detect_sd14.sh
単一のメソッドを直接実行するには:
python detect_sd14.py \
--backdoor-method pixel \
--device cuda:0 \
--seed 0 \
--num-inference-steps 50
各モデルファミリで利用可能な引数は、次のコマンドで確認できます:
python detect_sd14.py --help
python detect_sd15.py --help
python detect_sdxl.py --help
python detect_sd3.py --help
MSE CSV ファイルを生成した後、ana.sh 内の入力ファイルを設定して、次のコマンドを実行します:
bash ana.sh
この検出器は、naive および dynamic-k の両方の決定ルールをサポートしています。メトリクスとプロットは ana.py によって生成されます。
デフォルトの SD1.4 ランナーは、スクリプトで指定された 5 つの GPU ID 上で、設定された 5 つのメソッドを起動します:
cd TNC-Defense/TNC-Detox
bash run_detox_sd14.sh
単一のメソッドを実行するには:
python detox_sd14.py \
--method pixel \
--device cuda:0 \
--seed 42
run_detox_sdxl.sh 内で METHOD と GPU_ID を設定し、次のコマンドを実行します:
bash run_detox_sdxl.sh
トレーニングステップ、タイムステップサンプリング比率、損失重み、バッチサイズ、チェックポイント間隔などのメソッド固有のデフォルト値は、各トレーニングスクリプトの METHOD_PROFILES セクションで定義されています。コマンドライン引数でこれらのデフォルト値を上書きできます。
無害化された 1 つ以上の SD1.4 UNet から画像を生成します:
python evaluate_sd14.py \
--detox-model checkpoints/sd14/<checkpoint> \
--prompt-file <prompt-file>
参照画像ディレクトリと無害化画像ディレクトリの間の FID を計算します:
python compute_fid.py \
--reference-dir <reference-images> \
--candidate-dir <detoxified-images>
42 を使用し、決定論的な cuDNN 動作を有効にします。このプロジェクトで使用されるバックドアモデルと攻撃構成は、次の公開リソースに由来します:
これらの攻撃またはチェックポイントを使用する場合は、対応する元の論文を引用してください: BadT2I (badt2izhai2023)、EvilEdit (evileditwang2024)、VillanDiffusion (villandiffusionchou2023)、PersonalBKD (personalizationhuang2024)。
このプロジェクトが研究に役立つ場合は、次のように引用してください:
@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}
}
このプロジェクトは、優れた NaviT2I コードベースを大幅に参考に構築されています。NaviT2I の著者らが実装と関連リソースを公開してくれたことに心から感謝します。
また、BadT2I、EvilEdit、VillanDiffusion、PersonalBKD、Hugging Face Diffusers、および関連する事前学習済み拡散モデルの著者らが、コードとチェックポイントを公開してくれたことに感謝します。すべてのサードパーティコンポーネントは、それぞれのライセンスおよび利用規約の対象となります。