Я не умею рисовать. Но я хорошо умею проектировать сети искусственного интеллекта, а это значит, что я действительно хорошо рисую.

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

Как это на самом деле работает

По сути, эта полностью обученная сеть состоит из двух основных частей. Во-первых, вам нужно как-то собрать большой набор данных хорошо прорисованных картинок. Чем выше качество, тем лучше. И, во-вторых, вам необходимо одновременно обучить две нейронные сети на этих данных: генератор, который фиксирует распределение данных, и дискриминатор (классификатор), который оценивает вероятность того, что данное изображение будет частью реального набора данных, а не получено из генератор.

Сбор данных

Итак, давайте начнем с первой части, где нам нужно собрать набор данных высококачественных рисунков лиц аниме. Секрет здесь в том, что данные были собраны путем удаления веб-страниц с японского сайта аниме «getchu.com».

Удаление веб-страниц в основном означает автоматизацию сбора информации, в данном случае лиц аниме, с веб-сайтов. Я написал сценарий для получения и анализа изображений из необработанного HTML веб-страниц, а затем применил детектор лиц аниме под названием lbpcascade-animeface к каждому изображению, чтобы получить ограничивающую рамку для лиц.

Затем я изменил масштаб изображений до 64x64 пикселей и использовал изображения только после 2010 года, так как они были самого высокого качества.

И затем, наконец, имея около 20 000 изображений в наборе данных, я вручную удалил некоторые из нежелательных изображений.

Создание и обучение ИИ

Итак, я использовал DCGAN, который мы можем представить как смесь сверточной нейронной сети (CNN) и генеративной состязательной сети (GAN).

CNN

То, что делает CNN, довольно просто, поскольку все, что он делает, - это распознает и сохраняет особенности изображения, в данном случае формы волос, лица и глаз, а также цвета лиц аниме.

Он принимает трехмерный тензор с размерами 3x64x64, который представляет три цветовых канала изображений (красный, зеленый, синий) и разрешение (64x64), и передает значения через группу сверточных слоев, которые состоят из:

1- Двумерное сверточное транспонирование, математическая операция, которая выглядит следующим образом:

2- Пакетная нормализация, которую вы можете представить как ввод данных в слой, а затем преобразование, чтобы они зависали около 0 со стандартным отклонением 1, как на этом изображении:

3- А затем функция активации ReLU:

GAN

GAN действует как структура для захвата распределения обучающих данных, чтобы мы могли генерировать новые данные из того же распределения. В GAN есть генератор и дискриминатор. Задача генератора - синтезировать поддельные изображения, похожие на данные обучения. Работа дискриминатора - смотреть на изображение и выводить, является ли оно настоящим обучающим изображением или подделкой из генератора.

Эти двое участвуют в соревновании, в котором генератор становится лучше перехитрить дискриминатор, а дискриминатор лучше распознает подделки. Идеальное завершение этого соревнования, то, что мы называем «равновесием» или «решением», и это точка, в которой дискриминатор всегда угадывает 50/50, что показанное изображение является реальным (поскольку генератор становится идеальным).

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

Ключевые выводы

  • Используя DCGAN с большим количеством данных, вы можете создать автоматический генератор всего, что захотите.
  • Вы можете собирать эти данные из Интернета с помощью веб-скраппинга.
  • Генератор и дискриминатор конкурируют до тех пор, пока генератор не станет идеальным, и дискриминатор должен угадать, настоящее изображение или поддельное.

Спасибо за регистрацию! Я Давиде, 19-летний самоучка, руководитель Мафии Фейнмана, изучающий, как обучение через объяснение можно использовать для изучения любой темы.

Чтобы узнать обо мне больше, зайдите на мой сайт и подпишитесь на меня на YouTube или Twitter.