Google DeepDream розроблений


12

Я бачив кілька питань на цьому сайті про Deep Dream, однак, схоже, жодне з них не говорить про те, чим саме займається DeepDream. Наскільки я зібрався, вони, схоже, змінили цільову функцію, а також змінили зворотне розповсюдження, щоб замість оновлення ваг вони оновлювали вхідне зображення.

Мені цікаво, чи хтось точно знає, що зробив Google. Вони згадують в одній зі своїх статей, що нав'язують байєсівських пріорів, коли вони проводять оптимізацію, і завдяки цьому я можу уявити, що отримати нейронну мережу, щоб виплюнути зображення для кожної мітки, не так вже й складно - ми можемо просто встановити мітку, а потім оптимізувати вхідний вектор відповідно.

Однак найцікавішою частиною глибокої мрії є те, що вона робить це на кожен шар, і в цьому плані я не зовсім впевнений, як він підкреслює деталі в шарі.

Звичайно, подання зображення дасть вам значення для кожного нейрона, але тоді як ми можемо використовувати цю інформацію для перебільшення деталей у вихідному зображенні? Я намагався знайти будь-яку детальну інформацію про це.

Список літератури: Тут vzn відповів на подібне запитання: https://cs.stackexchange.com/a/44857/49671

З цього посилання є реалізація Deepdream тут: http://auduno.com/post/125362849838/visualizing-googlenet-classes

За винятком того, що він не пропонує перебільшення функцій, про які йдеться тут: http://googleresearch.blogspot.com/2015/06/inceptionism-going-deeper-into-neural.html

Де вони обидва показують візуалізацію певних класів та окремих шарів, і кажуть:

Замість того, щоб точно прописати, яку функцію ми хочемо розширити, ми можемо дозволити мережі прийняти це рішення. У цьому випадку ми просто подаємо в мережу довільне зображення або фотографію і даємо мережі аналізувати зображення. Потім вибираємо шар і просимо мережу покращити все, що він виявив.


2
Можливий дублікат Deep Dreamer
manlio

Відповіді:


7

Ідея DeepDream така: виберіть деякий шар із мережі (зазвичай це звивистий шар), пропустіть початкове зображення через мережу, щоб витягнути функції на обраному шарі, встановити градієнт на цьому шарі, рівний самим активаціям, а потім повернути розповсюдження до зображення.

Чому це має сенс? Інтуїтивно він підсилює функції, максимально активовані в мережі. Зворотно розповсюджуючи цей градієнт, ми зробимо оновлення зображення, що підвищить будь-яку з існуючих активацій. Якщо в шарі є детектор, що нагадує кішку, і зображення містить деякий патч, який трохи схожий на кішку, DeepDream посилює цю активацію, оновивши цей патч, щоб він був ще більш схожим на кішку. Як результат, DeepDream намагається знайти котів та собак скрізь на зображенні (у наборі даних ImageNet є безліч собак, тому в мережі є багато нейронів, пов’язаних із собаками).

objective_L2гх=х

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.