В MLJCUnito мы глубоко убеждены, что, прежде всего, ИИ должен быть этичным. Вот почему несколько месяцев назад мы решили принять участие в DeepFake Detection Challenge: совместном вкладе Amazon AWS, Facebook и Microsoft. Короче говоря, методы дипфейков представляют собой реалистичные видеоролики, созданные искусственным интеллектом, на которых люди делают и говорят вымышленные вещи. Они могут оказать существенное влияние на то, как люди определяют легитимность информации, представленной в Интернете, и, как граждане, мы должны быть хорошо осведомлены об этой технологии.

DeepFake: угроза демократии или просто развлечение?

"Мы уже достигли того момента, когда вы не сможете отличить дипфейки от настоящих", профессор Хао Ли, Университет Южной Калифорнии.

Facebook объявила, что удалит видео, модифицированные искусственным интеллектом, известные как дипфейки, со своей платформы.

Kaggle — это AirBnB для специалистов по данным.

Здесь они проводят ночи и выходные. Это краудсорсинговая платформа для привлечения, воспитания, обучения и стимулирования специалистов по данным со всего мира для решения задач в области науки о данных, машинного обучения и прогнозной аналитики. Он насчитывает более 536 000 активных участников из 194 стран и получает около 150 000 заявок в месяц. Основанная в Мельбурне, Австралия, Kaggle переехала в Силиконовую долину в 2011 году, привлекла около 11 миллионов долларов от таких компаний, как Хэл Вэриан (главный экономист Google), Макс Левчин (Paypal), Index и Khosla Ventures, а затем в конечном итоге была приобретена Google в Март 2017 года. Kaggle — это место номер один для энтузиастов науки о данных со всего мира, которые соревнуются за призы и повышают свой рейтинг Kaggle. На сегодняшний день в мире всего 94 гроссмейстера Kaggle.

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

Хорошо, хорошо, хорошо, но что мы делаем на Kaggle? Мы учимся

Дипфейки — это подделки, созданные с помощью глубокого обучения. Пока так легко.

Обычно это означает, что кто-то использовал генеративную модель, такую ​​как AutoEncoder или, скорее всего, Generative Adversarial Network, сокращенно GAN. GAN технически представляют собой две сети, которые работают друг против друга, как показано ниже. художник ( генератор) черпает вдохновение из образца шума и создает визуализацию данных, которые вы пытаетесь создать с помощью указанной GAN. Частный следователь (дискриминатор) случайным образом получает настоящие и поддельные данные для расследования.

Процесс обучения носит совместный характер. Генератор лучше обманывает дискриминатор, а дискриминатор лучше выясняет, какие данные реальны, а какие нет. Говоря математическим языком, они учатся до тех пор, пока не будет достигнуто равновесие Нэша, что означает, что ни один из них не может научиться новым трюкам и стать лучше. Это действительно крутая концепция, и ее даже использовали в научном моделировании в ЦЕРНе.

Вы, наверное, догадались, что их сложно тренировать из-за большого количества движущихся частей. Это стало очень популярной областью исследований, требующей зоопарка GAN из всех названных GAN. Некоторые важные вещи, которые вы, возможно, захотите проверить, если вас это интересует, — это ключевые слова, такие как Wasserstein GAN, Gradient Penalization, Attention и в этом контексте: Style Transfer (а именно, face2face).

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

Несколько советов по Официальному вызову на Kaggle

  • Я настоятельно рекомендую вам начать сначала с официального руководства по началу работы здесь.
  • Какова цель Deepfake Detection Challenge? Согласно FAQ, «технологии искусственного интеллекта, которые используются для дипфейков и других фальсифицированных носителей, быстро развиваются, что делает дипфейки настолько трудными для обнаружения, что иногда даже люди-оценщики не могут достоверно отличить их. Задача Deepfake Detection Challenge призвана стимулировать быстрый прогресс в этой области, предлагая участникам соревноваться в создании новых способов обнаружения и предотвращения манипулирования медиа».
  • В этом соревновании Кодекса:
  • Блокнот с процессором ‹= 9 часов работы, блокнот с графическим процессором ‹= 9 часов работы с графическими процессорами Kaggle P100, без доступа к Интернету
  • Внешние данные разрешены размером до 1 ГБ. Внешние данные должны быть свободно и общедоступны, включая предварительно обученные модели.
  • Учебный набор этого соревнования по коду недоступен непосредственно на Kaggle, так как его размер слишком велик для обучения в Kaggle. Вместо этого настоятельно рекомендуется проводить обучение в автономном режиме и загружать модель, обученную извне, в качестве внешнего набора данных в блокноты Kaggle, чтобы выполнять выводы на тестовом наборе. Ознакомьтесь с разделом «Начало работы» для получения более подробной информации.

