در این آموزش، نحوه ی استفاده از شبکه های مولد تخاصمی ( GAN ) با استفاده از کتابخانه Keras ، برای مات زدایی تصویر نشان داده شده است.
در سال ۲۰۱۴، Ian Goodfellow شبکه های مولد تخاصمی ( GAN ) را معرفی کرد. در این مقاله به اعمال GAN روی مات زدایی تصویر با Keras ، پرداخته شده است.
نگاهی به نشریه علمی اصلی و نسخه Pytorch آن بیندازید. تمام کد Keras برای این مقاله در اینجا موجود است.
یادآوری سریع شبکه های مولد تخاصمی
در شبکه های مولد تخاصمی ، دو شبکه به یکدیگر آموزش می دهند. مولد ( Generator ) با ایجاد ورودی های جعلی موجه ، متمایز کننده ( Discriminator ) را گمراه می کند. متمایز کننده تعیین می کند که ورودی واقعی است یا ساختگی.
۳ مرحله اصلی در آموزش وجود دارد:
– استفاده از مولد برای ایجاد ورودی های جعلی مبتنی بر نویز
– آموزش متمایز کننده با ورودی های واقعی و جعلی
– آموزش مدل کامل : این مدل با متمایز کننده ای که به مولد متصل شده، ساخته شده است.
توجه داشته باشید که وزن های متمایز کننده در مرحله سوم، منفعل شده است.
دلیل اتصال هر دو شبکه این است که هیچ بازخوردی ( Feedback ) در خروجی های مولد وجود ندارد. تنها معیار ما این است که آیا متمایز کننده، نمونه های تولید شده را قبول کرده یا نه.
این یک یادآوری مختصر از ساختار GAN بود. اگر کافی نبود ، می توانید به این معرفی عالی مراجعه کنید.
داده
Ian Goodfellow برای اولین بار از مدل های GAN برای تولید داده های MNIST استفاده کرد. در این آموزش، از شبکه های مولد تخاصمی برای مات زدایی تصویر استفاده می کنیم. بنابراین، ورودی مولد نویز نیست بلکه تصاویر مات شده است.
مجموعه داده ها، داده های GOPRO است. می توانید نسخه سبک (۹ گیگابایت) یا نسخه کامل (۳۵ گیگابایت) را دانلود کنید. این داده ها شامل تصاویر مات شده ساختگی از نما های متعدد خیابان هستند. مجموعه داده ها در زیر پوشه ها توسط صحنه ها تجزیه می شوند.
ما ابتدا تصاویر را در دو پوشهA (مات شده) و B (واضح) تقسیم می کنیم. این ساختار A و B با مقاله پیکسل به پیکسل اصلی مشابهت دارد. من یک اسکریپت دست ساز برای انجام این کار در مخزن گیت هاب ایجاد کردم ، برای استفاده از آن، README را دنبال کنید!
مدل
روند آموزش همان است. اول، بیایید نگاهی به ساختارهای شبکه عصبی بیندازیم!
مولد
هدف مولد، تولید تصاویر واضح است. این شبکه بر پایه بلوک های ResNet است. همچنین مسیر تکامل اعمال شده در تصویر مات اصلی را نگه می دارد. این نشریه همچنین از یک نسخه مبتنی بر UNet که من اجرا نکرده بودم، استفاده کرد. هر دو بلوک باید برای مات زدایی تصویر، به خوبی عمل کنند.
هسته ۹ بلوک ResNet است که برای بزرگنمایی ( Upsampling ) تصویر اصلی اعمال می شود. بیایید پیاده سازی Keras را ببینیم!
لایه ResNet اساسا یک لایه کانولوشنی است، که ورودی و خروجی به آن اضافه می شود تا خروجی نهایی را تشکیل دهد.
همان طور که برنامه ریزی شده بود، ۹ بلوک ResNet به یک نسخه بزرگ نمایی شده از ورودی اعمال می شوند. ما یک اتصال از ورودی به خروجی اضافه کرده و تقسیم بر ۲ می کنیم تا خروجی های نرمال شده حفظ شود.
این کار برای مولد است! بیایید نگاهی به ساختار متمایز کننده بیندازیم.
متمایز کننده
هدف این است که تعیین کنیم آیا یک تصویر ورودی به صورت ساختگی ایجاد شده است یا خیر. بنابراین، ساختار متمایز کننده کانولوشنی است و یک مقدار واحد را ارائه می دهد.
آخرین مرحله ساخت مدل کامل است. خصوصیت این GAN این است که ورودی ها تصاویر واقعی هستند و نه نویز. بنابراین، ما یک بازخورد مستقیم در مورد خروجی مولد داریم.
بیایید ببینیم که ما با استفاده از دو تلفات چقدر از این خاصیت استفاده می کنیم.
آموزش
تلفات
ما تلفات را در دو سطح انتهای مولد و پایان مدل کامل استخراج می کنیم.
اولی یک تلفات ادراکی است که مستقیما بر روی خروجی های مولد محاسبه می شود. این تلفات اولیه تضمین می کند که مدل GAN به سمت یک مات زدایی متمایل شده است. این امر خروجی های اولین کانولوشن های VGG را با هم مقایسه می کند.
تلفات دوم، تلفات Wasserstein است که بر روی خروجی های مدل کامل انجام می شود. این تلفات میانگین اختلاف بین دو تصویر را اتخاذ می کند. این برای بهبود همگرایی شبکه های مولد تخاصمی شناخته شده است.
آموزش معمول
اولین مرحله، بارگذاری داده ها و مقداردهی اولیه همه مدل ها است. ما از تابع سفارشی خود برای بارگذاری مجموعه داده ها استفاده می کنیم و بهینه ساز های Adam را برای مدل های خود اضافه می کنیم. ما گزینه Keras trainable را برای جلوگیری متمایز کننده از آموزش، تعیین کردیم.
سپس ، ما شروع به راه اندازی دوره ها ( Epoch ) و تقسیم مجموعه داده ها به دسته ها می کنیم.
در نهایت، ما به طور متوالی متمایز کننده و مولد را براساس هر دو تلفات، آموزش می دهیم. ما ورودی های ساختگی را با مولد تولید می کنیم. ما متمایز کننده را آموزش می دهیم تا ورودی های واقعی را ساختگی از جدا کند و همچنین مدل سالم را آموزش می دهیم.
برای دیدن حلقه کامل می توانید به مخزن Github مراجعه کنید!
ابزار های مورد نیاز
من از یک (p2.xlarge) AWS Instance با یادگیری عمیقAMI (نسخه ۳٫۰) استفاده کردم. زمان آموزش حدود ۵ ساعت (برای ۵۰ دوره) در مجموعه داده های سبک GOPRO بود.
نتایج مات زدایی تصویر
خروجی بالا نتیجه Keras مات زدایی GAN است. حتی در ماتی شدید ، شبکه قادر به کاهش و تشکیل تصویری متقاعدکننده تر است. چراغ های اتومبیل شفاف تر و شاخه های درخت واضح تر شده است.
یک محدودیت الگوی القا شده روی تصویر است که ممکن است به عنوان یک تلفات، ناشی از استفاده از VGG باشد.
اگر شما به بینایی رایانه علاقه دارید ، ما مقاله ای در مورد بازیابی تصویر مبتنی بر محتوا با Keras انجام دادیم. در زیر لیستی از منابع مربوط به شبکه های مولد تخاصمی آورده شده است.
منابعی برای شبکه های مولد تخاصمی
NIPS 2016: Generative Adversarial Networks by Ian Goodfellow
ICCV 2017: Tutorials on GAN
GAN Implementations with Keras by Eric Linder-Noren
A List of Generative Adversarial Networks Resources by deeplearning4j
Really-awesome-gan by Holger Caesar
امیدوارم از این مقاله در مورد شبکه های مولد تخاصمی برای مات زدایی تصویر لذت برده باشید. فراموش نکنید که برای ما نظر بگذارید!
بیشتر بخوانید :
- پلاک خوان ها به یافتن وسایل نقلیه دزدیده شده و دستگیری مجرمان کمک می کنند
- چه چیزی واقعاً مانع پذیرش هوش مصنوعی در سازمان ها می شود؟
- نصب بیش از ۱۰۰ پلاک خوان در بخش هایی از ایالت تگزاس
- مدیران ناوگان های حمل و نقل به سمت فناوری هوش مصنوعی می روند
- دوربین های جدید هوش مصنوعی در بریتانیا روزانه ۱۰۰ راننده متخلف را می گیرند
سلام و درود
ممنون