Тест: Сможете распознать фейковые фото, созданные GAN?

10 декабря 2018
gan фейковые фотографии

Тест: Сможете распознать фейковые фото, созданные GAN?

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

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

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

Тест

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

фейковые фото DCGAN 2014
Фото, созданные DCGAN в 2014

Как видите, в 2014 GAN создавали изображения, которые легко отличить от реальных фотографий.

На изображении ниже примеры лиц, сгенерированных нейросетью в 2017:

фейковые фото twin-gan
Реалистичные фото знаменитостей, сделанные с помощью PGAN в 2017

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

Волосы выглядят размазанными или окрашенными

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

Непонятный текст

фейковые фото созданные нейросетью

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

Сюрреалистичный фон

фейковые фотографии людей gan

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

Ассиметрия

как отличить реальные фото от фейковых сгенерированных нейросетью

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

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

Уши тоже могут быть разного размера и не совпадать по высоте.

Зубы

зубы на фейковых фото

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

Растрепанные волосы

волосы на фейковых фотографиях gan

Быстрый способ идентифицировать сгенерированное GAN изображение. Сеть собирает волосы в пучки, создает случайные пучки вокруг головы и на лбу. Работа с волосами — одна из самых сложных для GAN, потому что прически имеют много вариаций и деталей.

Смешивание гендеров

ошибки gan на фотографиях

Эта GAN была обучена на датасете CelebA , который  содержит 200 000 изображений лиц 10 000 знаменитостей. В наборе данных не было примеров людей одновременно с волосами на лице, косметикой и серьгами, но GAN может смешивать подобные признаки.

Шум

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

Переливы цвета

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

Примеры реальных изображений людей

реальные фото людей

Теперь посмотрите фото с реальными людьми. Обратите внимание на фон, симметрию, прически. Можно снова пройти тест и посмотреть, насколько уменьшилось количество ошибок.

Инструменты, которые позволят автоматизировать проверку фейкового контента, уже в разработке. Американские исследователи создали алгоритм, который распознаёт видео с фейками c 99% точностью, анализируя частоту морганий, а нейросеть от Adobe разоблачает поддельные фотографии, автоматически выявляя обработанные и измененные части изображения.

Исследователи MIT-IBM Watson AI Lab показали, что GAN понимает основы композиции

4 декабря 2018
GAN Paint Dissection

Исследователи MIT-IBM Watson AI Lab показали, что GAN понимает основы композиции

Генеративные нейросети (GAN) продемонстрировали способность создавать фотореалистичные изображения. Однако неизвестно, изучают ли сети композицию или работают за счет воспроизведения пиксельных паттернов. Компьютер может рисовать сцену двумя способами: самостоятельно составлять композицию…

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

Компьютер может рисовать сцену двумя способами:

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

Приложение GAN Paint и метод GAN Dissection, разработанный исследователями MIT-IBM Watson AI Lab показали, что нейросети все-таки обучаются некоторым аспектам композиции:

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

GAN Dissection

GAN Dissection использует сеть сегментации вместе с алгоритмом Network Dissecton, чтобы найти отдельные нейроны в генераторе, которые соответствуют классам объектов, например деревьям:

GANPaint
Схема работы алгоритма

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

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

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

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

ganpaint door
GAN Paint дорисовал дверь на всех изображениях

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

GAN PAint
На небе нейросеть дверь не рисует

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

Попробуйте управлять нейронами в интерактивной версии приложения.

GAN применили для подделки отпечатков пальцев

20 ноября 2018

GAN применили для подделки отпечатков пальцев

Учёные из Нью-Йоркского университета создали DeepMasterPrints — нейронную сеть, которая генерирует изображения отпечатков пальцев, подходящих большому количеству людей. Потенциально технология может подорвать работу биометрических систем контроля доступа, которые используют для…