Представления оцениваются по проигрышу журнала:

где:

  • n — количество прогнозируемых видео.
  • прогнозируемая вероятность того, что видео является ПОДДЕЛЬНЫМ
  • 1, если видео ФЕЙК, 0, если НАСТОЯЩЕЕ
  • log() — натуральный логарифм (по основанию e).

"Данные"

  • У нас есть набор файлов .mp4, разбитых на сжатые наборы по ~10 ГБ каждый. metadata.json сопровождает каждый набор файлов .mp4 и содержит имя файла, метку (НАСТОЯЩАЯ/ПОДДЕЛЬНАЯ), исходные и разделенные столбцы, перечисленные ниже в разделе "Столбцы".
  • Полный тренировочный набор весит чуть более 470 ГБ (да, он огромный!).

С этим соревнованием связано 4 группы наборов данных.

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

Общедоступный набор проверки: когда вы фиксируете блокнот Kaggle, создаваемый выходной файл отправки будет основан на небольшом наборе из 400 видео/идентификаторов, содержащихся в этом общедоступном наборе проверки. Это доступно на странице данных Kaggle как test_videos.zip

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

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

Обзор файлов данных, доступных в ядре

  • train_sample_videos.zip — ZIP-файл, содержащий образец набора обучающих видео и файл metadata.json с метками. полный набор обучающих видео доступен по ссылкам, указанным выше.
  • sample_submission.csv — образец файла отправки в правильном формате.
  • test_videos.zip – ZIP-файл, содержащий небольшой набор видео, который будет использоваться в качестве общедоступного набора для проверки. Чтобы понять наборы данных, доступные для этого соревнования, ознакомьтесь с информацией по началу работы.
  • имя файла — имя файла видео.
  • ярлык — является ли видео НАСТОЯЩИМ или ПОДДЕЛЬНЫМ.
  • оригинал – в случае, если видео с поездом является ПОДДЕЛЬНЫМ, здесь указывается оригинальное видео.
  • split — это всегда равно «поезду».

Стартовый комплект обнаружения

Краткое руководство по DeepFakes: DeepFakes and Beyond: A Survey of Face Manipulation and Fake Detection

Здесь он следует за видеороликом Deep FakesEDA (Исследовательский анализ данных). Он использует статический FFMPEG для чтения/извлечения данных из видео.

  • Он извлекает метаданные. Они помогают нам узнать частоту кадров, размеры и аудиоформат (мы можем забыть об утечке «display_ratio», так как она будет исправлена).
  • Он извлекает кадры видео в формате PNG.
  • Звуковая дорожка извлекается как AAC (отключено).
  • Он сравнивает несколько детекторов лиц (OpenCV HaarCascade, MTCNN). В конце концов мы действительно выбрали RetinaFace.
  • Он предоставляет базовую статистику по лицам на видео, ширине/высоте лица и достоверности обнаружения лиц. Он вычисляет среднюю ширину/высоту лица.

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

В этом ядре вы также увидите несколько интересных крайних случаев обнаружения лиц:

  • На футболке обнаружено лицо.
  • Лицо обнаружено на фоновой доске.
  • Лицо обнаружено внутри лица.

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

Немного информации о битрейте

Попробуйте запустить код самостоятельно, вы можете найти файл блокнота Jupyter на моем Github. Если вы исследуете тот же репозиторий, вы найдете код, который мы использовали для всего пайплайна, скоро мы собираемся преобразовать его в серию статей.

Спасибо за внимание, если вам нравятся наши проекты, подписывайтесь на нас на Medium и Github. Скоро мы выпустим больше статей.