تصویر و ویدیو

ControlNet — کنترل دقیق Stable Diffusion

ControlNet — کنترل دقیق Stable Diffusion — راهنمای فارسی از مجموعهٔ «تصویر و ویدیو» در وبلاگ آیرا. بازنویسی‌شده با تمرکز روی کاربر ایرانی و روایت شناخت پیوسته.

نوشتهٔ به‌روزرسانی: ۴ دقیقه مطالعه
تصویر مقالهٔ ControlNet — کنترل دقیق Stable Diffusion

یکی از بزرگترین ضعف‌های اولیهٔ Stable Diffusion اینه بود: خروجی‌ها تصادفی‌ان. می‌تونستی بگی «یه زن ایستاده کنار پنجره» و ده تا نتیجهٔ کاملاً متفاوت بگیری — هر بار پوز متفاوت، ترکیب‌بندی متفاوت، نور متفاوت. برای طراحی، illustration، یا هر کار حرفه‌ای این یه مشکل جدی‌ه. ControlNet دقیقاً این مشکل رو حل کرد.

ControlNet چیه؟

ControlNet یه معماری neural network‌ه که روی Stable Diffusion سوار می‌شه و بهت اجازه می‌ده فرم و ساختار تصویر رو کنترل کنی — نه فقط محتوا رو.

به جای اینکه فقط text prompt بدی، یه تصویر راهنما هم می‌دی. ControlNet اون تصویر راهنما رو parse می‌کنه و مطمئن می‌شه که خروجی Stable Diffusion ساختار اون تصویر رو حفظ کنه — حتی اگه سبک، رنگ، و محتوا کاملاً متفاوت باشه.

مقاله‌ٔ اصلی ControlNet در فوریهٔ ۲۰۲۳ توسط Lvmin Zhang و Maneesh Agrawala منتشر شد و خیلی زود به یکی از پرکاربردترین extension های Stable Diffusion تبدیل شد.

انواع condition در ControlNet

ControlNet با انواع مختلفی از تصویر راهنما کار می‌کنه. هر کدوم برای یه کاربرد خاص طراحی شدن:

Canny Edge Detection از تصویری که داری، لبه‌های تیز و outline ها رو استخراج می‌کنه. می‌تونی با این کنترل کنی که ساختار کلی تصویر خروجی چقدر به تصویر ورودی شبیه باشه — بدون اینکه رنگ یا سبک کپی بشه.

کاربرد: تبدیل یه طرح اولیه به یه تصویر کامل با سبک متفاوت.

OpenPose نقاط کلیدی بدن انسان رو تشخیص می‌ده — سر، شانه، آرنج، مچ دست، و غیره. خروجی یه skeleton‌ه که ControlNet ازش برای کنترل پوز دقیق استفاده می‌کنه.

کاربرد: می‌خوای یه شخصیت با پوز خاص بسازی؟ از یه عکس مرجع پوز بگیر، سبک دلخواهت رو در prompt بزن.

Depth Map عمق صحنه رو استخراج می‌کنه — چی جلوست، چی عقبه. ConstructNet از این برای حفظ ترکیب‌بندی فضایی استفاده می‌کنه.

کاربرد: داری یه صحنه restyling می‌کنی و می‌خوای تناسبات فضایی حفظ بشه.

Normal Map اطلاعات سطح سه‌بعدی رو encode می‌کنه. برای حفظ جزئیات سطح اشیاء مثل چهره یا مجسمه مفیده.

Scribble یه نقاشی خیلی خشن و ساده رو به عنوان راهنما می‌گیره. برای کسایی که می‌خوان ایده رو سریع sketch کنن و بدن به AI که جزئیات بزنه.

Seg (Semantic Segmentation) نقشهٔ semantic از صحنه می‌خواد — این بخش آسمانه، این بخش زمینه، این درخت. AI دقیقاً همون layout رو با محتوای دیگه پر می‌کنه.

IP-Adapter (Image Prompt Adapter) یه extension مرتبط (نه دقیقاً ControlNet) که بهت اجازه می‌ده style یا identity یه تصویر رو به عنوان reference بدی. مثلاً صورت یه شخص رو بدی و AI همون صورت رو در سبک‌های مختلف بسازه.

چطور کار می‌کنه — ساده‌شده