Учёные из Нью-Йоркского университета создали DeepMasterPrints — нейронную сеть, которая генерирует изображения отпечатков пальцев, подходящих большому количеству людей. Потенциально технология может подорвать работу биометрических систем контроля доступа, которые используют для идентификации пользователя только часть отпечатка. Так работает, например, разблокировка смартфона.

Как работает DeepMasterPrints

Исследователи объясняют, что их метод работает по примеру “dictionary attacs”. То есть, осуществляется полный перебор всех возможных вариантов для поиска наиболее подходящего.

В основе алгоритма — генеративно-состязательная нейросеть (GAN). Команда обучила сеть на 5400 реальных отпечатков из набора NISTАлгоритм генерирует изображения отпечатков, после чего ищет общие признаки, и выбирает отпечаток, который подойдет для максимального количества образцов из обучающего набора. При уровне допустимой погрешности в 1%, результат эффективен для 76% тестовых отпечатков.

Примеры реальных (слева) и сгенерированных отпечатков (справа)

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

GAN не справляется с генерацией оптических иллюзий

16 октября 2018

GAN не справляется с генерацией оптических иллюзий

Нейронные сети хорошо показывают себя в задачах распознавания лиц и объектов на изображениях. Им под силу даже генерация реалистичных изображений. Ученые предположили, что это сработает и в случае с оптическими…

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

Датасеты

Механизм возникновения и восприятия оптических иллюзий плохо изучен, поэтому даже сбор данных для обучения представляет сложность. Ученые из Луисвиллского университета создали два датасета с оптическими иллюзиями. Первый собран с двух сайтов и содержит 6752 изображения. Второй содержит 500 вручную отобранных изображений. Датасеты упорядочены по категориям и классам и доступны к скачиванию в облачной платформе FloydHub.

Эксперимент и результаты

Исследователи протестировали генеративно-состязательную нейросеть после 7 часов обучения на видеокарте NVIDIA Tesla K80, однако не достигли никаких значительных результатов — изображения, которые генерирует нейросеть мало похожи на оптические иллюзии. Учёные предполагают, что результат можно незначительно улучшить, изменяя настройки гиперпараметров и обучив нейросеть на большем наборе данных.

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

Как работает вариационный автоэнкодер (VAE)

11 октября 2018
вариационный автоэнкодер vae

Как работает вариационный автоэнкодер (VAE)

В противоположность использованию нейросетей в качестве регрессоров или классификаторов, вариационный автоэнкодер (Variational Autoencoder – VAE) — генеративная модель, которая находит применение во многих областях исследований: от генерации новых человеческих лиц…

В противоположность использованию нейросетей в качестве регрессоров или классификаторов, вариационный автоэнкодер (Variational Autoencoder – VAE) — генеративная модель, которая находит применение во многих областях исследований: от генерации новых человеческих лиц до создания полностью искусственной музыки.

Обычный вариационный автоэнкодер
Обычный вариационный автоэнкодер

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

Прежде всего, зачем нужен вариационный автоэнкодер?

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

Специфичное изменение входных данных
Специфичное изменение входных данных

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

В случае, если вы незнакомы с энкодерами, но знаете о свёрточных нейронных сетях (Convolutional Neural Networks — CNNs), то, по сути, вы уже знаете, что делает автоэнкодер.

Энкодер внутри CNN
Энкодер внутри сверточной нейросети

Свёрточные слои принимают большое изображение (к примеру, тензор 3-го ранга размером 299х299х3) и преобразует его в более компактный, плотный вид (к примеру, тензор 1-го ранга размером 1000). Этот сжатый вид затем использует нейросеть для классификации изображения.

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

Автоэнкодеры используют ту же идею, но в другом виде: энкодер генерирует закодированные данные, пригодные для восстановления входных данных.

Классический автоэнкодер
Классический автоэнкодер

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

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

Проблема классических автоэнкодеров

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

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

Оптимизация потерь восстановления
Оптимизация потерь восстановления

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

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

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

Вариационные Автоэнкодеры

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

