وضوح تصویر فوق العاده با استفاده از GAN (SRGAN)

سلام و به پست وبلاگ دیگر من در مجموعه در مورد وضوح تصویر فوق العاده با استفاده از GAN خوش آمدید. این پست به شدت بر اساس این مقاله تحقیقاتی است که راه بهتری را برای حل مشکل وضوح تصویر فوق العاده در مقایسه با سایر روش های موجود در آن زمان پیشنهاد می کند.
بنابراین قبل از شروع، فرض میکنم که شما یک درک اساسی از وضوح فوقالعاده با استفاده از CNN دارید، اگر نیستید، میتوانید این مجموعهای را که برای توضیح آن ساختهام بررسی کنید. من همچنین فرض می کنم که شما قبلاً درک اولیه ای از GAN یا Generative Adversarial Network دارید. اگر نه، می توانید پست قبلی من را در اینجا بررسی کنید
مشکل با SRCNN
بنابراین یک مشکل بزرگ که راه حل آن در مقاله ارائه شده است، تابع ضرر استفاده شده در SRCNN، تابع از دست دادن میانگین مربعات خطا است. اگرچه به عنوان یک تابع از دست دادن به خوبی کار می کند، اما درک ما انسان ها از تصاویر را حفظ نمی کند، فقط سعی می کند مطمئن شود که مقادیر پیکسل تا حد امکان با برچسب مطابقت داشته باشد. اما چشم انسان تصویر را بر اساس پیکسل مشاهده نمیکند، بنابراین استفاده از این تابع از دست دادن باعث میشود مدل فرصتهایی را برای سرمایهگذاری بر عامل مهمتر برای انسان در یک تصویر با وضوح بالا از دست بدهد.
این مقاله یک تابع ضرر جدید به نام زیان ادراکی پیشنهاد کرد که ترکیبی از ضرر خصمانه و از دست دادن محتوا است. معادله دقیق مورد استفاده در مقاله اینجاست، اگرچه ما در اینجا به ریاضیات نمی پردازیم:
بنابراین ضرر ادراکی اگرچه ترکیبی از از دست دادن محتوا و از دست دادن خصمانه است، به نظر می رسد که از دست دادن محتوا 1000 برابر اولویت بیشتری نسبت به ضرر خصمانه دارد. شما می توانید آن را اینگونه فکر کنید. اگر به ضرر خصومتآمیز اولویتهای بالایی یا در این مورد وزنهایی نسبت به ضرر ادراکی داده شود، نتیجه ما این خواهد بود که مولد تصویری بسیار شبیه به تصویر اصلی تولید میکند، که در واقع نقطه تولید تصویر فوقالعاده واقعی واقعی را از دست میدهد.
از دست دادن محتوا
بنابراین اساساً این تابع از دست دادن شکلی از از دست دادن MSE است اما اصلاح شده تا به مقدار پیکسل بستگی نداشته باشد و اولویت بیشتری برای درک خود تصویر میدهد. این امر با ترکیب آن با از دست دادن VGG به دست می آید، جایی که VGG یک مدل از پیش آموزش دیده روی میلیون ها تصویر است که درک خوبی از آنچه تصویر ساخته شده است. به این ترتیب، مدل درک بهتری از کیفیت تصویر در مقایسه با عملکرد از دست دادن پیکسل خواهد داشت.
ضرر خصمانه
این از دست دادن به معادله از دست دادن ادراکی اضافه می شود تا تصویری را که شباهت زیادی به تصویر اصلی دارد، به ارمغان بیاورد. این تلفات برای بخش مخالف GAN استفاده می شود، که زمانی است که خروجی ژنراتور به عنوان ورودی تفکیک کننده عمل می کند.
تبعیض کننده
وظیفه تمایز در اینجا تعیین این است که آیا یک تصویر یک تصویر اصلی است یا یک تصویر فوق العاده حل شده. معماری تمایزگر به شرح زیر است:
توجه داشته باشید که k = اندازه هسته، n = تعداد نقشه های ویژگی، و s = گام ها.
BN نرمالسازی دستهای است که راهی برای عادیسازی بیشتر دادهها در یک دسته است، به طوری که اگر یک مقدار پرت در طول آموزش وجود داشته باشد، اگر نرمال شده باشد، روی شبکه تأثیر زیادی نخواهد داشت. توجه داشته باشید که 4 لایه آخر برای صاف کردن آرایه لایه قبلی روی یک بعد واحد، مانند یک ANN معمولی، پیاده سازی شده است. همچنین غیرخطی بودن را از طریق Leaky ReLu معرفی میکند، و همه وزنها را روی لایه متراکم خروجی ترکیب میکند، سپس در نهایت تابع سیگموید را برای خروجی نهایی به آن اضافه میکند که مشخص میکند تصویر واقعی است یا فوقالعاده تفکیکشده.
ژنراتور
در همین حال، کار مولد این است که متمایز کننده را متقاعد کند که تصویری که تولید می کند یک تصویر واقعی است، نه یک تصویر فوق العاده حل شده. معماری ژنراتور همانطور که در مقاله پیشنهاد شده است در اینجا آمده است:
همچنین در اینجا توجه داشته باشید که تعداد واقعی بلوک های باقیمانده 16 است که در مقاله ذکر شده است اما برای سادگی در تصویر حذف شده است. این مولد با استفاده از افت ادراکی برای آموزش این شبکه به پیشنهاد محققین استفاده می شود.
نتیجه
بنابراین این نمای کلی از وضوح فوق العاده با استفاده از GAN است. امیدوارم دوست داشته باشید و اینجا چیز جدیدی یاد بگیرید. اگر مایلید بیشتر بیاموزید، منابع ویدیویی از یوتیوب را در زیر در بخش منابع پیوند میدهم که توضیح دقیقتری و همچنین نحوه پیادهسازی مدل از نظر کد ارائه میدهد. بنابراین، فعلاً این همه برای من است و دفعه بعد شما را می بینم!
منابع
اگر میخواهید توضیح کامل مقاله را داشته باشید، این ویدیوها برای من مفید بود: