بهبود عکسای تاریک با یک شبکه هوشمند راهنما دار! (EDNIG چیه و چیکار می‌کنه؟)

Fall Back

اگه تا حالا شده عکس‌هات توی یه محیط کم‌نور بگیری و کلی حرص بخوری که چرا همه‌چی توی تاریکی گم شده، باید بهت بگم که یه مدل جدید یادگیری عمیق اومده که دقیقاً مشکل تو رو حل می‌کنه! اسمش EDNIG ـه، یعنی Encoder-Decoder Network with Illumination Guidance (یه جور شبکه انکدر-دیکدر با راهنما گرفتن از روشنایی). بیام راحت و دوستانه برات توضیح بدم این مدل دقیقاً چه جوری معجزه می‌کنه و چرا اینقدر باحاله.

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

حالا EDNIG چیه؟
EDNIG رو میشه یه مدل تقریبا جدید دونست که کلی قِلق داره. پایه‌ش U-Net هست (U-Net یه مدل خیلی محبوب توی پردازش تصویر ـه که اصلش برای پزشکی بود، ولی همه‌جا استفاده میشه!). چیزی که EDNIG رو خاص می‌کنه اینه که به جای اینکه فقط عکس رو بده به مدل و بگه “برو روشنش کن”، یه راهنما بهش میده به اسم نورپردازی یا همان illumination map. این راهنما از تکنیکی به اسم Bright Channel Prior یا همون BCP گرفته میشه. BCP اومده یه روشی واسه فهمیدن نورهای روشن عکس‌ها پیشنهاد میده؛ یعنی مثلاً بفهمه توی هر ناحیه عکس، کجاها بیشتر “زیر نور” هست و کجاها نه. پس مدل می‌فهمه دقیقاً کدوم قسمت عکس باید بیشتر روش کار کنه تا عکس طبیعی و واقعی‌تر شه.

از اینجا به بعد میشه جالب‌ترش کرد: مدل EDNIG برای اینکه از شرایط نور مختلف (یعنی اینکه یه جای عکس تاریکه، یه جای دیگه روشن‌تره) بهتر سر دربیاره، یه ماژول دیگه روش گذاشتن به اسم Spatial Pyramid Pooling یا SPP. حالا خود SPP چیه؟ این ماژول کاری می‌کنه عکس رو از زوایای مختلف با اندازه مخزن‌های مختلف بررسی کنه تا کلی اطلاعات مختلف درباره محیط و شرایطش بدست بیاره.

واسه فعال‌سازی نورون‌هاش توی مدل هم اومدن از Swish استفاده کردن. Swish یه تابع اکتیواسیون جدیده که کمک می‌کنه مدل یادگیریش راحت‌تر و نرم‌تر پیش بره (یعنی گرادیانت‌ها بهتر حرکت کنن و گیر نکنن).

این مدل قراره با یه مدل دیگه رقابت کنه! آره، از GAN استفاده کردن، یعنی Generative Adversarial Network. GANها دو تا شبکه دارن: یکی جنریتور که تولیدکننده ـه، یکی دیگه دیسکریمنیتور که نقش “داور” رو بازی می‌کنه و هی به جنریتور سخت می‌گیره. اینطوری جنریتور یاد می‌گیره که عکسای واقعی‌تر و بهتر درست کنه.

روش آموزش مدل چطوریه؟ واسه اینکه نتیجه واقعاً خوب بشه، سه تا معیار رو با هم قاطی کردن: ضرر Adversarial loss (یعنی ضرر رقابتی بین این دو شبکه)، ضرر MSE (یعنی میانگین مربعات خطا که یه معیار خیلی کلاسیک برای تفاوت پیکسل‌هاست)، و ضرر Perceptual loss (که از دید بصری و درک انسانی عکس رو قضاوت می‌کنه). همه اینا رو ترکیب کردن تا خروجی تا جای ممکن هم واقعی، هم واضح باشه.

حالا نتیجه چی شد؟ تو آزمایش‌ها نشون دادن که EDNIG خیلی از مدل‌های قبلی بهتر عمل می‌کنه. هم از نظر معیارهای عددی (یعنی معمولاً امتیاز PSNR و SSIM بالاتر گرفت، که این‌ها مقیاس‌های سنجش کیفیت تصویرن)، هم وقتی عکس رو نگاه میکنی حس بهتری میده و طبیعی‌تر به نظر میاد. ضمن اینکه این مدل با وجود کیفیت بالا، حجمش کم‌تر از بقیه مدلاست و پیچیدگیش نسبتاً پایین مونده، یعنی میشه واقعاً تو دنیای واقعی تو گوشیا یا دستگاه‌های دیگه راحت استفاده‌اش کرد.

اگه دوست داری خودت تستش کنی یا بیشتر ور بری باهاش، سورس کدش رایگان تو گیت‌هاب هست. اینم لینک کارشونه: https://github.com/tranleanh/ednig

خلاصه که، اگه عکاس گوشی‌باز هستی و دل به عکسای شبانه یا تاریک می‌دی، این مدل رو از دست نده! به خوبی می‌تونه عکسای تاریک رو بترکونه و خیلی بهترشون کنه! 🌙✨

منبع: +