0

کاربردهای Generative Models

مقدمه

در این آموزش، درباره کاربردهای مدل‌های تولیدی صحبت خواهیم کرد. ابتدا، یک معرفی بسیار مختصر به زمینه مدل‌های تولیدی خواهیم داشت و سپس پنج کاربرد همراه با چند نمونه تصویری ارائه خواهیم داد.

مدل‌های تولیدی

هدف اصلی یک مدل تولیدی این است که توزیع پنهان P(x) داده‌های ورودی را یاد بگیرد. سپس، این مدل‌ها می‌توانند احتمال یک نمونه داده شده را پیش‌بینی کرده و نمونه‌های واقعی بر اساس توزیع پنهانی یادگرفته‌شده تولید کنند. معروف‌ترین مدل‌های تولیدی، GANها هستند که با استفاده از دو شبکه که در یک بازی صفر-جمعی به رقابت می‌پردازند، توزیع داده‌ها را یاد می‌گیرند. می‌توانید اطلاعات بیشتر در مورد تئوری پشت GANها در آموزش قبلی ما پیدا کنید.

1- افزایش داده

یکی از کاربردهای بسیار مهم مدل‌های تولیدی، افزایش داده است. در مواردی که ترسیم کردن یک مقدار زیاد از داده‌های آموزشی دشوار یا هزینه‌بر است، می‌توانیم از GANها برای تولید داده‌های مصنوعی استفاده کرده و اندازه مجموعه داده را افزایش دهیم.

به عنوان مثال، StyleGAN یک مدل تولیدی است که توسط Nvidia پیشنهاد شده است و قادر به تولید تصاویر بسیار واقع‌گرای چهره‌های انسانی است که واقعاً وجود ندارند. در تصاویر زیر، می‌توانیم چند چهره مصنوعی تولید شده توسط StyleGAN در دو کیفیت مختلف را ببینیم. مطمئن هستم که هیچ تفاوتی بین این تصاویر چهره مصنوعی و برخی از تصاویر واقعی چهره نخواهید دید. این نکته که این افراد در واقع وجود ندارند، شگفت‌انگیز است:

StyleGAN همچنین قادر به کنترل سبک چهره‌های تولید شده است. برخی از بخش‌های شبکه کنترل‌های سطح بالا مانند مدل موی سر و جهت سر، در حالی که بخش‌های دیگر کنترل ابراز چهره و جزئیات دقیق‌تر را انجام می‌دهند. بنابراین، این مدل به ما این امکان را می‌دهد که با استفاده از سبک یک نفر، سبک یک شخص را با سبک دیگری ترکیب کرده و تغییر دهیم. در تصاویر زیر، سبک منبع A و هویت منبع B ترکیب شده و یک تصویر چهره مصنوعی تولید شده و نتایج بسیار واقعی هستند:

2- افزایش وضوح (Super Resolution)

یک حوزه دیگر که مدل‌های تولیدی در آن کاربرد‌های زیادی داشته‌اند، حوزه افزایش وضوح (super-resolution) است که هدف ما افزایش وضوح یک تصویر ورودی است. به‌طور خاص، ما یک تصویر با وضوح پایین (مانند 90 \times 90) را به عنوان ورودی دریافت می‌کنیم و می‌خواهیم وضوح آن را افزایش دهیم (به 360 \times 360 و حتی بیشتر) و کیفیت آن را به حداکثر افزایش دهیم. افزایش وضوح یک وظیفه بسیار چالش برانگیز با برنامه‌های گسترده‌ای مانند تجزیه و تحلیل تصاویر هوایی یا پزشکی، افزایش کیفیت ویدئو، نظارت و غیره است.

SRGAN یک مدل تولیدی است که می‌تواند تصاویر با وضوح بالا و بسیار واقع‌گرایانه را از تصاویر با وضوح پایین بازیابی کند. این مدل شامل یک شبکه عمیق به همراه یک شبکه رقابتی مانند اکثر ساختارهای GAN است.

در تصاویر زیر، نتایج جذاب SRGAN را می‌بینیم. در سمت چپ، تصویر اصلی با وضوح پایین قرار دارد. در وسط، تصویر با وضوح بالا توسط SRGAN تولید شده و در سمت راست، تصویر اصلی با وضوح بالا قرار دارد:

مشاهده می‌شود که تصاویر تولیدی بسیار شبیه به تصاویر اصلی با وضوح بالا هستند. مدل موفق شده است وضوح تصویر ورودی را افزایش دهد بدون کاهش کیفیت نهایی.

