هنر دودل با شبکههای عصبی
در پست انتقال سبک با یادگیری عمیق به کاربردی از شبکههای عصبی کانولوشنی در یادگیری سبک نقاشی اشاره شد. مثالهای پست قبل به این ترتیب بودند که سبک (استایل) یک تصویر(style) بر تصویری دیگری (content) نقش میشد. در کاربرد دیگری که در این پست اشاره خواهد شد، همین کار انجام میشود، اما با معرفی دو ماسک برای تصاویر ورودی و خروجی، شبکه عصبی، سبک (استایل) هر ناحیه از style بر ناحیهی متناظر آن از تصویر content نقش میشود. شکل زیر نحوه کار را نشان میدهد:
تصویر بالا سمت چپ یک منظره را نمایش میدهد که متناظر با آن یک ماسک چهار رنگ (نواحی آسمان، درختان، سبزهزار و رودخانه) در نقاش ویندوز کشیده شده است (تصویر کوچک پایین آن). همین کار برای اثر هنری سمت راست انجام شده است.
شکل پایین در تصویر بالا، خروجی «دودل عصبی» را نشان میدهد.
از آنجا که با کمک این شیوه میتوان تصاویر ساده نقاشی مانند (ماسکهای مورد اشاره) را به تصاویر هنری تبدیل کرد، به آن دودل (Doodle) گفته میشود. در ادامه خواهیم دید که چرا به آن دودل گفته میشود.
دودل در هنر
مطابق تعریف سایت کارتوننگار:
طراحی به سبک doodle یا احمقانه سبکی از طراحی است که در آن می توان افکار و احساست خود را به شکل انتزاعی نمایش داد.طراح در این سبک با استفاده از نقاشی ها ساده میتواند معنای نمایشی پیوسته ای را بیان کند.
با شیوه «دودل عصبی» میتوان یک طرح ساده را به یک اثر هنری تبدیل کرد. دیدن این ویدئو از تخته سفید دلیل نامگذاری را بهتر قابل درک میسازد. گیتهاب های زیر شامل کدهای آماده برای انجام کار هستند.
https://github.com/alexjc/neural-doodle
https://github.com/DmitryUlyanov/fast-neural-doodle
https://github.com/titu1994/Neural-Style-Transfer
ده تکرار الگوریتم مربوط به آخرین برنامه لینک بالا و برای تصاویر ابتدای پست، در گیف زیر نشان داده شده است:
در دستگاه با مشخصات زیر هر تکرار حدود ۱۲ ثانیه روی GPU طول کشیده است:
CPU: Intel® Core™ i7-7700HQ , 4 Cores
GPU: NVIDIA® GeForce® GTX 1050 Ti – 4 GB GDDR5
- برای اجرا کتابخانههای زیر در پایتون باید نصب باشند:
- Tensorflow-gpu
- Keras
- Scipy + PILLOW
- Numpy
- h5py
یکی از امکانات برنامه پایتون یادگیری عمیق مورد استفاده در اجرای نمونهها، اجازه انتخاب طرح رنگ است. در تصویر بالا، طرح رنگ از تصویر style گرفته شده بود، اگر طرح رنگ از تصویر content گرفته شود، خروجی زیر را خواهیم داشت: