مكتبة نماذج الانتشار المتقدمة تدعم إنشاء الصور والفيديو والصوت
🤗 مقدمة تفصيلية لمشروع Diffusers
نظرة عامة على المشروع
🤗 Diffusers هي مكتبة نماذج الانتشار الأكثر تطوراً التي طورتها Hugging Face، وهي متخصصة في إنشاء الصور والصوت وحتى الهياكل ثلاثية الأبعاد الجزيئية. سواء كنت تبحث عن حلول استنتاج بسيطة أو تدريب نماذج الانتشار الخاصة بك، فإن 🤗 Diffusers هي مجموعة أدوات معيارية تدعم كليهما.
عنوان المشروع: https://github.com/huggingface/diffusers
الميزات الأساسية
فلسفة التصميم
- العملية تفوق الأداء (usability over performance)
- البساطة تفوق السهولة (simple over easy)
- القابلية للتخصيص تفوق التجريدات (customizability over abstractions)
ثلاثة مكونات أساسية
خطوط أنابيب الانتشار الأكثر تطوراً (Diffusion Pipelines)
- تشغيل الاستنتاج ببضعة أسطر فقط من التعليمات البرمجية
- دعم مهام إنشاء متعددة
جداول الضوضاء القابلة للتبديل (Noise Schedulers)
- دعم سرعات انتشار مختلفة
- جودة إخراج قابلة للتعديل
نماذج مدربة مسبقاً (Pretrained Models)
- يمكن استخدامها ككتل بناء
- يتم دمجها مع الجدولة لإنشاء نظام انتشار شامل
طريقة التثبيت
إصدار PyTorch
# الحزمة الرسمية
pip install --upgrade diffusers[torch]
# إصدار conda الذي يحتفظ به المجتمع
conda install -c conda-forge diffusers
إصدار Flax
pip install --upgrade diffusers[flax]
بداية سريعة
إنشاء نص إلى صورة
from diffusers import DiffusionPipeline
import torch
pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16)
pipeline.to("cuda")
pipeline("An image of a squirrel in Picasso style").images[0]
نظام انتشار مخصص
from diffusers import DDPMScheduler, UNet2DModel
from PIL import Image
import torch
scheduler = DDPMScheduler.from_pretrained("google/ddpm-cat-256")
model = UNet2DModel.from_pretrained("google/ddpm-cat-256").to("cuda")
scheduler.set_timesteps(50)
sample_size = model.config.sample_size
noise = torch.randn((1, 3, sample_size, sample_size), device="cuda")
input = noise
for t in scheduler.timesteps:
with torch.no_grad():
noisy_residual = model(input, t).sample
prev_noisy_sample = scheduler.step(noisy_residual, t, input).prev_sample
input = prev_noisy_sample
image = (input / 2 + 0.5).clamp(0, 1)
image = image.cpu().permute(0, 2, 3, 1).numpy()[0]
image = Image.fromarray((image * 255).round().astype("uint8"))
image
المهام والنماذج الرئيسية المدعومة
مهمة | خط الأنابيب | النموذج الموصى به |
---|---|---|
إنشاء صور غير مشروط | DDPMPipeline | google/ddpm-ema-church-256 |
نص إلى صورة | StableDiffusionPipeline | stable-diffusion-v1-5/stable-diffusion-v1-5 |
نص إلى صورة (unCLIP) | UnCLIPPipeline | kakaobrain/karlo-v1-alpha |
نص إلى صورة (DeepFloyd IF) | IFPipeline | DeepFloyd/IF-I-XL-v1.0 |
نص إلى صورة (Kandinsky) | KandinskyPipeline | kandinsky-community/kandinsky-2-2-decoder |
إنشاء قابل للتحكم | StableDiffusionControlNetPipeline | lllyasviel/sd-controlnet-canny |
تحرير الصور | StableDiffusionInstructPix2PixPipeline | timbrooks/instruct-pix2pix |
صورة إلى صورة | StableDiffusionImg2ImgPipeline | stable-diffusion-v1-5/stable-diffusion-v1-5 |
ترميم الصور | StableDiffusionInpaintPipeline | runwayml/stable-diffusion-inpainting |
متغيرات الصور | StableDiffusionImageVariationPipeline | lambdalabs/sd-image-variations-diffusers |
دقة فائقة للصور | StableDiffusionUpscalePipeline | stabilityai/stable-diffusion-x4-upscaler |
دقة فائقة كامنة | StableDiffusionLatentUpscalePipeline | stabilityai/sd-x2-latent-upscaler |
هيكل الوثائق
نوع الوثيقة | محتوى التعلم |
---|---|
Tutorial | تعلم المهارات الأساسية للمكتبة، مثل استخدام النماذج والجداول الزمنية لبناء نظام انتشار، وتدريب نماذج الانتشار الخاصة بك |
Loading | كيفية تحميل وتكوين جميع مكونات المكتبة (خطوط الأنابيب والنماذج والجداول الزمنية)، وكيفية استخدام جداول زمنية مختلفة |
Pipelines for inference | كيفية استخدام خطوط الأنابيب لمهام استنتاج مختلفة، وإنشاء دفعات، والتحكم في مخرجات الإنشاء والعشوائية |
Optimization | كيفية تحسين خطوط الأنابيب للتشغيل على أجهزة ذات ذاكرة محدودة، وتسريع الاستنتاج |
Training | كيفية تدريب نماذج الانتشار الخاصة بك لمهام مختلفة |
النظام البيئي للمجتمع
المشاريع المتكاملة
- Microsoft TaskMatrix
- InvokeAI
- InstantID
- Apple ML Stable Diffusion
- Lama Cleaner
- Grounded Segment Anything
- Stable DreamFusion
- DeepFloyd IF
- BentoML
- Kohya_ss
ملخص
🤗 Diffusers هي واحدة من أكثر مكتبات نماذج الانتشار اكتمالاً وسهولة في الاستخدام حالياً. فهي لا توفر فقط مجموعة غنية من النماذج وخطوط الأنابيب المدربة مسبقاً، ولكنها تدعم أيضاً التدريب والتخصيص والتحسين. سواء كنت باحثاً في مجال الذكاء الاصطناعي أو مطوراً أو مبدعاً، يمكنك العثور على الأدوات التي تحتاجها في هذه المكتبة لتنفيذ تطبيقات الذكاء الاصطناعي التوليدية المختلفة.