Изготовление порно картинок знаменитостей не является чем-то новым. Однако в конце 2017 года пользователь Reddit по имени Deepfakes начал применять глубокое обучение для создания поддельных видеороликов знаменитостей. Это запускает новую волну фейковых видео в Интернете. DARPA, как часть вооруженных сил США, также финансирует исследования по обнаружению фальшивых видеороликов. На самом деле применение ИИ для создания видео началось задолго до Deepfakes. Face2Face и UW «синтезируют Обаму (учат синхронизацию губ по звуку)» создают фальшивые видеоролики, которые еще труднее обнаружить. Угроза настолько реальна, что Джордан Пил создал ее внизу, чтобы предупредить общественность. Это видео создано с помощью Adobe After Effects и FakeApp (приложение Deepfakes).

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

Примечание. Более подробную и полную серию статей о Deepfakes можно найти здесь.

Основная концепция

Концепция Deepfakes очень проста. Допустим, мы хотим перенести лицо человека А на видео человека Б.

Сначала мы собираем сотни или тысячи фотографий для обоих. Мы создаем кодировщик для кодирования всех этих изображений с использованием сети CNN с глубоким обучением. Затем мы используем декодер для восстановления изображения. Этот автоэнкодер (кодировщик и декодер) имеет более миллиона параметров, но даже не настолько близок, чтобы запомнить все изображения. Таким образом, кодировщику необходимо извлечь наиболее важные функции, чтобы воссоздать исходный ввод. Думайте об этом как об эскизе преступления. Характеристики - это описания свидетеля (кодировщика), и художник составных эскизов (декодер) использует их для восстановления изображения подозреваемого.

Чтобы декодировать функции, мы используем отдельные декодеры для человека A и человека B. Теперь мы обучаем кодировщик и декодеры (используя обратное распространение) таким образом, чтобы входные данные точно соответствовали выходным. Этот процесс требует много времени. С графической картой GPU для получения достойных результатов требуется около 3 дней. (после повторной обработки изображений около 10+ миллионов раз)

После обучения мы обрабатываем видео по кадрам, чтобы поменять лицо человека на лицо. Используя функцию распознавания лиц, мы извлекаем лицо человека A и вводим его в кодировщик. Однако вместо того, чтобы передавать исходный декодер, мы используем декодер человека B для восстановления изображения. то есть мы рисуем человека B с чертами A в исходном видео. Затем мы объединяем только что созданное лицо с исходным изображением.

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

Изображение

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

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

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

На нашем изображении лица мы выбираем точки сетки 5 × 5 и немного сдвигаем их от исходных позиций. Мы используем простой алгоритм для деформации изображения в соответствии с этими смещенными точками сетки. Даже искаженное изображение может выглядеть не совсем правильно, но это тот шум, который мы хотим привнести. Затем мы используем более сложный алгоритм для построения целевого изображения с использованием смещенных точек сетки. Мы хотим, чтобы наши созданные изображения выглядели как можно ближе к целевым изображениям.

Это кажется странным, но это заставляет автокодировщик изучать самые важные функции.

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

Модель глубокой сети

Давайте сделаем небольшой перерыв, чтобы проиллюстрировать, как может выглядеть автоэнкодер. (Здесь необходимы некоторые базовые знания CNN.) Кодер состоит из 5 сверточных слоев для извлечения признаков, за которыми следуют 2 плотных слоя. Затем он использует сверточный слой для повышения разрешения изображения. Декодер продолжает повышающую дискретизацию с еще 4 сверточными слоями, пока не восстановит изображение 64 × 64.

Чтобы повысить разрешение пространственного измерения, скажем, с 16 × 16 до 32 × 32, мы используем фильтр свертки (фильтр 3 × 3 × 256 × 512), чтобы отобразить слой (16, 16, 256) в (16, 16, 512) . Затем мы изменяем его на (32, 32, 128).

Проблемы

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

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

