
Saya secara teratur memperbarui basis kode ini. Harap kirimkan masalah jika Anda memiliki pertanyaan.
Dalam makalah kami, kami mengusulkan peta atribusi perhatian difusi (DAAM), pendekatan berbasis perhatian silang untuk menafsirkan difusi yang stabil. Lihat demo kami: https://huggingface.co/spaces/tetrisd/diffusion-attive-attribution-paps. Lihat dokumentasi kami, yang diselenggarakan oleh Github Pages, dan Colab Notebook kami, diperbarui untuk v0.1.0.
Pertama, instal Pytorch untuk platform Anda. Kemudian, instal DAAM dengan pip install daam , kecuali Anda ingin versi perpustakaan yang dapat diedit, dalam hal ini do git clone https://github.com/castorini/daam && pip install -e daam . Akhirnya, login menggunakan huggingface-cli login untuk mendapatkan banyak model difusi yang stabil-Anda harus mendapatkan token di huggingface.co.
Cukup jalankan daam-demo dalam cangkang dan navigasikan ke http: // localhost: 8080. Demo yang sama dengan yang ada di ruang pelukan akan muncul.
Daam dilengkapi dengan skrip generasi sederhana untuk orang -orang yang ingin dengan cepat mencobanya. Coba berlari
$ mkdir -p daam-test && cd daam-test
$ daam " A dog running across the field. "
$ ls
a.heat_map.png field.heat_map.png generation.pt output.png seed.txt
dog.heat_map.png running.heat_map.png prompt.txt Direktori kerja Anda saat ini sekarang akan berisi gambar yang dihasilkan sebagai output.png dan peta daam untuk setiap kata, serta beberapa data tambahan. Anda dapat melihat lebih banyak opsi untuk daam dengan menjalankan daam -h . Untuk menggunakan difusi stabil XL sebagai backend, jalankan daam --model xl-base-1.0 "Dog jumping" .
Impor dan gunakan daam sebagai berikut:
from daam import trace , set_seed
from diffusers import DiffusionPipeline
from matplotlib import pyplot as plt
import torch
model_id = 'stabilityai/stable-diffusion-xl-base-1.0'
device = 'cuda'
pipe = DiffusionPipeline . from_pretrained ( model_id , use_auth_token = True , torch_dtype = torch . float16 , use_safetensors = True , variant = 'fp16' )
pipe = pipe . to ( device )
prompt = 'A dog runs across the field'
gen = set_seed ( 0 ) # for reproducibility
with torch . no_grad ():
with trace ( pipe ) as tc :
out = pipe ( prompt , num_inference_steps = 50 , generator = gen )
heat_map = tc . compute_global_heat_map ()
heat_map = heat_map . compute_word_heat_map ( 'dog' )
heat_map . plot_overlay ( out . images [ 0 ])
plt . show ()Anda juga dapat membuat serialisasi dan deserialisasi peta daam dengan mudah:
from daam import GenerationExperiment , trace
with trace ( pipe ) as tc :
pipe ( 'A dog and a cat' )
exp = tc . to_experiment ( 'experiment-dir' )
exp . save () # experiment-dir now contains all the data and heat maps
exp = GenerationExperiment . load ( 'experiment-dir' ) # load the experiment Kami akan terus menambahkan dokumen. Sementara itu, periksa kelas GenerationExperiment , GlobalHeatMap , dan DiffusionHeatMapHooker , serta skrip contoh daam/run/*.py Anda dapat mengunduh dataset Coco-Gen dari kertas di http://ralphtang.com/coco-gen.tar.gz. Jika mengklik tautan tidak berfungsi di browser Anda, salin dan tempel di tab baru, atau gunakan utilitas CLI seperti wget .
Daam-i2i, perpanjangan daam ke atribusi gambar-ke-gambar.
Video Furkan tentang dengan mudah memulai dengan Daam.
Video 1LittLecoder untuk demonstrasi kode dan notebook Colab dari DAAM versi yang lebih lama.
@inproceedings{tang2023daam,
title = "What the {DAAM}: Interpreting Stable Diffusion Using Cross Attention",
author = "Tang, Raphael and
Liu, Linqing and
Pandey, Akshat and
Jiang, Zhiying and
Yang, Gefei and
Kumar, Karun and
Stenetorp, Pontus and
Lin, Jimmy and
Ture, Ferhan",
booktitle = "Proceedings of the 61st Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)",
year = "2023",
url = "https://aclanthology.org/2023.acl-long.310",
}