Непрерывность скрытого пространства достигается неожиданным способом: энкодер выдаёт не один вектор размера n, а два вектора размера n – вектор средних значений µ и вектор стандартных отклонений σ.

Схема работы Вариационного автоэнкодера
Схема работы Вариационного автоэнкодера

Вариационные автоэнкодеры формируют параметры вектора длины n из случайных величин Xi, причем i-е элементы векторов µ и σ являются средним и стандартным отклонением i-й случайной величины Xi. Вместе эти величины образуют n-мерный случайный вектор, который посылается на декодер для восстановления данных:

Стохастическая генерация векторов кодирования
Стохастическая генерация векторов кодирования

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

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

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

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

Для того чтобы достичь этого, в функцию потерь вводится так называемая Kullback–Leibler расходимость (KL divergence). КL расходимость между двумя функциями распределения показывает насколько сильно они отличаются друг от друга. Минимизация KL расходимости означает оптимизацию параметров распределения µ и σ таким образом, что они становятся близки к параметрам целевого распределения.

Для Вариационных Автоэнкодеров KL потери эквивалентны сумме всех KL расходимостей между распределением компонент Xi~N(μi, σi²) в векторе Х и нормальным распределением. Минимум достигается, когда µi = 0 и σi = 1.

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

При использовании KL потерь области кодирования расположены случайным образом в окрестности выделенной точки в скрытом пространстве со слабым учётом сходства между образцами входных данных. Поэтому декодер не способен извлечь что-либо значащее из этого пространства:

Оптимизация с использованием KL потерь
Оптимизация с использованием KL потерь

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

Оптимизация с использованием потерь восстановления и KL потерь
Оптимизация с использованием потерь восстановления и KL потерь

Достигнутый результат – это компромисс между кластерной природой потерь восстановления, необходимой декодеру, и нашим желанием иметь плотно расположенные векторы при использовании KL потерь. И это здорово, потому что теперь, если вы хотите восстановить входные данные, вы просто выбираете подходящее распределение и посылаете его в декодер. А если вам необходимо произвести интерполяцию, то вы можете смело её осуществить, так как пространство представляет собой гладкое распределение особенностей, что декодер без труда способен обработать.

Код общей функции потерь

Векторная алгебра

Как мы производим гладкую интерполяцию, о которой было так много сказано выше? Ответ кроется в простой векторной алгебре — рассмотрим её.

Интерполяция между двумя векторами
Интерполяция между двумя векторами

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

Добавление новых особенностей к заданному образцу
Добавление новых особенностей к заданному образцу

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

Улучшения VAE

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

Создание искусственных фото людей
Создание искусственных фото людей

Кроме того, вы можете обучать автоэнкодер, используя LSTM пару энкодер-декодер и модифицированную версию архитектуры seq2seq,и использовать его для дискретных данных. К примеру, генерировать текст или даже производить интерполяцию между MIDI сигнашами, как делает Google Brain’s Magenta’s MusicVAE:

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


Интересные статьи:

Нейросеть создает МРТ-снимки мозга для тренировки алгоритмов диагностики

25 сентября 2018

Нейросеть создает МРТ-снимки мозга для тренировки алгоритмов диагностики

Разработчикам нейронных сетей для оценки медицинских снимков не хватает точных и надёжных данных для тренировки моделей машинного обучения. Исследователи NVIDIA, клиники Майо и Центра исследования клинических данных представили нейросеть для создания снимков МРТ головного мозга, которые затем…

Разработчикам нейронных сетей для оценки медицинских снимков не хватает точных и надёжных данных для тренировки моделей машинного обучения. Исследователи NVIDIA, клиники Майо и Центра исследования клинических данных представили нейросеть для создания снимков МРТ головного мозга, которые затем можно использовать для обучения алгоритмов диагностики.