ControlNet یه کپی از encoder بخش U-Net در Stable Diffusion رو می‌گیره و یه مسیر جداگانه برای پردازش تصویر condition می‌سازه. این دو مسیر در لایه‌های مختلف با هم ترکیب می‌شن.

نکتهٔ هوشمندانه اینه که وزن‌های اصلی Stable Diffusion دست نمی‌خورن — ControlNet فقط «اطلاعات اضافه» تزریق می‌کنه. این یعنی می‌تونی ControlNet رو روی هر checkpoint‌ای از SD استفاده کنی بدون اینکه model اصلی رو خراب کنی.

کجا می‌شه استفاده کرد؟

ComfyUI: قدرتمندترین محیط برای کار با ControlNet. یه workflow node-based داری که می‌تونی چند ControlNet رو همزمان با هم combine کنی. یادگیری اولیه‌اش سخت‌تره ولی خروجی‌های حرفه‌ای‌تری می‌ده.

AUTOMATIC1111 (A1111): رابط web معروف SD که extension رسمی ControlNet داره. نسبت به ComfyUI راحت‌تره ولی انعطاف کمتری داره.

Stable Diffusion WebUI Forge: یه fork از A1111 که عملکرد بهتر و پشتیبانی native‌تری از ControlNet داره.

Fooocus: یه UI ساده‌تر که برای کاربران تازه‌کار طراحی شده و ControlNet رو به صورت integrated داره.

سرویس‌های آنلاین: Civitai، Tensor.art، و چند سرویس دیگه ControlNet رو آنلاین support می‌کنن — بدون نیاز به نصب local.

یه مثال عملی

فرض کن داری یه character sheet برای یه بازی یا انیمیشن طراحی می‌کنی. می‌خوای همون شخصیت رو در ۴ پوز مختلف داشته باشی.

روش بدون ControlNet: هر بار prompt می‌دی و امیدوار می‌شی. شخصیت هر بار متفاوت می‌شه.

روش با ControlNet (OpenPose): ۱. از هر پوز مورد نظر یه reference عکس پیدا می‌کنی (می‌تونه خودت باشی، یه منبا آنلاین، یه 3D pose tool) ۲. OpenPose از اون عکس skeleton استخراج می‌کنه ۳. همون prompt که شخصیت رو توصیف می‌کنه رو می‌زنی ۴. خروجی: همون شخصیت، دقیقاً در اون پوز

این workflow برای character design، storyboard، fashion design، و خیلی موارد دیگه استفاده می‌شه.

محدودیت‌های واقعی

نیاز به GPU داری: ControlNet یه لایهٔ اضافه روی SD اضافه می‌کنه. مصرف VRAM بالا می‌ره. برای کار راحت حداقل ۸ GB VRAM نیاز داری (با optimization می‌شه با ۶ GB هم کار کرد).

پیچیدگی workflow: ترکیب چند ControlNet با هم و fine-tune کردن وزن هر کدوم نیاز به تجربه داره.

کیفیت condition مهمه: اگه تصویر راهنما کیفیت پایینی داشته باشه یا pose extractor اشتباه تشخیص بده، خروجی هم ایراد می‌گیره.

مدل-وابسته: یه ControlNet که برای SD 1.5 train شده با SDXL کار نمی‌کنه. باید نسخهٔ درست رو استفاده کنی.

ControlNet در مقابل ابزارهای جدیدتر

در سال ۲۰۲۴-۲۰۲۵، بعضی قابلیت‌های ControlNet توی مدل‌های جدیدتر built-in شدن:

  • Flux.1 از قابلیت‌های IP-Adapter مشابه support می‌کنه
  • SDXL Turbo و Lightning سرعت generation رو بالا بردن ولی ControlNet compatibility شون محدودتره
  • Midjourney v6 با --cref و --sref کنترل reference image داره — ولی کنترل کمتری نسبت به ControlNet

با این حال ControlNet هنوز استاندارد صنعتی برای کنترل دقیق در Stable Diffusion ecosystem‌ه — به خصوص در workflow های حرفه‌ای که نیاز به repeatable خروجی دارن.

همچنین بخوان

#تصویر و ویدیو

ادامهٔ مسیر

همهٔ مقاله‌ها ←

بیشتر در «تصویر و ویدیو»