оригинальный автор:Ли Цзямин
Оригинальный текст был опубликован в авторской колонке Zhihu, нажмитеПосмотреть исходный текст,Jizhi получил разрешение на перепечатку. Еще раз спасибо автору.
введение
Одно из самых больших сожалений, которые у меня всегда были с тех пор, как я стал таку, это то, что я не умел рисовать с детства.Единственное, что я могу упомянуть, это то, что на уроке рисования я нарисовал Юи Арагаки как трагедию, как Ву Санги.
После знакомства с машинным обучением я чувствую, что еще могу спасти свою руку. В конце концов, нынешний ИИ умеет играть в шахматы, водить машину, читать хорошие стихи и, кажется, не исключено, что он умеет рисовать. Для этого я изучил следующие темы:Сможете ли вы сломать стену измерений и позволить ИИ преобразовывать реальные лица в картинки в стиле комиксов??
Фактически, в последние годы было предпринято бесчисленное количество попыток научить ИИ рисовать. Два из них были представлены в моих предыдущих статьях:Передача стиля изображенияи использоватьГенеративно-состязательные сети(GAN) для раскрашивания эскизов линий, оба из которых тесно связаны с нашей темой.
Передача стиля изображения
Проще говоря, перенос стиля изображения — это процесс переноса стиля картины на фотографию. Стили могут включать штрихи, цвет, свет и тень, пропорции объекта и многое другое. Поскольку в 2015 году Гейтис изобрел метод передачи изображений с использованием нейронных сетей, проблема, которая беспокоила исследователей, заключается в том, что передача стиля изображения в основном использует предварительно обученные сети распознавания элементов, а обучающий набор, используемый для распознавания элементов, является реальным. методы ив действительностиРазличные пропорции объектов беспомощны. В частности, с точки зрения второго и третьего измерений существует ряд проблем, таких как различное соотношение головы и тела, а также разные размеры глаз и носа.
На самом деле самое прямое решение не сложно:тратить деньги. Попросите кого-нибудь пометить набор данных, посвященный художественным картинам, и переобучить распознаватель объектов, но немногие исследователи готовы платить за тяжелую работу. Использование переноса стиля изображения для преобразования лиц в двухмерные стили в основном заблокировано.
GAN
Если перенос стиля изображения — это один из способов сломать пространственную стену, то другой способ — создать состязательные сети, так называемые GAN (генеративно-состязательная сеть).GANЭто алгоритм, предложенный ныне известным исследователем Яном Гудфеллоу в 2014 году для генерации любых данных, если имеется достаточно обучающих данных и времени, а также достаточно сильная нейронная сеть. через дваигра друг против другаНейронная сеть GAN может имитировать и генерировать неразличимые изображения. Несколько известных примеров приложений, таких как MakeGirlsMoe, для создания двухмерных аватаров.MakeGirlsMoe, а также модель генерации человеческого аватара высокой четкости, запущенная Nvidia Research.PGGAN.
После нескольких лет усовершенствований текущая GAN может генерировать изображения довольно высокого качества. Не только это,GAN также может конвертировать один тип изображения в другой.. В конце 2016 года Филип Изола и др. из Университета Беркли предложилиpix2pixмодель. Имея пару изображений двух разных типов (например, карту и изображение со спутника), Pix2pix может конвертировать два типа изображений друг в друга. В то же время Тайзан Йонэцудзи, работающий в Preferred Networks, также предложилАлгоритм раскраски штрихового рисунка. Эти два алгоритма идеально подходят для нашего проекта преобразования размеров лица, но, к сожалению, для обоих алгоритмов требуются пары обучающих изображений, и из-за капитальных затрат никто не выпускал пары из двух трехмерных наборов данных о лицах.Беспарное междоменное преобразование изображений
Ограничение на использование непарных изображений делает преобразование типов изображений уровнем сложности, сравнимым с изучением нового языка без словаря.
К счастью, похоже, бедность ограничивает воображение не только меня, но и Исследовательского института искусственного интеллекта Facebook. В 2016 году Facebook опубликовал статью под названиемUnsupervised Cross-Domain Image GenerationОсновное содержание статьи заключается в том, как «перевести» два типа изображений без парных данных, но один тип изображения помечен. Вскоре после этого, в 2017 году, Jun-Yan Zhu et al.CycleGanиспользуется дляНемаркированный непарный набор данныхмодель.
Одной из общих черт двух моделей является то, что для решения проблемы несоответствия наборов данных обе модели делают следующие предположения: сначала изображения класса A преобразуются в класс B, а затем преобразуются из класса B обратно в класс A. Между исходным изображением и дважды переведенным изображением не должно быть слишком большой разницы. Используя перевод в качестве примера, после перевода китайского предложения на английский, а затем перевода английского предложения обратно на китайский, полученное предложение должно быть таким же, как предложение в начале, а разница с исходным вводом после второго перевода может быть рассматриваться какПотеря согласованности цикла. CycleGAN обучает нейронную сеть, уменьшая ошибку цикла и добиваясь взаимного преобразования между двумя типами непарных изображений.
Попробуйте CycleGAN
Хорошей новостью является то, что CycleGan имеет открытый исходный код. Найдя существующий алгоритм, я начал собирать данные, необходимые для обучения. Я использовал 200 000 изображений CelebA в качестве базы данных трехмерных аватаров и использовал метод, упомянутый в MakeGirlsMoe, для перехвата в общей сложности около 30 000 двухмерных аватаров с японского игрового сайта Getchu.
Результат выглядит следующим образом: Вроде нормально, но что-то не так. . . Оказывается, у CycleGAN тоже есть свои ограничения. Его требование восстановить ошибку заставляет его сопоставлять всю информацию в исходном изображении с переведенным изображением один к одному. В процессе преобразования из трехмерного в двухмерное информация двухмерного и трехмерного не является асимметричной. Например, трехмерное лицо явно более детализировано, чем двухмерное, а цвет волос и цвет зрачков двухмерного не характерны для трехмерного. Очевидно, что неразумно требовать взаимно однозначного отображения между двумя и тремя элементами, и результаты обучения с этой необоснованной функцией потерь не будут хорошими. Как максимально сохранить части, которые могут соответствовать друг другу без маркировки данных, и вводить новшества там, где нет однозначного соответствия, и превращать трехмерный аватар в двухмерный?Попробуйте еще раз с другого ракурса!
К счастью, когда существующий алгоритм GAN не работает, есть также опыт передачи стиля изображения, на котором можно учиться. Еще в 2016 году Винсент Дюмулен из Google Brain и другие обнаружили, что можно преобразовать изображение во множество разных стилей, просто позволив нейронной сети изучить два параметра в Batch Norm (слой пакетной нормализации).Вы даже можете смешивать и сопоставлять разных стилей друг с другом. их тезисA Learned Representation For Artistic StyleЭто показывает, что параметр Batch Norm, который изначально использовался для повышения стабильности обучения нейронной сети, имеет больший потенциал для использования.
Twin-GAN - технические детали
Основываясь на идеях, упомянутых выше, и после некоторых попыток я остановился на следующей сетевой структуре под названием Twin-GAN: для генератора изображений я использовал PGGAN от Nvidia, который пока работает лучше всего. Так как вход PGGAN представляет собой случайный вектор высокой размерности, а наш вход представляет собой картинку, я использовал симметричный кодировщик (энкодер) с PGGAN для кодирования входного изображения аватара в вектор высокой размерности, а для того, чтобы восстановить изображение Для деталей я использовал структуру UNet для соединения сверточных слоев между кодировщиком и сетью генерации изображений. Есть в основном три типа входов и выходов моей нейронной сети:
- Трехмерный аватар -> кодировщик -> многомерный вектор -> генератор PGGAN + параметр Batch Norm для трехмерного -> трехмерного аватара
- Двумерный аватар -> кодировщик -> многомерный вектор -> генератор PGGAN + параметр Batch Norm для двумерного -> двумерного аватара
- Трехмерный аватар -> кодировщик -> многомерный вектор -> генератор PGGAN + параметры Batch Norm для второго элемента -> двухмерный аватар
Как упоминалось в документе Facebook, основная цель совместного использования кодировщика и генератора для трехмерных и двумерных аватаров состоит в том, чтобы позволить нейронной сети распознавать, что, несмотря на разные длины, двухмерные и трехмерные объемные изображения Все изображения - человеческие лица. Это имеет решающее значение для преобразования двух и трех измерений. Окончательное решение о том, двумерный это переключатель или трехмерный, принимается в параметре Batch Norm.
Что касается функции потерь, я в основном использую следующие четыре функции:
- Функция потерь при восстановлении от трехмерного к трехмерному (потеря l1+GAN)
- Функция уменьшения потерь от квадратичного элемента к квадратичному элементу (потери l1+GAN)
- Функция потерь GAN от трехмерной к двумерной
- Функция потери цикла от трехмерной до двумерной (потеря согласованности цикла).
достижение
Эффект после собственно тренировки следующий:
На этом возможности Twin-GAN не заканчиваются. Поскольку двумерные и трехмерные изображения имеют одно и то же вложение (вектор встраивания), я могу извлечь вложение изображения для поиска ближайших соседей и найти наиболее похожие изображения в двухмерном и трехмерном одновременно. время. Большинство довольно точно. Отсюда мы можем видеть понимание изображения обученной нами нейронной сетью. Для светлых волос он думает, что это похоже на цвет в аниме, а трехмерные каштановые волосы слишком скучны для двухмерного мира, поэтому я сделал небольшую хитрость, чтобы покрасить волосы всем. Выразительные прически также могут найти соответствие на некоторых фотографиях, а некоторые нейронные сети, которые не могут соответствовать, будут инновационными. Например, девушка посередине справа в русской зимней шапке, поскольку такой шапки нет в двумерном наборе данных, нейросеть просто расценивает ее как аксессуар для волос.Неудовлетворительная часть также ясна с первого взгляда на этом изображении. Иногда используется фон в качестве цвета волос (например, нижний левый угол), а иногда меняется ориентация человека. Эти ошибки также используются когда изображение конвертируется.можно посмотреть.
На самом деле область применения нашего алгоритма не ограничивается двумерным преобразованием, а что насчет обучения с кошачьими мордочками?
Мяу! Чувство исцеления. Хотя это выглядит хорошо, во многих случаях меня может не устраивать эффект преобразования изображения, например, исходное изображение имеет черные волосы, а я хочу иметь зеленый цвет волос в преобразованном 2D-аватаре. Спроектированная ранее структура сети не поддерживает прямую настройку этих деталей, поэтому я позаимствовалConditional generative adversarial nets, используйте illust2vec для извлечения цвета волос персонажа, цвета глаз и ряда связанной информации и передайте эту информацию генератору через вектор признаков (встраивание) во время обучения нейронной сети. При генерации картинки я дополнительно передал нейросети на вход аватар двухмерного персонажа, и преобразованная картинка станет внешним видом этого персонажа, и сохранит позу и выражение (TODO) исходной трехмерной картинки . Эффект наверное такой: Результаты далеки от совершенства и могут быть улучшены. Но главное, что у меня теперь естьАлгоритмы, которые могут превращать трехмерные аватары в животных, оригинальных персонажей AI или любых двухмерных персонажей., больше не нужно беспокоиться об инвалидности рук.постскриптум:
Одна из самых больших проблем с существующими алгоритмами — набор данных.Поскольку большинство 2D-портретов, которые я собрал, — женщины, нейронная сеть превратит 3D-женщин-мужчин в 2D-женщин. Кроме того, часто происходит неправильное использование фона в качестве цвета волос, игнорирование и неправильное определение определенных признаков, например, следующий пример неудачи:
Что нужно сделать, так это не только улучшить и оптимизировать существующую модель, кроме того, есть еще много вещей, которые можно сделать в плане взаимного преобразования трехмерного и двухмерного, например, как расширить сгенерированные изображения от лиц к более богатым и разнообразным изображениям, например, как улучшить в реальном времени, когда сгенерированные результаты неудовлетворительны, или распространить этот алгоритм на видео и т. д.Стоит отметить, что несколько месяцев назад Шуанг Ма предложил использовать название Attention Map.DA-GANАлгоритм генерации изображения . А Nvidia анонсировала их только вчерапоследние исследования, показывающая нейронную сеть, способную превращать кошек в собак. Это заставляет меня с еще большим нетерпением ждать дальнейших разработок в области преобразования изображений в будущем. Это впечатляет!
Соответствующие газеты и веб-сайты будут запущены как можно скорее. Пожалуйста, обратите внимание на мою учетную запись Zhihu для получения соответствующих обновлений. Спасибо за чтение!
Примечание: В этой статье многие аргументы упрощены для удобства понимания, что строго не запрещено.Также обратите внимание и поймите. Те, кто интересуется техническими подробностями, могут прочитать статьи в цитируемом разделе.
Цитировать
A Neural Algorithm of Artistic Style
A Learned Representation For Artistic Style
Unsupervised Cross-Domain Image Generation
Spectral Normalization for Generative Adversarial Networks
Conditional generative adversarial nets
Multimodal Unsupervised Image-to-Image Translation
Добро пожаловать, чтобы следовать за нами, учебные ресурсы, учебные пособия по искусственному интеллекту, интерпретация документов, интересная популярная наука, все, что вы хотите увидеть, здесь!