此儲存庫包含一致性模型的程式碼庫,使用 PyTorch 實現,用於在 ImageNet-64、LSUN Bedroom-256 和 LSUN Cat-256 上進行大規模實驗。我們的儲存庫是基於 openai/guided-diffusion,它最初是在 MIT 許可證下發布的。我們的修改支持了一致性蒸餾、一致性訓練以及本文中討論的幾種採樣和編輯演算法。
CIFAR-10 實驗的儲存庫位於 JAX 中,可以在 openai/consistency_models_cifar10 中找到。
我們已經發布了論文中主要模型的檢查點。在使用這些模型之前,請查看相應的模型卡以了解這些模型的預期用途和限制。
以下是每個模型檢查點的下載連結:
ImageNet-64 上的 EDM:edm_imagenet64_ema.pt
ImageNet-64 上的 CD,具有 l2 指標:cd_imagenet64_l2.pt
ImageNet-64 上的 CD,具有 LPIPS 指標:cd_imagenet64_lpips.pt
ImageNet-64 上的 CT:ct_imagenet64.pt
LSUN Bedroom-256 上的 EDM:edm_bedroom256_ema.pt
LSUN Bedroom-256 上的 CD,具有 l2 指標:cd_bedroom256_l2.pt
LSUN Bedroom-256 上的 CD,具有 LPIPS 指標:cd_bedroom256_lpips.pt
LSUN Bedroom-256 上的 CT:ct_bedroom256.pt
LSUN Cat-256 上的 EDM:edm_cat256_ema.pt
LSUN Cat-256 上有 l2 指標的 CD:cd_cat256_l2.pt
LSUN Cat-256 上的 CD,具有 LPIPS 指標:cd_cat256_lpips.pt
LSUN Cat-256 上的 CT:ct_cat256.pt
若要安裝此程式碼庫中的所有套件及其依賴項,請執行
pip install -e 。
若要使用 Docker 安裝,請執行以下命令:
cd docker && make build && make run
我們在scripts/launch.sh中提供了EDM訓練、一致性蒸餾、一致性訓練、單步生成和多步驟生成的範例。
為了比較不同的生成模型,我們使用 FID、精確度、召回率和初始分數。這些指標都可以使用.npz
(numpy) 檔案中儲存的批量樣本來計算。人們可以使用 cm/evaluations/evaluator.py 以與 openai/guided-diffusion 中描述的相同方式評估樣本,其中提供了參考資料集批次。
支援一致性模型?透過ConsistencyModelPipeline
類別的擴散器。下面我們提供一個例子:
import torchfrom differs import ConsistencyModelPipelinedevice = "cuda"# 載入 cd_imagenet64_l2 checkpoint.model_id_or_path = "openai/diffusers-cd_imagenet64_l2"pipe = ConsistencyModelPiped. .to(device)# 一步採樣image = pipeline( num_inference_steps=1).images[0]image.save("consistency_model_onestep_sample.png")#一步採樣,類別條件影像產生#ImageNet-64類別標籤145對應王企鵝類.long)image = pipeline(num_inference_steps=1, class_labels=class_id).images[0]image.save("consistency_model_onestep_sample_penguin.png")# 多步驟取樣,類別條件影像產生# 時間步長可以明確指定;以下的特定時間步長來自原始的Github 儲存庫。 class_id) .images[0]image.save("consistency_model_multistep_sample_penguin.png")
您可以透過在pipe.unet
上使用torch.compile()
進一步加快推理過程(僅 PyTorch 2.0 支援)。更多詳情請查看官方文件。這種支持是出於什麼目的? dg845 和 ayushtues 的擴散器。
如果您發現此方法和/或程式碼有用,請考慮引用
@article{song2023consistency,title={一致性模型},作者={Song,Yang和Dhariwal,Prafulla和Chen,Mark和Sutskever,Ilya},journal={arXiv預印本arXiv:2303.01469}, }