Разработка программы для семантического редактирования лиц

В данной статье даётся объяснение семантическому редактированию лица, рассматривается алгоритм разработки программы для семантического редактирования лиц и результат её работы.

Аннотация статьи
нейронные сети
семантическое редактирование лиц
image translation
Ключевые слова

Технологии развиваются настолько стремительно, что перестаешь удивляться очередного релиза инновации. Причём скорость релиза технологий зачастую превышает проблемы той или иной сферы. В данном статье мы поговорим о трансляции изображений.

Какие задачи же может решать данная технология? Например, те, где с помощью искусственного интеллекта можно, модифицировать изображения, портреты, задавая конкретные атрибуты модели. Это, по-научному, называется семантическим редактированием лиц. И на основе этих данных искусственная модель отвечает конкретным требованиям задачи.

Примеров таких технологий больше с каждым годом, взять те же нововведения социальных сетей, где можно задавать различные фильтры при публикации фотографии. Или же приложения в магазине приложений на мобильных устройствах, где можно задавать удивительные маски на приложения, о чём раньше даже представить было тяжело. По фотографии модель генерирует Ваше изображение в любом возрасте, фотографии ваших членов семьи или даже будущих детей. Ну или простое применение, когда Вы пробуете на себе новую модную одежду или необычную причёску, чтобы преобразить свой образ. К счастью, применений компьютерного зрения бесконечно много, поэтому можно научиться применять данное удобство в своей жизни.

Эта статья о написании программы на нейронной модели StarGAN [1]. Она решает задачу трансляции изображения с помощью одного дискриминатора и генератора. А усовершенствованный метод исследует разнообразный синтез изображений для нескольких доменов [2].

В биологии нейронной сетью называют последовательность нейронов, соединённых синапсами. Структура искусственной нейронной сети берёт за основу именно биологическую. Именно из-за этого искусственные сети имеют огромный потенциал к обучению.

Нейрон, получая на вход некоторую долю информации, обрабатывает ее и передает результаты своих вычислений далее, следующему нейрону [3].

Слой – это группа нейронов, которые выполняют ту же задачу, но уже в количественном масштабе: получают и обрабатывают информацию и передают её далее, к другому слою. На рисунке 1 можно ознакомиться с примерной структурой.

Рис. 1. Строение искусственной нейронной сети

Генеративно-состязательные сети (GAN) – состязательные сети, которые учатся благодаря генерации данных генератором и идентификации истинности данной информации дискриминатором [5]. Благодаря дискриминатору генератор генерирует качественные данные, которые фильтруются. Это пример машинного обучения без учителя. На рисунке 2 приведена схема таких сетей.

Рис. 2. Схема работы генеративно-состязательных сетей

Большинство программ используют в основе именно эту модель. Алгоритм обработки фотографии следующий. Выгрузка фотографии, детекция лица, предобработка изображения, выделение вектора атрибутов из текста и генерация итогового изображения.

Один из возможных примеров реализаций итоговой картины – генерация итогового изображения происходит благодаря обработке входного изображения нейронной сетью, которая была обучена на датасете «CelebA» [4], который содержит в себе 202,599 изображений лиц знаменитостей, которые размечены 40 атрибутами лиц, включая атрибуты возраста, цвета волос, пола.

Схематично архитектура приложений представлена на рисунке 3.

Рис. 3. Архитектура приложения

Какие же файлы нужно написать? Достаточно трёх.

Файл model.py содержит три класса данных, необходимых для построения GAN модели нейронной сети для семантического редактирования лиц.

Класс ResidualBlock – класс, который представляет собой блок, состоящий из последовательных слоев Conv2d, InstanceNorm2d, ReLU, Conv2d и InstanceNorm2d. Эти блоки используются в архитектуре генератора.

Класс Generator – класс, который является одним из основных в модели GAN. Этот класс осуществляет генерацию выходного изображения.

Класс Discriminator – класс, который является одним из основных в модели GAN. Этот класс определяет является ли изображение, поданное ему на вход, настоящим.

В файле configurationObj.py содержится класс ConfigObj. Этот класс является классом конфигурации, в котором отображается все основные параметры, необходимые для запуска модели семантического редактирования лиц. Данный класс используется при составлении списка атрибутов, полученных от пользователя.

В файле solver.py содержится класс Solver, который является основным классом приложения. Данный класс содержится методы train и test. Метод train использовался для обучения модели для семантического редактирования лиц. Метод test используется при генерации выходного изображения для пользователя. Также в данном классе содержится метод getAttrsFromText, который осуществляет выделение атрибутов из текстового описания.

Результат работы программы можно посмотреть на рисунке ниже. Здесь программа выполняет задачу изменение цвета волос на чёрный.

Рис. 4. Входное и выходное изображение

А на рисунке 5, наоборот, цвет волос как у блондинки.

Рис. 5. Входное и выходное изображение

И даже задача изменения пола не является проблемой.

Рис. 6. Входное и выходное изображение

Продемонстрированы результаты выполнения программой работы с различными параметрами данных. Названы примитивные и основные сущности для написания подобных решений для семантического редактирования лиц, архитектура и конкретная реализация с результатом.

Текст статьи
  1. Choi Y. Stargan: Unified generative adversarial networks for multi-domain image-toimage translation // Proceedings of the IEEE conference on computer vision and pattern recognition. – 2018. – С. 8789-8797.
  2. Choi Y. Stargan v2: Diverse image synthesis for multiple domains // Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. – 2020. – С. 8188-8197.
  3.  Нейронные сети для начинающих. Часть 1 [Электронный ресурс] URL: https://habr.com/ru/post/312450/ (дата обращения: 04.12.2021).
  4. CelebA documentation [Электронный ресурс] // CelebA documentation: [сайт]. URL: http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html (дата обращения: 05.01.2022).
  5. Goodfellow I. Generative adversarial nets //Advances in neural information processing systems. – 2014. – Т. 27
Список литературы