Управляемый синтез и редактирование изображений с использованием новой модели TL-GAN

Хотите узнать о прикладном искусственном интеллекте у ведущих специалистов Кремниевой долины или Нью-Йорка? Узнайте больше о программе Искусственный интеллект на сайте Insight.

Вы - компания, работающая в области искусственного интеллекта, и хотели бы принять участие в программе Insight AI Fellows Program? Не стесняйтесь связаться.

Весь код и онлайн-демонстрация доступны на странице проекта.

Обучение компьютеров рисованию фотографий по описаниям

Описывать изображение легко для человека, и мы можем делать это с самого раннего возраста. В машинном обучении эта задача представляет собой задачу разграничительной классификации / регрессии, т. Е. Прогнозирования меток признаков по входным изображениям. Последние достижения в методах машинного обучения и искусственного интеллекта, особенно в моделях глубокого обучения, начинают превосходно решать эти задачи, иногда достигая или превышая возможности человека, как показано в таких сценариях, как распознавание визуальных объектов (например, от AlexNet до ResNet по классификации ImageNet) и обнаружение объектов. / сегментация (например, из RCNN в YOLO в наборе данных COCO) и т. д.

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

Несмотря на сложность создания таких типов приложений, генеративные модели (с некоторым контролем) могут быть чрезвычайно полезны во многих случаях:

  • Создание контента. Представьте, что рекламная компания могла бы автоматически создавать привлекательные изображения продуктов, соответствующие содержанию и стилю веб-страницы, на которую эти изображения вставлены; модельер мог получить вдохновение, попросив алгоритм создать 20 примеров дизайна обуви, связанных с «досугом», «холстом», «летом» и «страстью»; а новая игра может позволить игрокам создавать реалистичные аватары на основе простых описаний.
  • Интеллектуальное редактирование с учетом содержимого: мы могли бы позволить фотографу изменять выражение лица, количество морщин и прическу на фотографии профиля несколькими щелчками мыши; Художник из голливудской студии мог преобразовать отснятый в пасмурный вечер кадры, чтобы они выглядели так, как будто они были сняты солнечным утром, с солнечным светом, проливающим свет с левой стороны экрана.
  • Расширение данных: компания, занимающаяся автономным вождением автомобилей, может синтезировать реалистичные видеоролики о конкретном типе сценария аварии, чтобы пополнить набор обучающих данных; и компания, выпускающая кредитные карты, может синтезировать данные определенного типа данных о мошенничестве, которые недостаточно представлены в наборе данных, для улучшения своей системы обнаружения мошенничества.

В этом посте мы опишем нашу недавнюю работу под названием Transparent Latent-space GAN (TL-GAN), которая расширяет существующие передовые модели для предоставления нового интерфейса. В настоящее время мы работаем над документом, в котором будет больше технических деталей.

Обзор генеративных моделей

Сообщество глубокого обучения быстро прогрессирует в создании генеративных моделей. Среди них три многообещающих типа моделей: авторегрессионные модели, вариационные автокодеры (VAE) и генеративные состязательные сети (GAN), показанные на рисунке ниже. Если вас интересуют подробности, пожалуйста, ознакомьтесь с этим замечательным сообщением в блоге OpenAI.

Пока что GAN производят изображения высочайшего качества (фотореалистичные и разнообразные, с убедительными деталями в высоком разрешении). Взгляните на потрясающие изображения, полученные в результате недавней работы Nvidia с pg-GAN (постепенно растущий GAN). По этой причине этот пост в блоге будет посвящен моделям GAN.

Управление выводом моделей GAN

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

Для достижения управляемого синтеза были созданы многочисленные варианты GAN. Их можно условно разделить на два типа: сети передачи стилей и условные генераторы.

Сети передачи стилей

Сети передачи стилей, представленные CycleGAN и pix2pix, представляют собой модели, обученные переводить изображение из одной области в другую (например, от лошади к зебре, от эскиза к цветным изображениям). В результате мы не можем непрерывно настраивать одну функцию постепенно между двумя дискретными состояниями (например, добавить немного бороды на лицо). Кроме того, одна сеть предназначена для одного типа передачи, поэтому для настройки 10 функций требуется десять разных нейронных сетей.

Условные генераторы