«Наборы данных часто несбалансированы, поскольку патологические результаты обычно редки, что создает серьезные проблемы при обучении моделей. Мы предлагаем метод создания синтетических изображений МРТ с опухолями головного мозга с помощью генеративносостязательной нейросети» — написали исследователи в статье.

Команда разработала модель глубокого обучения на основе алгоритма pix2pix. Нейросеть обучили на изображениях из двух общедоступных датасетов, содержащих МРТ головного мозга с изменениями, вызванными опухолями и болезнью Альцгеймера.

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

Примеры сгенерированных МРТ-снимков

Автоэнкодеры: типы архитектур и применение

11 сентября 2018
автоэнкодер

Автоэнкодеры: типы архитектур и применение

Autoencoder (автокодер, автоэнкодер, AE) — нейронная сеть, которая копирует входные данные на выход. По архитектуре похож на персептрон. Автоэнкодеры сжимают входные данные для представления их в latent-space (скрытое пространство), а затем…

Autoencoder (автокодер, автоэнкодер, AE) — нейронная сеть, которая копирует входные данные на выход. По архитектуре похож на персептрон. Автоэнкодеры сжимают входные данные для представления их в latent-space (скрытое пространство), а затем восстанавливают из этого представления output (выходные данные). Цель — получить на выходном слое отклик, наиболее близкий к входному.

Отличительная особенность автоэнкодеров — количество нейронов на входе и на выходе совпадает.

Автокодер состоит из двух частей:

  1. Энкодер: отвечает за сжатие входа в latent-space. Представлен функцией кодирования h = f (x);
  2. Декодер: предназначеа для восстановления ввода из latent-space. Представлен функцией декодирования h = f (x).
Архитектура автокодеров
Архитектура автоэнкодера

Таким образом, автокодер описывают функцией g (f (x)) = r, где r совпадает с изначальным x на входе.

Зачем копировать вход на выход

Если бы единственной задачей автоэнкодеров было копирование входных данных на выход, они были бы бесполезны. Исследователи рассчитывают на то, что скрытое представление h будет обладать полезными свойствами.

Этого добиваются созданием ограничений для задачи копирования. Один из способов получить полезные результаты от автоэнкодера — ограничить h размерами меньшими , чем x. D этом случае автокодирование называется неполным.

Автоэнкодер может начать выполнять задачу копирования, не извлекая полезной информации о распределении данных, если

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

В этих случаях даже линейный кодер и линейный декодер копируют входные данные на выход, не изучая ничего полезного о распределении.

В идеале можно организовать любую архитектуру автокодера, задавая размер кода и емкость энкодера и декодера на основе сложности моделируемого распределения.


Где применяются автоэнкодеры

Два основных практических применения автоэнкодеров для визуализации данных:

  • сглаживание шума;
  • снижение размерности.

С соответствующими ограничениями по размерности и разреженности автоэнкодеры могут изучать data projections, которые более интересны, чем PCA (метод главных компонент) или другие базовые техники.

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

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

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


Типы автоэнкодеров

В этой статье будут описаны четыре следующих типа автокодеров:

  1. Автокодер Vanilla;
  2. Многослойный автокодер;
  3. Сверточный автокодер;
  4. Регуляризованный.

Чтобы проиллюстрировать типы автокодеров, с помощью структуры Keras и датасета MNIST создан пример каждого из них. Код для каждого типа автокодера доступен на GitHub.

Автоэнкодер vanilla

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

Здесь мы видим неполный автокодер, поскольку размер скрытого слоя (64) меньше, чем вход (784). Это ограничение заставит нашу нейронную сеть изучить сжатое представление данных.

Многослойный автоэнкодер

Если одного скрытого слоя недостаточно, автокодер расширяют до большего их количества.

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

Сверточные автоэнкодеры

Можно ли использовать автокодеры со свертками вместо использования с полносвязными слоями?

Ответ — да. И принцип тот же, но только с использованием 3D-векторов вместо 1D-векторов.

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

Регуляризованный автоэнкодер

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

