توانایی تولید تصویر با هوش مصنوعی به ما امکان میدهد با استفاده از توصیفات متنی، تصاویر خیره کننده ای خلق کنیم. انتشار مدل «پخش پایدار» (Stable Diffusion) نقطه عطفی مهم در این پیشرفت محسوب میشود، زیرا مدلی با عملکرد بالا (از نظر کیفیت تصویر، سرعت و نیاز به منابع/حافظهی نسبتاً کم) را در دسترس عموم قرار داد.
پس از آزمایش تولید تصویر هوش مصنوعی، ممکن است تعجب کنید که این مدلها چگونه کار می کند.
این یک مقدمه ساده برای توضیح نحوه عملکرد Stable Diffusion است.
Stable Diffusion از این جهت همه کاره است که می توان از آن به روش های مختلف استفاده کرد. بیایید ابتدا روی تولید تصویر فقط از متن تمرکز کنیم (text2img). تصویر بالا نمونه ای از ورودی متن و تصویر تولید شده را نشان می دهد. به غیر از متن به تصویر، یکی دیگر از راه های استفاده از آن تغییر تصاویر است (بنابراین ورودیها متن + تصویر هستند).
بیایید به مدل نگاهی بیاندازیم، چون به ما کمک می کند تا اجزای تشکیل دهنده، نحوهی تعامل آنها و معنای گزینهها و پارامترهای تولید تصویر را بهتر درک کنیم.
اجزای تشکیل دهندهی «پخش پایدار» (Stable Diffusion) یک سیستم متشکل از چندین جزء و مدل است و یک مدل یکپارچه نیست.
وقتی جزئیات مدل را نگاه می کنیم، اولین چیزی که متوجه می شویم وجود یک جزء «درک متن» است که اطلاعات متنی را به یک نمایش عددی که مفاهیم متن را در خود جای داده است، ترجمه می کند.
حال با یک دید کلی از مدل شروع میکنیم و در ادامه به جزئیات بیشتر میپردازیم. با این حال، میتوانیم بگوییم که این "کدگذار متن" یک مدل زبان ویژهی "ترانسفورمر" است (از نظر فنی: کدگذار متن مدل CLIP). این بخش، متن ورودی را دریافت میکند و فهرستی از اعداد را خروجی میدهد که هر کلمه/توکن موجود در متن را نشان میدهد (یک بردار برای هر توکن).
سپس این اطلاعات به مولد تصویر (Image Generator) داده می شود که خود از چند جزء تشکیل شده است.
مولد تصویر دو مرحله را طی می کند:
این بخش راز موفقیت Stable Diffusion است. دلیل اصلی بهبود عملکرد آن نسبت به مدلهای قبلی همین بخش است.
این بخش برای تولید اطلاعات تصویر، چندین مرحله را طی میکند که همان پارامتر "steps" در رابطها و کتابخانههای Stable Diffusion است که معمولا مقدار پیشفرض آن ۵۰ یا ۱۰۰ است.
خالق اطلاعات تصویر بطور کامل در "فضای اطلاعات تصویر image information space" (یا "فضای نهفته latent space") کار میکند. در ادامهی مقاله به معنای دقیق این فضا خواهیم پرداخت. این ویژگی باعث میشود که این بخش نسبت به مدلهای دیفیوژن قبلی که در "فضای پیکسل" کار میکردند، سریعتر باشد. از لحاظ فنی، این بخش از یک شبکهی عصبی U-Net و یک الگوریتم زمانبندی تشکیل شده است.
کلمهی "انتشار" (diffusion) به فرآیندی که در این بخش اتفاق میافتد اشاره دارد. این فرآیند، پردازش گام به گام اطلاعات است که در نهایت منجر به تولید یک تصویر باکیفیت توسط بخش بعدی (رمزگشای تصویر) میشود.
رمزگشای تصویر از اطلاعاتی که از خالق اطلاعات گرفته است، تصویری را ترسیم می کند. در پایان فرآیند فقط یک بار اجرا می شود تا تصویر پیکسلی نهایی تولید شود.
با این توضیحات، میتوانیم سه جزء اصلی تشکیل دهندهی «پخش پایدار» را مشاهده کنیم که هرکدام شبکهی عصبی مخصوص به خود را دارند:
ClipText: مسئول رمزگذاری متن
UNet + Scheduler: مسئول پردازش و انتشار تدریجی اطلاعات در فضای اطلاعاتی (فضای نهفته)
رمزگشای ات رمزگذار: مسئول نقاشی تصویر نهایی با استفاده از آرایهی اطلاعات پردازششده
فرآیند انتشار "diffusion" درون بخش صورتیرنگ "خالق اطلاعات تصویر" اتفاق میافتد. این بخش با در اختیار داشتن بردارهای نمایش کلمه (که متن ورودی را نشان میدهند) و یک آرایهی اولیهی تصادفی "اطلاعات تصویر" (که به آنها "نهفته" (latent) هم میگویند)، یک آرایهی اطلاعات تولید میکند که "رمزگشای تصویر" از آن برای رسم تصویر نهایی استفاده میکند."
این فرآیند به صورت گام به گام انجام می شود. هر مرحله اطلاعات مرتبط بیشتری را اضافه می کند. برای درک شهودی از فرآیند، میتوانیم آرایههای نهفته تصادفی را بررسی کنیم و ببینیم که به نویز بصری تبدیل میشود. بازرسی بصری در این مورد، عبور آن از رمزگشای تصویر است.
انتشار در چند مرحله اتفاق میافتد، هر مرحله بر روی یک آرایه پنهان ورودی عمل میکند، و آرایه پنهان دیگری تولید میکند که بهتر شبیه متن ورودی و تمام اطلاعات بصری است که مدل از تمام تصاویری که مدل روی آنها آموزش دیده است، گرفته است.
ما می توانیم مجموعه ای از این پنهان ها را تجسم کنیم تا ببینیم در هر مرحله چه اطلاعاتی اضافه می شود.
این روند کاملاً نفس گیر است.
در این مورد بین مراحل 2 و 4 اتفاق بسیار جالبی رخ می دهد. طرح کلی ازنویزها بیرون می آید.
ایده اصلی تولید تصاویر با مدل های انتشار بر این واقعیت استوار است که ما مدل های بینایی کامپیوتری قدرتمندی داریم. با توجه به مجموعه داده به اندازه کافی بزرگ، این مدل ها می توانند عملیات پیچیده را یاد بگیرند. در پست بعد به نحوه عملکرد این بخش میپردازیم.