ControlNet هو بنية شبكة عصبية ثورية تم تطويرها بواسطة lllyasviel للتحكم في نماذج الانتشار عن طريق إضافة شروط إضافية. هذا المشروع هو التنفيذ الرسمي للورقة البحثية "إضافة تحكم شرطي إلى نماذج انتشار النص إلى صورة"، مما يوفر قدرات تحكم دقيقة غير مسبوقة في مجال توليد الصور من النص.
يعمل ControlNet عن طريق نسخ أوزان كتل الشبكة العصبية إلى نسخ "مؤمنة" ونسخ "قابلة للتدريب". الفكرة الأساسية لهذا التصميم هي:
يضيف ControlNet بُعد تحكم شرطي إضافي إلى مطالبات النص التقليدية، مما يسمح للمستخدمين بتوجيه عملية توليد الصور بعدة طرق، بما في ذلك:
يدعم المشروع مجموعة متنوعة من نماذج التحكم المدربة مسبقًا:
# أمثلة على أنواع التحكم المدعومة
control_types = [
"canny", # اكتشاف الحواف
"depth", # تقدير العمق
"hed", # اكتشاف الحواف الناعمة
"mlsd", # اكتشاف الخطوط
"normal", # المتجهات العادية
"openpose", # اكتشاف الوضعية
"scribble", # التحكم بالخربشة
"seg", # التقسيم الدلالي
]
عملية تعلم ControlNet هي عملية شاملة، وحتى في حالة وجود مجموعة بيانات تدريب صغيرة (<50k)، فإن عملية التعلم قوية. سرعة تدريب ControlNet سريعة مثل ضبط نماذج الانتشار، ويمكن حتى إجراؤها على الأجهزة الشخصية.
يكمن الجانب الثوري في ControlNet في أنه يحل مشكلة الاتساق المكاني، مما يوفر مستوى تحكم غير مسبوق في توليد الصور بالذكاء الاصطناعي.
تشمل المكونات الرئيسية للمشروع:
ControlNet/
├── models/ # تعريفات النموذج
├── annotator/ # كاشفات الشروط المختلفة
├── tutorials/ # دروس وأمثلة
├── gradio_*.py # ملفات واجهة Gradio
└── train.py # برنامج التدريب النصي
# مثال أساسي على الاستخدام
from transformers import pipeline
# تحميل مسار ControlNet
pipe = pipeline("text-to-image", model="lllyasviel/sd-controlnet-canny")
# توليد صورة
result = pipe(
prompt="منظر طبيعي جميل",
image=control_image, # صورة شرط التحكم
num_inference_steps=50
)
بالمقارنة مع نماذج النص إلى صورة التقليدية، يوفر ControlNet قدرة تحكم دقيقة على مستوى البكسل.
يدعم الاستخدام المشترك لشروط تحكم متعددة، مما يمكن من تحقيق احتياجات معقدة لتوليد الصور.
تم ربط كود المشروع بـ 🤗 Hub، ويمكن دمجه بسهولة في سير العمل الحالي.
المشروع مفتوح المصدر بالكامل، ولديه دعم مجتمعي نشط وتحديثات مستمرة.
يوفر إصدارًا ليليًا وملفات نموذج محسنة، تتضمن أداءً أفضل ووظائف إضافية.
# التبعيات الأساسية
pip install torch torchvision
pip install transformers diffusers
pip install controlnet-aux # حزمة الأدوات المساعدة
# استخدام مكتبة Hugging Face Diffusers
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel
import torch
# تحميل نموذج ControlNet
controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-canny")
# إنشاء مسار
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
controlnet=controlnet,
torch_dtype=torch.float16
)
يمثل ControlNet اختراقًا كبيرًا في تقنية توليد الصور من النص، فهو لا يحل فقط مشكلة الافتقار إلى التحكم الدقيق في الطرق التقليدية، بل يوفر أيضًا أدوات قوية للمبدعين والمطورين. من خلال تصميمه المعماري المبتكر وشروط التحكم الغنية، يعيد ControlNet تعريف إمكانيات الإبداع المدعوم بالذكاء الاصطناعي.