Sparse

Sparse автокодеры обычно изучают образы для других (по сравнению с классификацией) задач. Автоэнкодер, регуляризованный как sparse, реагирует на уникальные характеристики датасета, на котором он был обучен, а не просто действовать в качестве идентификатора. Таким образом, обучая sparse автокодер, получают модель, которая в качестве побочного эффекта изучила полезные образы.

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

В наш скрытый слой мы добавили регулятор активности l1, который будет применять штраф к функции потерь во время фазы оптимизации. Как результат, представление теперь более уникальное по сравнению с автокодером vanilla.

Denoising

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


Интересные статьи по теме:

“Falling Things”: синтетический датасет от NVidia

26 апреля 2018
A Synthetic Dataset by Nvidia for Pose Estimation

“Falling Things”: синтетический датасет от NVidia

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

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

Датасет “Falling Things”

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

Falling Things (FAT) состоит из 61 000 изображений для обучения и проверки алгоритмов распознавания изображения в бытовой среде. Кроме него существует только два набора с точными опорными данными по положению множественных объектов: T-LESS и YCB-Video. Но в них нет примеров с экстремальными условиями освещения и несколькими модальностями. В FAT такие примеры есть.

“Falling Things”
Рисунок 1: Датасет FAT был создан на основе 3D-моделей бытовых предметов. Попиксельная сегментация объектов (внизу слева), глубина (нижний центр), координаты ограничительного прямоугольника 2D / 3D (внизу справа).

Unreal Engine

FAT работает с помощью Unreal Engine 4 (UE4). Данные генерируются для трех виртуальных локаций: кухня, солнечный храм и лес. Локации были выбраны из-за их достоверного моделирования в UE4 и для разнообразия. Для каждой среды вручную выбрано пять мест с разным рельефом и освещением, например: на кухонном столе или плиточном полу, рядом со скалой, над травой и т. д. Таким образом, получаются 15 локаций с не повторяющимся трехмерным фоном, условиями освещения и тенями.

Из YCB взяли 21 бытовой предмет. Предметы размещались в случайных положениях в вертикальном цилиндре радиусом 5 см и высотой 10 см. Для сбора данных, по мере того как объекты падали, объектив виртуальной камеры снимал объекты с разных координат (углы возвышения и азимуты относительно цилиндра). Азимут варьировался от -120◦ до 120◦ (чтобы “увернуться” от стены в тех случаях, где она была), углы возвышения от 5 до 85◦ и расстояние от 0,5 м до 1,5 м.

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

Датасет FAT состоит из 61 500 изображений с разрешением 960 x 540 и разделен на две части:

Одиночные объекты: первая часть набора сгенерирована путем “бросания” каждого предмета по отдельности по ~ 5 раз в каждой из 15 локаций.

Смешанные объекты: вторая часть датасета сгенерирована таким же образом, однако “бросалось” от 2 до 10 объектов. Чтобы на изображениях попадались несколько экземпляров одного и того же объекта, он сэмплировался с заменой.

Одна локация из каждой среды была контрольной, а остальные использовались для обучения. Рисунок 2 показывает общее количество вхождений каждого класса объектов в наборе FAT.

object visibility
Рисунок 2: Общее число вхождений 21 объекта YCB в наборе FAT. Светлые столбики — видимость объекта более 25%, сплошные полосы — более 75%.

Подводя итог

FAT поможет ускорить исследования в области обнаружения объектов и оценки их положения в 3D-пространстве в контексте робототехники. В предлагаемом датасете основное внимание уделяется бытовым предметам из набора YCB.

object detection and pose estimation dataset
Рисунок 3: Датасеты для обнаружения объекта и оценки положения в пространстве.

Синтетически комбинируя объекты и фоны алгоритм генерирует фотореалистичные изображения с точными позициями в 3D-пространстве для каждого объекта на изображении.

Falling things examples
Рисунок 4. Примеры из набора данных.