GAN – генеративно-змагальна нейронна мережа (Generative adversarial network, GAN) – один із алгоритмів класичного машинного навчання, навчання без учителя. Суть ідеї в комбінації двох нейромереж, при якій одночасно працює два алгоритми "генератор" і "дискрімінатор". Завдання генератора – створювати образи заданої категорії. Завдання дискриминатора – намагатися розпізнати створений образ.
Таким чином генератор генерує певні образи. Наприклад, картинки, схожі на обличчя, а дискрімінатор намагається визначити обличчя це було чи ні. І з часом мережа навчається настільки, що генератор генерує досить реалістичні обличчя.
Дискрімінатор. Для розпізнавання використовуються згорткові нейронні мережі (CNN). Принципи роботи та застосування CNN описані в окремій статті. Для розуміння «на пальцях»: CNN може розпізнавати образи на картинках, наприклад, виділяти з усього зображення обличчя, цифри тощо Щоб нейронна мережа навчилася щось розпізнавати, їй потрібно обробити велику кількість зображень, де містяться образи, потрібні для пошуку.
Простою мовою: ви даєте нейронній мережі велику кількість зображень котиків, на яких відзначаєте в якій частині зображення знаходяться котики (це називається "розмітка"), і потім нейронна мережа вже сама здатна сказати чи є на зображенні котики і де вони знаходяться.
Генератор. Формування зображень починається з генерації довільного шуму, на якому поступово починають проступати фрагменти потрібного зображення. Уявіть, що ви трусите тарілку з піском, поки не вдається "натрусити" щось віддалено схоже на цифру. А потім продовжуєте трусити, поки контури цифри не стануть більш явними. Нейромережа запам'ятовує яким саме чином ви трусили тарілку, щоб домогтися такого результату, і наступного разу відтворює ваші дії.
Звісно, це ілюстративний приклад, і в реальних моделях застосовуються більш розумні підходи. В якості генеруючої нейронної мережі можуть використовуватися (і часто використовуються) мережі FFNN – нейронні мережі прямого поширення (feed forward neural networks).
Створення контенту і даних: наприклад, створення картинок для інтернет-магазину, аватарів для ігор, відеокліпів, згенерованих автоматично, виходячи з музичного біта твору, або навіть віртуальних ведучих для ТВ-програм. Завдяки роботі GAN і генеративних моделей виникає синтез даних, на яких потім навчатимуться інші системи.
Автоматичне редагування: цей підхід вже використовується в сучасних смартфонах і деяких програмах. Він дозволяє змінювати на фотографії обличчя, кількість зморшок і зачіску, міняти день на ніч, зістарювати зображення і т.п.
https://medium.com/
Генерація приголомшливо реалістичних зображень "селебрітіс" (а насправді – неіснуючих людей) за допомогою PG GAN від nVidia. C допомогою цієї мережі можна також генерувати зображення будь-яких інших категорій.
Всі ці зображення згенеровані системою на базі генеративних змагальних нейронних мереж, частина з них виглядає не надто реалістично, але інша частина вельми правдоподібна.
https://towardsdatascience.com/
Модель Everybody Dance Now, створена групою вчених із Університету Берклі, представляє простий метод на основі генеративних нейронних мереж передачі руху «зроби як я». Дано: на вході взяте відео танцюючої людини. Досягнутий результат: ми змушуємо зображення іншої людини танцювати. Це називається "перенесення руху".
Перенесення стилю з одного зображення на інше дозволяє за допомогою нейронних мереж робити такі вражаючі речі як "перетворити коня на зебру".
https://kharshit.github.io/
Або генерувати "аніме-портрети" по фотографії. На цій картинці видно, як із цим завданням справляються різні види ГАНів.
https://towardsdatascience.com/
Зміна емоцій, віку, виразу обличчя людини – всього цього можна досягти, правильно навчившитаі запрограмувавши нейронні мережі GAN. На практиці це виглядає наступним чином: на вході моделі подається вхідне фото і вказується емоція, яку потрібно показати на виході.
https://towardsdatascience.com/
Також нейронні мережі GAN використовують для генерації реалістичного відео міського середовища. Наприклад, при створенні фільмів, ігор, віртуальної реальності.
Перетворення ескізів і контурних малюнків на фотореалістичне зображення за допомогою GAN відбувається наступним чином: ви малюєте від руки обличчя, сумку або, наприклад, кота, і отримуєте фотореалістичне зображення на виході. Погратися з цим можна тут.
https://affinelayer.com/pixsrv/
Оскільки GAN – досить молодий метод (він з'явився тільки в 2014 році, а перші "пристойні" результати з'явилися в 2016-2017 роках), ще ніхто не знає достовірно, що можна, а чого не можна зробити за допомогою GAN. Оглядам нових варіацій GAN і способам їх застосування присвячено багато статей, ми ж зберемо найцікавіші з них і будемо публікувати в нашому блозі.
Для чого ми в Evergreen плануємо застосовувати нейронні мережі GAN? Основна ідея – автоматизація виробництва контенту, який раніше вимагав зусиль дизайнерів.
Якщо ви вважаєте, що зараз переплачуєте за створення контенту, який може створювати машина, поділіться з нами своєю ідеєю. Ми будемо раді знайти метод генерації, що відповідає вашим потребам.