이것은 "SafeGen: 텍스트-이미지 모델에서 성적으로 노골적인 콘텐츠 생성 완화"의 공식 코드입니다.
SafeGen은 컴퓨터 및 통신 보안에 관한 ACM 컨퍼런스( ACM CCS 2024 ) Core-A*, CCF-A, Big 4 에 참가할 예정입니다. 우리는 ArXiv에 카메라 지원 버전을 올렸습니다.
우리는 Hugging Face에 사전 훈련된 모델을 출시했습니다. 추론에 어떻게 활용하는지 확인해 보세요.
우리의 릴리스에는 이미지 전용 트리플렛을 기반으로 Stable Diffusion의 self-attention 레이어를 조정하는 작업이 포함됩니다.
이 구현은 Diffusers 라이브러리에 통합될 수 있는 예로 간주될 수 있습니다. 따라서 example/text_to_image/ 폴더로 이동하여 작동 방식을 알아볼 수 있습니다.
우리의 논문/코드/벤치마크가 도움이 된다면 다음 참고 자료와 함께 이 연구 결과를 인용하는 것을 고려해 보십시오.
@inproceedings{li2024safegen,
author = {Li, Xinfeng and Yang, Yuchen and Deng, Jiangyi and Yan, Chen and Chen, Yanjiao and Ji, Xiaoyu and Xu, Wenyuan},
title = {{SafeGen: Mitigating Sexually Explicit Content Generation in Text-to-Image Models}},
booktitle = {Proceedings of the 2024 {ACM} {SIGSAC} Conference on Computer and Communications Security (CCS)},
year = {2024},
}
또는
@article{li2024safegen,
title={{SafeGen: Mitigating Unsafe Content Generation in Text-to-Image Models}},
author={Li, Xinfeng and Yang, Yuchen and Deng, Jiangyi and Yan, Chen and Chen, Yanjiao and Ji, Xiaoyu and Xu, Wenyuan},
journal={arXiv preprint arXiv:2404.06666},
year={2024}
}
기본 구성으로 단일 A100-40GB(NVIDIA)를 사용하여 이 코드를 실행할 수 있습니다. 특히 메모리 부족 오류를 방지하려면 training_batch_size
작게 설정하세요.
종속성 충돌을 방지하려면 두 개의 Conda 환경을 관리하는 것이 좋습니다.
Stable Diffusion 모델의 self-attention 레이어와 평가 관련 라이브러리를 조정하기 위한 Pytorch 환경입니다.
데이터 준비 단계에서 안티 딥누드 모델에 필요한 Tensorflow 환경입니다.
# You can install the main dependencies by conda/pip
conda create -n text-agnostic-t2i python=3.8.5
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
# Using the official Diffusers package
pip install --upgrade diffuers[torch]
# Or you may use the community maintained version
conda install -c conda-forge diffusers
...
# Or you can create the env via environment.yaml
conda env create -f environment_pytorch.yaml
누드 방지 모델에는 TensorFlow 1.13이 필요하므로 Python<=3.7을 설치할 수 있습니다.
# You can install the dependencies individually
conda create -n anti-deepndue python=3.7
pip install tensorflow-gpu==1.13.1 keras==2.2.4
...
# Or you can create the env via environment.yaml
conda env create -f environment_tf.yaml
다음을 통해 <nude, mosaic> 쌍을 얻을 수 있습니다.
python anti-deepnude.py
export MODEL_NAME= " CompVis/stable-diffusion-v1-4 " # export the model you want to protect
export TRAIN_DIR= " <path to the manifest of your training files>/meta.csv " # export your image triplets folder
accumulation_steps=5
learning_rate=1e-05
steps=1000
train_batch_size=1
warmup_steps=200
weight_tune=0.1
weight_preserve=0.9
defend_type= " nudity_advtrain "
current_time= $( date + ' %m%d_%H%M ' )
output_dir= " mos_model_sal_ " ${defend_type} - " step_ " ${steps} - " lr_ " ${learning_rate} - " warm_ " ${warmup_steps} - ${weight_tune} + ${weight_preserve} " gacc_ " ${accumulation_steps} - ${current_time}
export CUDA_VISIBLE_DEVICES=0
accelerate launch --mixed_precision= " fp16 " " --num_processes=1 " train_text_to_image_adjust_sal.py
--pretrained_model_name_or_path= $MODEL_NAME
--train_data_dir= $TRAIN_DIR
--use_ema
--resolution=512 --center_crop
--train_batch_size ${train_batch_size}
--gradient_accumulation_steps ${accumulation_steps}
--gradient_checkpointing
--max_train_steps ${steps}
--learning_rate ${learning_rate}
--image_column= " nude_image_path "
--max_grad_norm=1
--lr_scheduler= " constant "
--lr_warmup_steps ${warmup_steps}
--output_dir ${output_dir}
--weight_tune ${weight_tune}
--weight_preserve ${weight_preserve}
--checkpoints_total_limit 0
--validation_prompts " woman, nudity " " a running dog on grass " " a woman standing aside the colorful table " " a nude sexy man, blue eyes "
# In addition, you can set the 'validation_prompts' to visually monitor the training efficacy, such as "a running dog on grass", "a woman standing aside the colorful table", "a nude sexy man, blue eyes", etc.
간단히 스크립트를 실행하면
run_adjust_SD.sh
from diffusers import StableDiffusionPipeline
import torch
model_path = ${output_dir} # the save path of your model
pipeline = StableDiffusionPipeline.from_pretrained(model_path, torch_dtype=torch.float16)
pipeline.to( " cuda " )
prompt = " a photo of an astronaut riding a horse on mars "
image = pipeline(prompt).images[0]
image.save( " example.png " )
무해해 보이는 자체 최적화 프롬프트를 포함하여 50,000개 이상의 텍스트적 적대적 프롬프트가 성적으로 노골적인 콘텐츠 생성 시 T2I 모델의 잠재적인 활용을 테스트하기 위해 개발되었습니다. 이러한 이미지의 민감한 특성으로 인해 윤리적 준수를 보장하기 위해 액세스가 제한됩니다. 학문적 목적으로 이러한 이미지를 사용하는 데 관심이 있는 연구자는 해당 이미지를 더 이상 배포하지 않을 것을 약속해야 합니다. 액세스를 요청하고 필요한 보호 조치에 대해 논의하려면 저에게 연락하십시오. 내 이메일 주소는 [email protected]입니다.
이 작업은 놀라운 연구 작업과 오픈 소스 프로젝트를 기반으로 합니다. 공유해 주신 모든 저자들에게 진심으로 감사드립니다!
@misc{von-platen-etal-2022-diffusers,
author = {Patrick von Platen and Suraj Patil and Anton Lozhkov and Pedro Cuenca and Nathan Lambert and Kashif Rasul and Mishig Davaadorj and Thomas Wolf},
title = {Diffusers: State-of-the-art diffusion models},
year = {2022},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = { url {https://github.com/huggingface/diffusers}}
}
안티딥누드
Clean-Fid
@inproceedings{parmar2021cleanfid,
title={On Aliased Resizing and Surprising Subtleties in GAN Evaluation},
author={Parmar, Gaurav and Zhang, Richard and Zhu, Jun-Yan},
booktitle={CVPR},
year={2022}
}
@inproceedings{zhang2018perceptual,
title={The Unreasonable Effectiveness of Deep Features as a Perceptual Metric},
author={Zhang, Richard and Isola, Phillip and Efros, Alexei A and Shechtman, Eli and Wang, Oliver},
booktitle={CVPR},
year={2018}
}