Понимание рисования изображений и его методов с особым вниманием к современным кодировщикам контекста и подходу на основе генеративной модели
В этом посте мы собираемся понять основные концепции рисования семантических изображений и различные методы, разработанные для этого. Однако мы собираемся сосредоточиться на эффективном и элегантном современном кодировщике контекста и подходе на основе генеративной модели для рисования изображений.
Поехали!
Модель и архитектура, обсуждаемые в этом посте, взяты из ссылки на исследовательский документ, приведенной ниже. Пожалуйста, обратитесь к исследовательской статье для полной реализации:
Ссылка на исследовательский документ
Что такое рисование семантического изображения?
Представьте себе, что у вас есть старая, но ценная фотография, и вы обнаруживаете, что некоторые ее части были повреждены. Вы хотите навсегда сохранить момент, запечатленный на фотографии, и восстановить изображение. Рисование изображения может спасти положение!
При наличии искаженного изображения с отсутствующими или искаженными частями изображения, семантическое рисование изображения относится к заполнению этих областей с помощью доступных визуальных данных. Создание семантического изображения, как следует из названия, также принимает во внимание контекст изображения и пиксели, окружающие отсутствующие области, при заполнении этих областей.
Несколько реальных приложений рисования семантических изображений:
- Восстановление истории. Рисование семантического изображения может помочь восстановить исторические артефакты и дать им новую жизнь. Это также может быть полезно для восстановления древних иероглифов, книг и изображений, представляющих большую ценность, без каких-либо человеческих усилий или участия специалиста в данной области.
- Возрождение деградирующего искусства. Рисование семантического изображения может оказаться для музеев отличным инструментом для возрождения своего искусства. Восстановление искусства требует большого опыта и времени, если оно выполняется художниками вручную.
Методы, используемые для рисования семантических изображений
Со временем появились различные методы, призванные удовлетворить потребность в восстановлении искаженных изображений и обеспечении удовлетворительных результатов, близких к истине.
Некоторые из них обсуждаются ниже:
Методы, основанные на компьютерном зрении
Большинство разработанных ранее методов компьютерного зрения основывались на завершении сцены. У модели была огромная база данных из миллионов изображений. При обнаружении поврежденного изображения он сопоставлял остальные изображения с набором данных, а при обнаружении высокого сходства он выбирал патч из изображения в наборе данных и помещал его в поврежденную область. Этот метод работает только для небольших регионов.
Пиксельные методы соседства
Учитывая изображение с несколькими отсутствующими областями, пиксельные методы в их основе применяют KNN (K-ближайших соседей) для заполнения этих поврежденных пикселей пикселем, имеющим наивысший голос. Здесь следует отметить, что только пиксели, близкие к поврежденной области, получают право голоса, поскольку весьма вероятно, что пиксели, расположенные рядом с областью, более похожи по контексту, чем все изображение. Однако эти несемантические методы не работают, когда отсутствует вся сцена или объект.
Методы машинного обучения на основе контекста
Контекстно-зависимые методы составляют основу техники, обсуждаемой в следующих разделах этой публикации. Пытаясь выполнить рисование семантического изображения, давайте подумаем о том, как наш мозг может воспринять ту же задачу. Когда мы смотрим на изображение и его искаженные области, мы принимаем во внимание контекст изображения и визуальную информацию, окружающую отсутствующую область, и пытаемся воссоздать ее в нашем мозгу. Нечто похожее есть идея рисования семантического изображения, которую мы здесь рассмотрим.
Для восстановления изображения нам понадобится информация двух типов:
- Перцепционная информация: понимание содержания изображения.
- Контекстная информация. Идентификация и соотнесение содержания изображения как целостного изображения.
Ниже мы сосредоточимся на методе, который включает комбинацию контекстно-зависимых методов и сетей автокодирования.
Автокодеры
Автокодировщики - это нейронные сети, которые берут входное изображение и пытаются изучить его характерное представление - они пытаются сохранить всю возможную информацию об изображении, передавая ее через низкоразмерный слой «узкого места», чтобы получить компактное представление об изображении. изображение и сцена, представленная на изображении. Эти сети состоят из:
Кодировщик: понижает дискретизацию изображения, пропуская его через сверточные фильтры, и, наконец, имеет слой узкого места, который обеспечивает компактное представление функции изображения.
Декодер: который принимает представление, предоставленное кодировщиком, в качестве входных данных и пытается восстановить изображение в соответствии с ним.
Кодировщики контекста
Модель, использованная в вышеуказанном исследовательском документе, известна как кодировщики контекста, поскольку сеть состоит из двух частей: кодировщика для захвата контекста изображения в представление функции и декодера, который использует представление, предоставленное кодировщиком, для заполнения недостающего контента. .
Проблема с обычными автокодировщиками
Обычные автокодировщики не подходят для задачи перерисовки изображения, потому что они, по сути, просто сжимают и распаковывают изображение без изучения какой-либо семантической информации об изображении. Сеть не предназначена для понимания контекста изображения.
Набор данных
Изображения для обучения сети кодировщика контекста взяты из набора данных 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 для достижения целевого размера изображения. Свертка с повышением частоты может рассматриваться как изображение с повышенным разрешением и сверткой, в результате чего получается изображение с более высоким разрешением.
Функция потерь
Чтобы понять, насколько хорошо / плохо работает наша модель, мы отслеживаем значение функций потерь для нескольких итераций. Функции потерь - это, по сути, разница между прогнозируемыми и ожидаемыми значениями. Они дают нам представление о точности модели. Чтобы узнать больше о функциях потерь, обратитесь к этой статье.
Разработка функции потерь для рисования семантических изображений - непростая задача. Функция потерь должна строиться вокруг двух факторов:
- Общее изображение должно быть максимально реалистичным после заполнения недостающей области.
- Необходимо зафиксировать контекст и общую структуру недостающего контента.
Таким образом, существует потребность в функции потерь, которая представляет собой комбинацию двух потерь, известную как общие потери:
Убытки при реконструкции
Потери при реконструкции - это, по сути, замаскированные и нормализованные потери 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 для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить модели машинного обучения.