Этот блог создается и поддерживается студентами программы профессионального магистра в Школе компьютерных наук Университета Саймона Фрейзера в рамках их кредита на курс. Чтобы узнать больше об этой уникальной программе, посетите {sfu.ca/computing/pmp}.

Авторы: Рави Киран Дубей, Ручита Розарио, Славви Коэльо, Зиюэ Ся

Мы все попробовали FaceApp Challenge, который дал нам красивое модное лицо, которое мы всегда хотели, а также морщины, к которым мы не были готовы. Мы определенно благодарим наших богов за две секунды, которые мы экономили каждый раз, когда наш iPhone 11 узнавал наше лицо при разблокировке. Это только часть достижений AI в области обработки цифровых изображений. Настоящий MVP здесь - это технология, которая может мыслить как люди и принимать решения сама по себе, без явного программирования. Речь идет о нейронных сетях.

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

Таким образом, возникла потребность иметь что-то, что может генерировать новые изображения в дополнение к классификации существующих. Войдите в «Генеративные состязательные сети», также известные как GAN! GAN - это комбинация двух нейронных сетей, конкурирующих друг с другом за создание новых экземпляров данных, которые могут выдаваться за реальные данные.

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

Вступление

GAN представляют собой комбинацию двух нейронных сетей - дискриминатора и генератора. Генератор создает новые экземпляры данных с начальным подаваемым случайным шумом и в конечном итоге становится лучше при генерации изображений из желаемой области. С другой стороны, дискриминатор выполняет функцию аутентификации подаваемых на него изображений, например, выводит, является ли подаваемое на него изображение реальным изображением кошки или нет (моделирование GAN странно одержимо созданием новых изображений кошек. по неизвестным причинам: P). Если дискриминатор может определить, фальшивка ли это, генератор получает отрицательное вознаграждение. Дискриминатор поочередно получает набор реальных достоверных наземных данных вместе с синтетическими изображениями, генерируемыми генератором. Это помогает дискриминатору изучить особенности, которые помогают ему правильно отличить поддельное изображение от реального. С другой стороны, цель генератора - генерировать изображения, которые проходят через дискриминатор как реальное изображение. Нейронные сети соревнуются за одно и то же число - коэффициент ошибок дискриминатора. Дискриминатор хочет, чтобы ошибка была низкой, а генератор хочет, чтобы она была высокой.

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

Архитектура GAN

  • Первоначально на генератор подается вектор случайного шума, на основе которого он генерирует изображение.
  • Это сгенерированное изображение подается в дискриминатор, чередуясь с потоком изображений, взятых из фактического набора достоверных данных.
  • Дискриминатор теперь использует нейронную сеть для возврата вероятностей от 0 до 1, представляющих, является ли входное изображение подлинным или изображение, сгенерированное генератором.
  • Правило двойной обратной связи работает следующим образом: дискриминатор находится в контуре обратной связи с изображениями истинной реальности. Генератор находится в цепи обратной связи с дискриминатором.

Почему CycleGAN?

Основной лазейкой в ​​системе двойной обратной связи является проблема коллапса мод. Здесь, после определенного количества итераций, генератор перестает генерировать интересные и новые выходные данные, поскольку он уже обнаружил определенные образцы / режимы, которые прошли тест дискриминаторов. Дискриминатор технически не может жаловаться на это, поскольку генератор дает верный результат. Примером этого может быть GAN, который генерирует цифры, то есть от режима 0 до режима 9.

Мы можем заметить, что после 100 тыс. Шагов модель возвращает только режим 6 в качестве выходных данных. Это требует, чтобы мы разработали архитектуру, способную проверять результат, сгенерированный моделью.

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

Архитектура CycleGan

CycleGAN содержит сеть из двух GAN, каждая из которых имеет генератор и модель дискриминатора. Генератор принимает входное изображение и производит выходной. Затем дискриминатор сравнивает выходные данные с входными и предсказывает, принадлежат ли оба изображения к одному классу или нет.

Рассмотрим два класса входов: Вход A - Набор изображений зебр, Вход B - Набор изображений лошадей.

Ган А состоит из:

  • Генератор A: он принимает входное изображение зебр и генерирует изображение лошадей.
  • Дискриминатор A: он сравнивает выходное изображение из генератора A с набором изображений на входе A, прогнозирует, похожи ли изображения, и принимает решение.

Точно так же Gan B состоит из:

  • Генератор B: он принимает выходные данные генератора A в качестве входных данных, то есть изображение лошадей, и генерирует изображение зебр.
  • Дискриминатор B: он сравнивает выходное изображение из генератора B с набором изображений на входе B и предсказывает, похожи ли изображения, и принимает решение.

До сих пор мы видели, что указанная выше модель генерирует изображение, но сгенерированное изображение не является переводом входного изображения. Здесь проявляется потеря согласованности цикла. При потере согласованности цикла вычисляется разница потерь между входным изображением для Gan A и выходным изображением из Gan B с использованием нормы L1 или суммарной абсолютной разницы в значениях пикселей.

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

Приложения CycleGAN

Преобразование объектов: Преобразование изображений с объектами, принадлежащими одному домену, в другой домен - это очень классическое приложение CycleGAN. Они включают в себя широкий спектр примеров, таких как яблоки и апельсины, лошади и зебры, медведи и панды и так далее.

Преобразование фотографий из картин: Создание фотографий из картин и наоборот также в последнее время стало одним из самых интересных и часто используемых приложений CycleGAN.

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

Изменение стиля изображения: преобразование изображений из одного стиля в другой, например от Моне к Ван Гогу.

Недостатки

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

На изображении выше показано плохое превращение кошки в собаку, поскольку они имеют разное строение.

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

CycleGAN в будущем

CycleGAN по-прежнему является новой технологией, имеющей ограничения и огромным потенциалом. Теперь, с CycleGAN, мы можем создавать новые невидимые изображения на основе входных данных объекта, имеющего аналогичную геометрическую структуру. Были созданы проекты для визуализации влияния стихийных бедствий на дома, чтобы повысить осведомленность людей об изменении климата, или для создания видео со сменой лиц, которое генерирует совершенно другое лицо с помощью CycleGAN. Обратите внимание, что CycleGAN не нуждается в парных изображениях в наборе данных для обучения, а это означает, что теперь мы можем не только преобразовать реальный объект в искусственное произведение, но и сделать искусственное произведение более реалистичным. Было бы очень интересно увидеть, как CycleGAN используется в разных отраслях - может быть, для создания изображения улиц Майами, покрытого снегом, для фильма с более низким бюджетом, или для того, чтобы персонажи следующего фильма-ремейка с живым действием выглядели почти так же, как в классическом. мультик!