Home
Login

التحكم الدقيق في توليد الصور من النص من خلال إضافة شروط إضافية للتحكم في بنية الشبكة العصبية لنموذج الانتشار.

Apache-2.0Python 32.6klllyasvielControlNet Last Updated: 2024-02-25

نظرة عامة على مشروع ControlNet

ControlNet هو بنية شبكة عصبية ثورية تم تطويرها بواسطة lllyasviel للتحكم في نماذج الانتشار عن طريق إضافة شروط إضافية. هذا المشروع هو التنفيذ الرسمي للورقة البحثية "إضافة تحكم شرطي إلى نماذج انتشار النص إلى صورة"، مما يوفر قدرات تحكم دقيقة غير مسبوقة في مجال توليد الصور من النص.

المبادئ التقنية الأساسية

البنية الأساسية

يعمل ControlNet عن طريق نسخ أوزان كتل الشبكة العصبية إلى نسخ "مؤمنة" ونسخ "قابلة للتدريب". الفكرة الأساسية لهذا التصميم هي:

  • النسخ المؤمنة: تحافظ على أوزان النموذج الأصلي دون تغيير، مما يضمن قدرة النموذج على التوليد.
  • النسخ القابلة للتدريب: تتعلم التحكم الشرطي المحدد من قبل المستخدم، مما يحقق تحكمًا مكانيًا دقيقًا.

آلية العمل

يضيف ControlNet بُعد تحكم شرطي إضافي إلى مطالبات النص التقليدية، مما يسمح للمستخدمين بتوجيه عملية توليد الصور بعدة طرق، بما في ذلك:

  • اكتشاف الحواف (Canny Edge)
  • تقدير العمق (Midas Depth)
  • التحكم في الوضعية (OpenPose)
  • خريطة المتجهات العادية (Normal Map)
  • اكتشاف الخطوط (M-LSD Line Detection)
  • اكتشاف الحواف الناعمة (HED Edge Detection)

الخصائص الرئيسية

1. شروط تحكم متنوعة

يدعم المشروع مجموعة متنوعة من نماذج التحكم المدربة مسبقًا:

# أمثلة على أنواع التحكم المدعومة
control_types = [
    "canny",           # اكتشاف الحواف
    "depth",           # تقدير العمق
    "hed",             # اكتشاف الحواف الناعمة
    "mlsd",            # اكتشاف الخطوط
    "normal",          # المتجهات العادية
    "openpose",        # اكتشاف الوضعية
    "scribble",        # التحكم بالخربشة
    "seg",             # التقسيم الدلالي
]

2. آلية تدريب فعالة

عملية تعلم ControlNet هي عملية شاملة، وحتى في حالة وجود مجموعة بيانات تدريب صغيرة (<50k)، فإن عملية التعلم قوية. سرعة تدريب ControlNet سريعة مثل ضبط نماذج الانتشار، ويمكن حتى إجراؤها على الأجهزة الشخصية.

3. التحكم في الاتساق المكاني

يكمن الجانب الثوري في 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
)

سيناريوهات التطبيق

1. الإبداع الفني

  • تحكم دقيق في تكوين الصورة
  • الحفاظ على هيكل حواف محدد
  • تقليد أسلوب فني معين

2. مجال التصميم

  • رسومات تخطيطية لتصميم المنتج إلى صور معروضة
  • تصور التصميم المعماري
  • مساعدة في تصميم واجهة المستخدم/تجربة المستخدم

3. إنشاء المحتوى

  • توليد محتوى وسائل التواصل الاجتماعي
  • إنتاج المواد الإعلانية
  • إنشاء أصول الألعاب

المزايا التقنية

1. تحكم دقيق

بالمقارنة مع نماذج النص إلى صورة التقليدية، يوفر ControlNet قدرة تحكم دقيقة على مستوى البكسل.

2. مرونة

يدعم الاستخدام المشترك لشروط تحكم متعددة، مما يمكن من تحقيق احتياجات معقدة لتوليد الصور.

3. سهولة التكامل

تم ربط كود المشروع بـ 🤗 Hub، ويمكن دمجه بسهولة في سير العمل الحالي.

4. نظام بيئي مفتوح المصدر

المشروع مفتوح المصدر بالكامل، ولديه دعم مجتمعي نشط وتحديثات مستمرة.

تطور الإصدار

ControlNet 1.0

  • تنفيذ البنية الأساسية
  • دعم شروط التحكم الأساسية

ControlNet 1.1

يوفر إصدارًا ليليًا وملفات نموذج محسنة، تتضمن أداءً أفضل ووظائف إضافية.

التثبيت والاستخدام

متطلبات البيئة

# التبعيات الأساسية
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 تعريف إمكانيات الإبداع المدعوم بالذكاء الاصطناعي.

Star History Chart