Условные генераторы, представленные условным GAN, AC-GAN и Stack-GAN, представляют собой модели, которые совместно изучают изображения с метками функций во время обучения, что позволяет формировать изображения в зависимости от пользовательских функций. Поэтому, когда вы хотите добавить новые настраиваемые функции в процесс генерации, вам нужно переобучить всю модель GAN, что требует огромного количества вычислительных ресурсов и времени (например, от нескольких дней до недель на одном графическом процессоре K80 с идеальным набором гиперссылок). -параметры). Кроме того, вы должны полагаться на один набор данных, который содержит все метки настраиваемых функций для выполнения обучения, вместо того, чтобы использовать разные метки из нескольких наборов данных.

Наша модель, которую мы называем прозрачным латентным пространством GAN (TL-GAN), решает эти проблемы существующих методов, подходя к задаче управляемой генерации с новой точки зрения. Он предлагает пользователям возможность постепенно настраивать одну или несколько функций в одной сети. Кроме того, добавление новых настраиваемых функций может быть выполнено очень эффективно менее чем за час.

TL-GAN: новый и эффективный подход к управляемому синтезу и редактированию

Делаем таинственное скрытое пространство прозрачным

Мы будем использовать NVIDIA pg-GAN, модель, которая генерирует фотореалистичные изображения лиц с высоким разрешением, как показано в предыдущем разделе. Все характеристики сгенерированного изображения размером 1024 * 1024 пикселей определяются исключительно 512-мерным вектором шума в скрытом пространстве (как низкоразмерное представление содержимого изображения). Следовательно, если бы мы могли понять, что представляет собой скрытое пространство (т.е. сделать его прозрачным), мы могли бы полностью контролировать процесс генерации.

Экспериментируя с предварительно обученным pg-GAN, я обнаружил, что скрытое пространство на самом деле имеет два хороших свойства:

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

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

Подход: раскрытие осей признаков

Чтобы найти эти оси функций в скрытом пространстве, мы будем построить связь между скрытым вектором z и метками функций y с помощью контролируемых методов обучения. обучен на парных данных (z, y). Теперь проблема заключается в том, как получить такие парные данные, поскольку существующие наборы данных содержат только изображения x и соответствующие им метки объектов y.

Возможные подходы:

Один из возможных подходов - вычислить соответствующие скрытые векторы z изображений x_real из существующего набора данных, помеченного интересующими объектами y_real. Однако сеть GAN не предлагает простой способ вычисления z_encode = G ^ (- 1) (x_real), что затрудняет реализацию этой идеи.

Второй потенциальный подход - создание синтетических изображений x_gen с использованием GAN из случайного скрытого вектора z как x_gen = G (z). Проблема здесь в том, что синтетические изображения не имеют меток, и мы не можем легко использовать доступный набор данных с метками.

Для решения этой проблемы ключевым нововведением нашей модели TL-GAN является обучение отдельного экстрактора признаков (классификатора для дискретной метки или регрессора для непрерывной метки) модели y = F (x) y_pred синтетических изображений x_gen с использованием обученной сети экстрактора признаков и, таким образом, устанавливает связь между z и y через синтетические изображения как x_gen = G (z) и y_pred = F (x_gen).

Теперь, когда у нас есть парный скрытый вектор и признаки, мы можем обучить регрессорную модель y = A (z), чтобы раскрыть все оси признаков для управления процессом генерации изображения.

На приведенном выше рисунке показана архитектура модели TL-GAN, которая содержит пять шагов:

  1. Изучение распределения: выберите хорошо обученную модель GAN и возьмите генераторную сеть. Я выбрал хорошо обученный pg-GAN (предоставленный Nvidia), который предлагает лучшее качество генерации лиц.
  2. Классификация: выберите предварительно обученную модель экстрактора признаков (это может быть сверточная нейронная сеть или другие модели компьютерного зрения) или обучите свою собственную сеть экстрактора признаков, используя помеченный набор данных. Я обучил простую сверточную нейронную сеть на наборе данных CelebA (который содержит более 30 000 изображений лиц с 40 метками каждое).
  3. Генерация: генерируйте несколько случайных скрытых векторов, пропускайте через обученный генератор GAN для создания синтетических изображений, а затем используйте обученный экстрактор признаков для создания признаков для каждого изображения.
  4. Корреляция: используйте обобщенную линейную модель (GLM) для выполнения регрессии между скрытыми векторами и функциями. Наклон регрессии становится осями характеристик.
  5. Исследование: начните с одного скрытого вектора, переместите его по одной или нескольким осям характеристик и изучите, как это влияет на сгенерированные изображения.