Начнем с двух картинок (1 и 2) для 2 женщин. На рисунке 4 мы пытаемся вставить лицо 1 на 2. Мы понимаем, что их лицо сильно отличается, а вырез лица (красный прямоугольник) слишком велик. Просто похоже, что на нее надели бумажную маску. Теперь давайте попробуем вместо этого наклеить грань 2 на 1. На рисунке 3 мы используем вырез меньшего размера. Мы создаем маску, которая удаляет некоторые угловые области, чтобы вырез мог лучше сливаться. Это не очень хорошо, но определенно лучше, чем 4. Но есть резкое изменение тона кожи вокруг пограничной области. На рисунке 5 мы уменьшаем непрозрачность маски вокруг границы, чтобы созданное лицо могло лучше слиться. Но цветовой тон и яркость выреза все равно не соответствуют заданной. Итак, на рисунке 6 мы настраиваем цветовой тон и яркость выреза в соответствии с нашей целью. Это еще недостаточно хорошо, но неплохо для наших крошечных усилий.

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

  • применить фильтр Гаусса для дальнейшего рассеивания границы области маски,
  • настроить приложение для дальнейшего расширения или сжатия маски, или
  • контролировать форму маски.

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

Даже автоэнкодер должен создавать лица в соответствии с целевым цветовым тоном, иногда ему нужна помощь. Deepfakes обеспечивает постобработку для настройки цветового тона, контрастности и яркости созданного лица в соответствии с целевым видео. Мы также можем применить бесшовное клонирование cv2, чтобы смешать созданное изображение с целевым изображением, используя автоматическую настройку тона. Однако некоторые из этих усилий могут оказаться контрпродуктивными. Мы можем сделать так, чтобы конкретная рамка выглядела великолепно. Но если мы переусердствуем, это может повредить временной плавности кадров. Действительно, бесшовные клоны в Deepfakes - это основная возможная причина фликеров. Поэтому люди часто отключают плавный переход, чтобы посмотреть, можно ли уменьшить подергивание.

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

Достопримечательности

Мы также можем деформировать наше созданное лицо в соответствии с ориентирами лица в исходном целевом кадре.

Вот как Изгой-Один превращает лицо младшей принцессы Леи в лицо другой актрисы.

Лучшая маска

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

Давайте познакомимся с генерирующими противоборствующими сетями (GAN).

GAN

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

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

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

Функция потерь

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

Демонстрация

Позвольте мне выбрать несколько хороших видео Deepfakes и посмотреть, сможете ли вы их обнаружить сейчас. Играйте в замедленном режиме и обратите особое внимание на:

  • Не слишком ли оно размыто по сравнению с другими нефимицевыми областями видео?
  • Это щелкает?
  • Есть ли изменение тона кожи у края лица?
  • У него двойной подбородок, двойные брови, двойные края на лице?
  • Когда лицо частично закрыто руками или другими предметами, оно мигает или становится расплывчатым?

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

Синхронизация губ по аудио

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

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

Сначала с помощью сети LSTM звук x преобразуется в последовательность из 18 контрольных точек y в губа. Этот LSTM выводит разреженную форму рта для каждого выходного видеокадра.

Учитывая форму рта y, он синтезирует текстуру рта для области рта и подбородка. Эти текстуры рта затем объединяются с целевым видео для воссоздания целевого кадра:

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

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

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

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

UW использует существующие рамки для создания текстуры рта. Вместо этого мы можем использовать концепцию Deepfakes для генерации текстуры рта непосредственно из автоэнкодера. Нам нужно собрать тысячи кадров и использовать LSTM для извлечения функций как из видео, так и из аудио. Затем мы можем обучить декодер генерировать текстуру рта.

Больше мыслей

Особенно интересно наблюдать, как мы применяем концепции искусственного интеллекта для создания новых идей и новых продуктов, но не без предупреждения! Социальные последствия могут быть огромными. На самом деле, не публикуйте фейковые видео для развлечения! Это может привести к неприятностям с законом и навредить вашей репутации в Интернете. Я изучаю эту тему из-за моего интереса к метаобучению и обнаружению злоумышленников. Лучше используйте свою энергию для более инновационных вещей. С другой стороны, поддельные видео останутся и будут улучшаться. Моя цель - не создавать лучшие фейковые видео. Я надеюсь, что благодаря этому процессу мы знаем, как лучше применять GAN для восстановления изображения. Возможно, однажды это поможет в обнаружении опухолей.

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

Список других статей



Ссылка

Синтезируя Обаму: учимся синхронизировать губы по аудио

Бесшовное клонирование

Потери восприятия

Кредиты

Фотографии (Головной платок)