Repositori ini berisi basis kode untuk Model Konsistensi, yang diimplementasikan menggunakan PyTorch untuk melakukan eksperimen skala besar pada ImageNet-64, LSUN Bedroom-256, dan LSUN Cat-256. Kami mendasarkan repositori kami pada openai/guided-diffusion, yang awalnya dirilis di bawah lisensi MIT. Modifikasi kami telah memungkinkan dukungan untuk distilasi konsistensi, pelatihan konsistensi, serta beberapa algoritma pengambilan sampel dan pengeditan yang dibahas dalam makalah ini.
Repositori eksperimen CIFAR-10 ada di JAX dan dapat ditemukan di openai/consistency_models_cifar10.
Kami telah merilis pos pemeriksaan untuk model utama di koran. Sebelum menggunakan model ini, harap tinjau kartu model terkait untuk memahami tujuan penggunaan dan batasan model ini.
Berikut ini link download masing-masing model checkpoint:
EDM di ImageNet-64: edm_imagenet64_ema.pt
CD di ImageNet-64 dengan metrik l2: cd_imagenet64_l2.pt
CD di ImageNet-64 dengan metrik LPIPS: cd_imagenet64_lpips.pt
CT pada ImageNet-64: ct_imagenet64.pt
EDM di LSUN Kamar Tidur-256: edm_bedroom256_ema.pt
CD di LSUN Bedroom-256 dengan metrik l2: cd_bedroom256_l2.pt
CD pada LSUN Bedroom-256 dengan metrik LPIPS: cd_bedroom256_lpips.pt
CT di LSUN Kamar Tidur-256: ct_bedroom256.pt
EDM di LSUN Cat-256: edm_cat256_ema.pt
CD pada LSUN Cat-256 dengan metrik l2: cd_cat256_l2.pt
CD pada LSUN Cat-256 dengan metrik LPIPS: cd_cat256_lpips.pt
CT pada LSUN Cat-256: ct_cat256.pt
Untuk menginstal semua paket dalam basis kode ini beserta dependensinya, jalankan
instalasi pip -e .
Untuk menginstal dengan Docker, jalankan perintah berikut:
cd buruh pelabuhan && buat build && jalankan
Kami memberikan contoh pelatihan EDM, distilasi konsistensi, pelatihan konsistensi, generasi satu langkah, dan generasi multistep di scripts/launch.sh.
Untuk membandingkan model generatif yang berbeda, kami menggunakan FID, Precision, Recall, dan Inception Score. Semua metrik ini dapat dihitung menggunakan kumpulan sampel yang disimpan dalam file .npz
(numpy). Seseorang dapat mengevaluasi sampel dengan cm/evaluations/evaluator.py dengan cara yang sama seperti yang dijelaskan dalam openai/guided-diffusion, dengan kumpulan kumpulan data referensi yang disediakan di dalamnya.
Model konsistensi didukung di ? diffuser melalui kelas ConsistencyModelPipeline
. Di bawah ini kami berikan contohnya:
import torchfrom diffusers import ConsistencyModelPipelinedevice = "cuda"# Muat pos pemeriksaan cd_imagenet64_l2.model_id_or_path = "openai/diffusers-cd_imagenet64_l2"pipe = ConsistencyModelPipeline.from_pretrained(model_id_or_path, torch_dtype=torch.float16)pipe.to(device)# Onestep Samplingimage = pipe(num_inference_steps=1).images[0]image.save("consistency_model_onestep_sample.png")# Pengambilan sampel satu langkah, pembuatan gambar bersyarat kelas# Label kelas ImageNet-64 145 sesuai dengan penguin rajaclass_id = 145class_id = torch.tensor( class_id, dtype=torch.long)image = pipa(num_inference_steps=1, class_labels=class_id).images[0]image.save("consistency_model_onestep_sample_penguin.png")# Pengambilan sampel multilangkah, pembuatan gambar bersyarat kelas# Langkah waktu dapat ditentukan secara eksplisit; langkah waktu tertentu di bawah ini berasal dari repo Github asli.# https://github.com/openai/consistency_models/blob/main/scripts/launch.sh#L77image = pipe(timesteps=[22, 0], class_labels=class_id) .images[0]image.save("consistency_model_multistep_sample_penguin.png")
Anda dapat lebih mempercepat proses inferensi dengan menggunakan torch.compile()
di pipe.unet
(hanya didukung dari PyTorch 2.0). Untuk lebih jelasnya, silakan lihat dokumentasi resmi. Dukungan ini disumbangkan ke ? diffuser oleh dg845 dan ayushtues.
Jika Anda merasa metode dan/atau kode ini bermanfaat, harap pertimbangkan untuk mengutip
@article{song2023consistency, title={Consistency Models}, author={Song, Yang dan Dhariwal, Prafulla dan Chen, Mark dan Sutskever, Ilya}, journal={arXiv preprint arXiv:2303.01469}, year={2023}, }