Я сделал этот процесс очень эффективным; как только у нас есть предварительно обученная модель GAN, определение осей функций занимает всего один час на машине с одним графическим процессором. Это достигается с помощью нескольких инженерных приемов, включая обучение передачи, уменьшение размера изображения, предварительное кеширование синтетических изображений и т. Д.

Полученные результаты

Давайте посмотрим, как работает эта простая идея.

Перемещение скрытого вектора по осям признаков

Во-первых, я проверил, можно ли использовать оси обнаруженных признаков для управления соответствующей особенностью сгенерированного изображения. Для этого я сгенерировал случайный вектор z_0 в скрытом пространстве GAN и создал синтетическое изображение x_0, пропустив его через сеть генератора x_0 = G (z_0). Затем я переместил скрытый вектор вдоль одной оси признаков u (единичный вектор в скрытом пространстве, скажем, соответствующий полу лица) на расстояние λ, чтобы новое местоположение x_1 = x_0 + λu и сгенерировал новое изображение x1 = G (z1). В идеале соответствующий элемент нового изображения должен быть изменен в ожидаемом направлении.

Результаты перемещения вектора скрытого пространства по нескольким осям признаков (пол, возраст и т. Д.) Показаны ниже. Это работает на удивление хорошо! Мы можем плавно трансформировать изображение между мужчиной ← → женщиной, молодым ← → старым и т. Д.

Распутывание коррелированных осей признаков

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

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

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

Гибкое интерактивное редактирование

Чтобы увидеть, насколько гибко наша модель TL-GAN может управлять процессом генерации изображений, я создал интерактивный графический интерфейс, чтобы исследовать эффект постепенной настройки значений признаков по различным осям признаков, как показано ниже:

Опять же, модель работает на удивление хорошо, когда я использую оси функций для управления сгенерированными изображениями!

Резюме

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

У этого метода есть явные преимущества:

  1. Эффективность: Чтобы добавить новый тюнер функций для генератора, вам не нужно повторно обучать модель GAN, поэтому для добавления 40 тюнеров с помощью нашего метода потребуется всего ‹1 час.
  2. Гибкость: вы можете использовать любой экстрактор функций, обученный на любом наборе данных, чтобы добавить больше настройщиков функций в хорошо обученный GAN.

Несколько слов об этике

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

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

Онлайн-демонстрация и код

Весь код и онлайн-демонстрация этой работы доступны на странице проекта Github.

Если вы хотите поиграть с моделью в браузере

Вам не нужно загружать код, модель или данные. Просто следуйте инструкциям в этом разделе страницы README GitHub. Вы можете настраивать лица в своем веб-браузере, как показано в видео выше.

Если вы хотите попробовать мой код

Просто перейдите на страницу README в репозитории GitHub. Код построен на Anaconda Python 3.6 с Tensorflow и Keras.

Если вы хотите внести свой вклад

Добро пожаловать! Не стесняйтесь отправлять Pull Request или сообщать о проблеме на Github.

Обо мне

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

Благодарности

Эта работа выполнялась в рамках трехнедельной программы Инсайт ИИ. Я благодарю программного директора Эммануэля Амейзена и Мэтта Рубашкина за их общее руководство, особенно Эммануэля Амейзена за его предложения и работу по редактированию этого сообщения в блоге. Я также выражаю благодарность всему персоналу Insight за создание прекрасной среды для обучения, а также стипендиатам Insight AI, у которых я многому научился. Особая благодарность Ruobing Xia за то, что он вдохновил меня в выборе направлений проекта, а также за огромную помощь в структурировании и редактировании этого сообщения в блоге.

Этот отрывок изначально был размещен в моем личном блоге.

Хотите узнать о прикладном искусственном интеллекте у ведущих специалистов Кремниевой долины или Нью-Йорка? Узнайте больше о программе Искусственный интеллект на сайте Insight.

Вы - компания, работающая в области искусственного интеллекта, и хотели бы принять участие в программе Insight AI Fellows Program? Не стесняйтесь связаться.