Понимание рисования изображений и его методов с особым вниманием к современным кодировщикам контекста и подходу на основе генеративной модели

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

Поехали!

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

Ссылка на исследовательский документ

Что такое рисование семантического изображения?

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

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

Несколько реальных приложений рисования семантических изображений:

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

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

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

Некоторые из них обсуждаются ниже:

Методы, основанные на компьютерном зрении

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

Пиксельные методы соседства

Учитывая изображение с несколькими отсутствующими областями, пиксельные методы в их основе применяют KNN (K-ближайших соседей) для заполнения этих поврежденных пикселей пикселем, имеющим наивысший голос. Здесь следует отметить, что только пиксели, близкие к поврежденной области, получают право голоса, поскольку весьма вероятно, что пиксели, расположенные рядом с областью, более похожи по контексту, чем все изображение. Однако эти несемантические методы не работают, когда отсутствует вся сцена или объект.

Методы машинного обучения на основе контекста

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

Для восстановления изображения нам понадобится информация двух типов:

  1. Перцепционная информация: понимание содержания изображения.
  2. Контекстная информация. Идентификация и соотнесение содержания изображения как целостного изображения.

Ниже мы сосредоточимся на методе, который включает комбинацию контекстно-зависимых методов и сетей автокодирования.

Автокодеры

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

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

Декодер: который принимает представление, предоставленное кодировщиком, в качестве входных данных и пытается восстановить изображение в соответствии с ним.

Кодировщики контекста

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

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

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

Набор данных

Изображения для обучения сети кодировщика контекста взяты из набора данных ImageNet и набора данных Paris Street View. Изображения маскируются с нулевым значением выпавшей или поврежденной области. Маски могут быть произвольной формы и размера, но использовались три разные стратегии:

Центральная область: удаление 1/4 части изображения от центра.

Случайный блок: перекрывающиеся блоки в произвольных местах, покрывающие удаленную 1/4 часть изображения.

Случайная область: удаление произвольных форм, занимающих 1/4 часть изображения. Этот подход, похоже, хорошо работал с моделью.

Сетевая архитектура

Кодировщик

Кодер основан на архитектуре AlexNet с пятью сверточными слоями, за которыми следует максимальный пул. Кодировщик, получив изображение 227 * 227, обеспечивает представление пространственного объекта размером 6 * 6 * 256. Веса модели инициализируются случайным образом.

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

Поканальный полносвязный слой

Распространение информации в представлении функции осуществляется канальным полносвязным слоем. На полностью связанном уровне с группами все узлы связаны друг с другом. Этот слой соединяет выход кодера со входом декодера. Если входной слой имеет m карт объектов размером n × n, этот слой будет выводить m карт объектов размером n × n, за которыми следует свертка с шагом 1. Это ограничение полного соединения только в группах имеет меньшие параметры (mn⁴) по сравнению с обычными полносвязными слоями (m²n⁴) и, таким образом, экономит время вычислений.

Этот уровень позволяет каждому блоку декодера воспринимать полное содержимое изображения.

Декодер

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

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

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

Разработка функции потерь для рисования семантических изображений - непростая задача. Функция потерь должна строиться вокруг двух факторов:

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

Таким образом, существует потребность в функции потерь, которая представляет собой комбинацию двух потерь, известную как общие потери:

Убытки при реконструкции

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

Здесь x - изображение, F - кодировщик контекста, а M - двоичная маска, изображающая 0 для поврежденных областей и 1 для остальной части изображения. Потеря реконструкции позволяет определить грубый контур пропавшего объекта, но не дает никаких мелких деталей. Причина в том, что L2 работает на основе пиксельной разницы в значениях, и минимизация значения функции потерь (в данном случае расстояния L2) приведет к чрезмерно гладким текстурам, которые нежелательны. Таким образом, существует необходимость решить эту проблему, используя другую функцию потерь в дополнение к потерям при реконструкции.

Состязательный проигрыш

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

Для получения дополнительной информации о GAN обратитесь к этой серии.

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

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

Параметры тренировки

Модель была разработана в Caffe и PyTorch и обучена минимизировать значение функции потерь, обсуждавшейся в предыдущем разделе. Результаты будут немного лучше, если размер изображения будет изменен до 128 × 128. Сеть использует Адама для оптимизации. Значения коэффициентов для комбинированной функции потерь составляют λrec = 0,999 и λadv = 0,001. Скорость обучения 1 / 10⁴ использовалась для изображений со случайным повреждением области. Сеть проработала почти 100 тыс. Итераций и потребовала 14 часов на графическом процессоре Titan X.

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

Полученные результаты

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

Заключение

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

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

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

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

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить модели машинного обучения.