Text-to-image. Як нейромережі навчилися генерувати зображення завдяки NLP
Комп'ютери не знають жодної з людських мов і навряд чи розуміють різницю між імпресіонізмом та вуличною фотографією. Однак можуть згенерувати за кілька секунд десятки фото або картинок за будь-якими названими характеристиками. SPEKA розповідає, як навчити алгоритми створювати зображення, яких не існувало раніше, і чому це вдалося зробити саме зараз.
Що таке комп'ютерний зір?
До початку 1980-х комп'ютери застосовували здебільшого для обрахунків та моделювання. Це була замкнута система, тобто ніщо ззовні не впливало на роботу, а результати залишалися у межах комп'ютера.
Натомість комп'ютерний зір, або computer vision, вчить машини «бачити» об'єкти. У computer vision є кілька основних завдань:
- ідентифікація — виявити котика на картинці або пухлину на рентгенівському знімку;
- локалізація — вказати місце розташування об'єкта;
- фрагментація — виділити обличчя на фото;
- класифікація — визначити, який об'єкт належить до класу котиків, а який до класу людей.
Революція у computer vision
Хоча впроваджувати комп'ютерний зір почали ще у 1980-х, зокрема на промислових підприємствах, по-справжньому добре бачити комп'ютери почали лише з появою моделей глибокого навчання у 2012 році. Тоді на змаганні з розпізнавання образів алгоритмом перемогли математики Джефф Хітон та Алекс Крижевский. Вони представили свою нейромережу для розпізнавання зображень. Її точність становила 84%. На той час це був рекорд для алгоритмів (срібний призер змагань мав точність 74%).
Хітон та Крижевський створили convolutional neural network (CNN) — згорткову нейромережу, яка дала поштовх усім сучасним системам розпізнавання облич, автомобілів, діагностики медичних знімків, системи автопілотів та застосунків на кшталт Google Lens. Зараз точність деяких алгоритмів з розпізнавання облич у натовпі становить 99,8% (краща, ніж у людини).
Що таке згорткова нейромережа?
В основі кожної нейромережі лежить система, схожа на живі нервові клітини (нейрони). Дендрити нейронів приймають сигнали не від усіх рецепторів сітківки ока, а від конкретної ділянки. Деякі нейрони активуються, коли помічають вертикальні смуги, інші — горизонтальні. Сукупність нейронів дозволяє нам розпізнавати об'єкти та масштаб у просторі.
Згорткова нейромережа теж застосовує такий механізм, тільки кожен нейрон — це функція. Усередині мережі фільтри шукають специфічні характеристики, які дозволяють системі припустити, що показано на зображенні. А згортковою цю нейромережу називають через однойменну математичну операцію — поєднання двох функцій. Це дозволяє створити третю функцію, яка покаже перетин двох попередніх. Таким чином згорткові мережі шукають межі у зображеннях.
Усі нейромережі навчаються на великих датасетах, найпопулярніші з яких ImageNet — приблизно 14 млн зображень, Google Landmarks Dataset v2 — майже 5 млн зображень. Також є окремі набори для конкретних завдань. Наприклад, YOLOv2 використовують для виявлення та класифікації об'єктів, OpenFace — для розпізнавання облич, ResNet — для класифікації зображень.
Як алгоритми навчилися створювати зображення?
Після того як нейромережі навчилися добре розуміти, що є на зображеннях, наступним етапом було навчити їх робити нові. Для цього у середині 2014 року винайшли генеративно змагальні мережі (GAN), що теж було проривом у машинному навчанні.
GAN складається з двох згорткових нейромереж — генератора та дискримінатора. Завдання дискримінатора — класифікувати вхідні дані (наприклад, датасет із зображеннями) за певними категоріями. Через функцію дискримінатор описує певні ознаки, які доводять, що це зображення належить до конкретного класу.
Завдання генератора — передбачити ознаки класу та створити образи, які підійдуть до цієї категорії. Він створює схожі зображення і надсилає їх дискримінатору, щоб той перевірив, чи вони підходять.
Часто роботу GAN ще пояснюють на прикладі поліцейського (дискримінатор) та фальшивомонетника (генератор). Завдання першого — відібрати правильні зразки, а другого — створити настільки правдоподібні копії, щоб дискримінатор не помітив різницю.
Перевага такого алгоритму — можливість самонавчатися. Тому через значну кількість циклів нейромережа може створити дуже схожі на реальні зображення, музичні треки, голоси та тексти.
Щоправда, перші спроби були далекими від ідеалу. Навіть більше, вони заледве нагадували те, що намагалися згенерувати вчені.
Підписуйтеся на наші соцмережі
Як комп'ютери розуміють природну мову?
Для оброблення природної мови використовують нейромережі під назвою трансформери. Їх створили інженери Google Brain у 2017 році. Трансформери добре розуміють природні мови через свою архітектуру. Вони складаються з енкодера та декодера.
Енкодер перетворює слова тексту у вектор (набір чисел). Це допомагає комп'ютеру розуміти, з якими словами найчастіше поєднується слово. Декодер розшифровує цей набір у вигляді нової послідовності (переклад або відповідь на запитання). Важливо те, що цифрова послідовність до переходу до декодера проходить через так званий шар внутрішньої уваги (self-attention). Це щось на зразок теплової карти пов'язаних слів. Це допомагає мережі розуміти суть та різницю у словах, які однаково пишуться. Наприклад, мати (матір) і мати (володіти).
На сьогодні найкращим алгоритмом з оброблення мови є GPT-3, яку розробив OpenAI. Його навчили на датасеті розміром 570 Гб, а кількість параметрів становила 175 млрд. GPT-3 може генерувати статті, відповідати на запитання, використовуватися як основа для чатботів, проводити семантичний пошук і створювати короткі резюме із текстів.
Text to image
Коли ви напишете комп'ютеру «намалюй котика», він не знатиме, що таке котик, але сукупність ознак, які зашифровані за цим поняттям, допоможуть йому сформувати образ, який для вас буде схожим на кота. Більшість сучасних сервісів, які створюють зображення за текстом, — це поєднання моделі, яка обробляє природну мову та генеративно змагальної мережі (GAN). Наприклад, сервіс DALLE-2 побудований на комбінації GPT (трансформер) та варіації генеративно змагальної мережі VQ-GAN. За схожим принципом працює і нейромережа Imagen. А Meta вже представила нейромережу Make-A-Video, яка генерує відео за текстовим описом
Нижче кілька прикладів, які згенерувала редакція у DALLE-2.
Нам не вдалось нічого згенерувати за запитом Putin's death через алгоритми нейромережі, яка фільтрує певний тип контенту. А про деякі поради як краще створювати контент за допомогою DALLE-2 ми писали раніше. А також давали відповідь, чи стане стане алгоритм заміною фотобанкам, художникам та Photoshop.
Еволюція нейромереж
Насправді всього за кілька років нейромережі пройшли надзвичайно стрімкий шлях удосконалення. Тому подивимось із чого усе починалось.
alignDRAW
Це перша модель перетворення тексту в зображення, яку представили в університеті Торонто у 2015 році. У ній ще не використовували механізми, як у типових сучасних мережах (GAN мережі). Принцип її роботи був заснований на енкодері для оброблення мови та рекурентній нейромережі. Зображення були нереалістичними та розмитими, але alignDRAW змогла узагальнити об'єкти, яких не було у навчальному датасеті (наприклад, червоний шкільний автобус), та обробляти нові запити, такі як «знак зупинки летить у блакитному небі». Тобто це вже було не просто запам'ятовування даних із навчального набору.
Перша модель із генеративно змагальною мережею (GAN)
У 2016 році вчені Мічиганського університету першими використали генеративні змагальні мережі для перетворення тексту в зображення. Завдяки моделям, навченим на специфічних для певної сфери наборах даних, вони змогли створити «візуально правдоподібні» зображення птахів і квітів із текстових підписів, наприклад «суцільно чорний птах з яскраво вираженим товстим округлим дзьобом». Модель, навчена на більш різноманітному наборі даних COCO (Microsoft Common Objects in Context), створила зображення, які були «обнадійливими на відстані».
Згенеровані реалістичні фото людей
Теро Каррас та інші у статті 2017 року «Поступове зростання GAN для покращення якості, стабільності та варіації» показали створення правдоподібних реалістичних фотографій людських облич. Навчали мережу на фотографіях реальних знаменитостей.
Цей метод вони також використали для генерації фотореалістичних об'єктів та сцен.
Створення реалістичних фотографій
У статті 2018 року «Великомасштабне навчання GAN для високоточного синтезу природних зображень» Ендрю Брок та інші демонструють створення синтетичних фотографій за допомогою їхньої техніки BigGAN. Зображення майже не відрізняються від справжніх фотографій.
Створення героїв мультфільмів
Янхуа Цзінь та інші у статті за 2017 рік «До автоматичного створення аніме-персонажів за допомогою генеративних змагальних мереж» демонструють навчання та використання GAN для створення облич аніме-персонажів.
Надихнувшись прикладами аніме, багато інших ентузіастів нейромереж намагалися створити персонажів покемонів, наприклад, проєкт pokeGAN і проєкт Generate Pokemon with DCGAN, але не надто вдало.
Перетворення семантичного зображення у фото
Ting-Chun Wang та інші у статті 2017 року «Синтез зображень високої роздільної здатності та семантична маніпуляція за допомогою умовних GAN» показали використання умовних GAN для створення фотореалістичних зображень із семантичним зображенням або ескізом як вхідними.
Фотографії для Emojis
Янів Тайгман та інші у роботі за 2016 рік «Створення міждоменного зображення без нагляду» використовували GAN для переведення зображень з одного домену на інший, Зокрема із фотографій знаменитостей на те, що вони емодзі.
Генерація 3D-об'єктів
Матеус Гадельї та інші у статті 2016 року «Індукція 3D-форми з 2D-видів кількох об'єктів» показали, як використовувати GAN для створення тривимірних моделей із двовимірними зображеннями об'єктів з різних ракурсів.