3- Inpainting

در پر کردن نواقص تصویر (Inpainting)، وظیفه ما بازسازی ناحیه‌های از دست رفته در یک تصویر است. به‌طور خاص، ما می‌خواهیم پیکسل‌های از دست رفته در تصویر ورودی را به گونه‌ای پر کنیم که تصویر جدید همچنان واقع‌گرایانه باشد و متناسب با محیط باشد. کاربردهای این وظیفه بسیار زیادی دارد، از جمله تولید تصویر، ویرایش تصویر یا حذف اشیاء ناخواسته.

Deepfill یک چارچوب منبع باز برای وظیفه پر کردن نواقص تصویر است که از رویکرد مبتنی بر مدل تولیدی استفاده می‌کند. نوآوری آن در لایه توجه زمینه‌ای (Contextual Attention) است که به مولد این امکان را می‌دهد تا از اطلاعات ارائه‌شده توسط مکان‌های فضایی دورافتاده برای بازسازی پیکسل‌های گم‌شده محلی استفاده کند.

در زیر، می‌توانید اثر Deepfill را بر روی 3 نوع مختلف تصاویر مشاهده کنید: صحنه‌های طبیعی، چهره و تکسچر:

این مدل قادر به پر کردن پیکسل‌های گم‌شده به صورت بسیار طبیعی و حفظ متناسب با محیط تصویر است.

4- Denoising

در حال حاضر، به دلیل دوربین‌های دیجیتال مدرن، ما قادر به گرفتن عکس‌های با کیفیت بالا هستیم. با این حال، هنوز مواردی وجود دارند که یک تصویر حاوی نویز زیادی است و کیفیت آن پایین است. حذف نویز از یک تصویر بدون از دست دادن ویژگی‌های تصویر یک وظیفه بسیار حیاتی است و محققان سال‌هاست که در زمینه روش‌های پاک‌سازی نویز کار می‌کنند.


یکی از مدل‌های تولیدی بسیار محبوب برای پاک‌سازی نویز از تصاویر، Autoencoder است که آموزش دیده‌شده است که تصویر ورودی خود را پس از حذف نویز بازسازی کند. در طول آموزش، شبکه نسخه اصلی تصویر و نسخه نویزی آن را دریافت می‌کند. سپس، شبکه سعی می‌کند خروجی خود را به حد امکان نزدیک به تصویر اصلی بازسازی کند. نتیجه این است که مدل یاد می‌گیرد که چگونه تصاویر را از نویز پاک کند:

5- Translation

آخرین ولی مهم‌ترین کاربرد مدل‌های تولیدی در ترجمه تصاویر است که هدف ما یادگیری نگاشت بین دو دامنه تصویر است. سپس، مدل قادر به تولید نسخه مصنوعی از تصویر ورودی با یک اصلاح خاص می‌شود، مانند ترجمه یک منظر زمستانی به تابستانی.

CycleGAN یک مدل معروف مبتنی بر GAN برای ترجمه تصاویر است. این مدل به روش بدون نظارت با استفاده از یک مجموعه داده از تصاویر از دامنه منبع و دامنه هدف آموزش می‌بیند. کاربردهایی که از این روش نشات می‌گیرد، فوق‌العاده غنی و بی‌منطق هستند!

5.1- Collection Style Transfer

در اینجا، مدل یک منظر طبیعی تصادفی را به عنوان ورودی دریافت می‌کند و آن را به یک نقاشی از نقاشان معروف مانند مونه، ون‌گوگ، سزان و اوکیو-ه انتقال می‌دهد:

5.2- Object Transfiguration

یکی دیگر از کاربردهای جذاب StyleGAN، تحول اشیاء است که در آن مدل یک کلاس اشیاء را به کلاس دیگری ترجمه می‌کند، مانند ترجمه یک اسب به یک زرافه، یک منظر زمستانی به یک منظر تابستانی و سیب به نارنگی:

5.3- Image Colorization

ما می‌توانیم از CycleGAN برای رنگ‌آمیزی اتوماتیک تصاویر استفاده کنیم که در زمینه‌هایی مانند بازسازی تصاویر قدیمی یا فرسوده بسیار مفید است. در زیر، CycleGAN یک تصویر خاکستری از یک گل را به شکل رنگی واقعی RGB تبدیل می‌کند:

ارسال دیدگاه