يحتوي هذا المستودع على قاعدة التعليمات البرمجية لنماذج الاتساق، التي تم تنفيذها باستخدام PyTorch لإجراء تجارب واسعة النطاق على ImageNet-64، وLSUN Bedroom-256، وLSUN Cat-256. لقد بنينا مستودعنا على نظام openai/guided-diffusion، والذي تم إصداره في البداية بموجب ترخيص MIT. لقد مكنت تعديلاتنا من دعم تقطير الاتساق، والتدريب على الاتساق، فضلا عن العديد من خوارزميات أخذ العينات والتحرير التي تمت مناقشتها في الورقة.
يوجد مستودع تجارب CIFAR-10 في JAX ويمكن العثور عليه على openai/consistency_models_cifar10.
لقد أصدرنا نقاط تفتيش للنماذج الرئيسية في الصحيفة. قبل استخدام هذه النماذج، يرجى مراجعة بطاقة الطراز المقابلة لفهم الاستخدام المقصود والقيود المفروضة على هذه النماذج.
فيما يلي روابط التنزيل لكل نقطة تفتيش نموذجية:
EDM على ImageNet-64: edm_imagenet64_ema.pt
قرص مضغوط على ImageNet-64 بمقياس l2: cd_imagenet64_l2.pt
قرص مضغوط على ImageNet-64 مع مقياس LPIPS: cd_imagenet64_lpips.pt
التصوير المقطعي على ImageNet-64: ct_imagenet64.pt
EDM على غرفة نوم LSUN-256: edm_bedroom256_ema.pt
قرص مضغوط على LSUN Bedroom-256 بمقياس l2: cd_bedroom256_l2.pt
قرص مضغوط على LSUN Bedroom-256 مع قياس LPIPS: cd_bedroom256_lpips.pt
CT على غرفة نوم LSUN-256: ct_bedroom256.pt
EDM على LSUN Cat-256: edm_cat256_ema.pt
قرص مضغوط على LSUN Cat-256 بمقياس l2: cd_cat256_l2.pt
قرص مضغوط على LSUN Cat-256 بمقياس LPIPS: cd_cat256_lpips.pt
الأشعة المقطعية على LSUN Cat-256: ct_cat256.pt
لتثبيت كافة الحزم في قاعدة التعليمات البرمجية هذه مع تبعياتها، قم بتشغيل
تثبيت النقطة -e .
للتثبيت باستخدام Docker، قم بتشغيل الأوامر التالية:
cd docker && make build && make run
نحن نقدم أمثلة على تدريب EDM، والتقطير المتسق، والتدريب المتسق، والتوليد بخطوة واحدة، والتوليد متعدد الخطوات في scripts/launch.sh.
لمقارنة النماذج التوليدية المختلفة، نستخدم FID، والدقة، والاستدعاء، ونقاط البداية. يمكن حساب جميع هذه المقاييس باستخدام مجموعات من العينات المخزنة في ملفات .npz
(numpy). يمكن للمرء تقييم العينات باستخدام cm/evaluations/evaluator.py بنفس الطريقة الموضحة في openai/guided-diffusion، مع توفير مجموعات البيانات المرجعية فيها.
يتم دعم نماذج الاتساق في؟ الناشرون عبر فئة ConsistencyModelPipeline
. أدناه نقدم مثالا:
استيراد الشعلة من الناشرين import ConsistencyModelPipelinedevice = "cuda"# قم بتحميل cd_imagenet64_l2 Checkpoint.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")# أخذ العينات بخطوة واحدة، إنشاء صور مشروطة للفئة# ImageNet-64 تتوافق تسمية الفئة 145 مع King penguinsclass_id = 145class_id = torch.tensor(class_id, dtype=torch.long)image = Pipe(num_inference_steps=1, class_labels=class_id).images[0]image.save("consistency_model_onestep_sample_penguin.png")# أخذ العينات متعدد الخطوات، إنشاء صور مشروطة للفئة# الخطوات الزمنية يمكن تحديدها صراحة؛ الخطوات الزمنية المحددة أدناه مأخوذة من Github repo الأصلي.# 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")
يمكنك تسريع عملية الاستدلال بشكل أكبر باستخدام torch.compile()
على pipe.unet
(مدعوم فقط من PyTorch 2.0). لمزيد من التفاصيل، يرجى مراجعة الوثائق الرسمية. وقد ساهم في هذا الدعم؟ الناشرون بواسطة dg845 و ayushtues.
إذا وجدت هذه الطريقة و/أو الكود مفيدًا، فيرجى مراعاة الاستشهاد به
@article{song2023consistency, title={Consistency Models}, Author={Song, Yang and Dhariwal, Prafulla and Chen, Mark and Sutskever, Ilya}, Journal={arXiv preprint arXiv:2303.01469}, year={2023}, }