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

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

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

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

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

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

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

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

Традиционно и обычно в академических и исследовательских работах для оценки этого используется потеря пикселей на основе среднеквадратичной ошибки (MSE), среднеквадратичной ошибки (RMSE) или пикового отношения сигнал / шум (PSNR).

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

Пиковое отношение сигнал / шум (PSNR)

Из Википедии: PSNR проще всего определить с помощью среднеквадратичной ошибки (MSE). Для бесшумного монохромного изображения I размера m × n и его зашумленного приближения K, MSE определяется следующим образом.

Среднеквадратичная ошибка (MSE) / потеря L2

Математика здесь усложняет задачу, чем кажется.

Это сравнивается по каждому из трех каналов в изображении RGB. MSE используется для сравнения расстояния между пикселями целевого изображения и пикселями прогнозируемого / сгенерированного изображения. Берется среднее значение разницы каждого пикселя, а затем возводится в квадрат.

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

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

Определение пикового отношения сигнал / шум (PSNR)

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

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

Хотя PSNR является показателем на основе логарифма, он основан на MSE.

MSE не является хорошим показателем качества улучшения изображения.

Почему среднеквадратичная ошибка (MSE) не является хорошим показателем качества улучшения изображения.

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

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

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

Средняя абсолютная ошибка (MAE) / потеря L1

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

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

Для улучшения изображения MAE, скорее всего, приведет к изображению, которое кажется более качественным с точки зрения человека.

PSNR основан на MAE, а не на MSE

Если уравнение, аналогичное приведенному выше PSNR с использованием MSE, изменить для использования MAE, это в моих экспериментах приведет к более привлекательному улучшенному изображению, чем PSNR, хотя и не так эффективно, как следующие показатели.

Индекс структурного сходства (SSIM)

Индекс структурного сходства (SSIM) - это метрика восприятия. SSIM основан на видимых структурах на изображении. Использование SSIM для оценки улучшения изображения возникло, поскольку для некоторых исследователей PSNR больше не рассматривается как надежный индикатор ухудшения качества изображения. Это перцепционная метрика, которая количественно определяет ухудшение качества изображения, вызванное обработкой.

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

Потеря функций (потеря восприятия)

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

Эти интересные слои отражают восприятие модели объектами.

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

Если сгенерированное изображение может иметь более резкие черты, остальные пиксели, как правило, менее важны с точки зрения качества изображения с точки зрения человека.

Более подробно это описано в моей статье Функции потери на основе активации функции и потери стиля.

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

Утрата матрицы по грамму

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

Матрица грамма набора векторов - это матрица всех возможных скалярных произведений этих векторов.

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

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

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

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

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

Ниже показано, что эффективность этой метрики потерь при окрашивании очень впечатляет.

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

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

В статье О влиянии пакетной нормализации и весовой нормализации в генерирующих состязательных сетях (Ситао Сян, Хао Ли) было обнаружено, что пакетная нормализация может иметь негативные последствия для качества обученной модели и стабильность тренировочного процесса. Было обнаружено, что более свежий метод, нормализация веса, улучшает реконструкцию, скорость обучения и особенно стабильность GAN.

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

Самостоятельное внимание

В статье Сети противоборства, порождающие самовнимание (Хан Чжан, Ян Гудфеллоу, Димитрис Метаксас, Август Одена) реализована идея самовнимания на основе механизма внимания, используемого в обработке естественного языка для изображений. поколение

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

В своих экспериментах без GAN для глубокого обучения Super Resolution и Colourisation я обнаружил, что Self Attention улучшает производительность модели при создании изображений на основе критериев потерь и с точки зрения человеческой оценки. Это было намного заметнее с Colourisation, с большей согласованностью похожих функций в разных частях изображения.

Супер разрешение

Спектральная нормализация

В статье Спектральная нормализация для порождающих состязательных сетей (Такеру Миято, Тошики Катаока, Масанори Кояма, Юичи Йошида) была предложена новая методика нормализации веса, называемая спектральной нормализацией, для стабилизации тренировки дискриминатора. Статья Кристиана Косгроува объясняет, что такое спектральная нормализация, ограничивая константу Липшица весов для управления градиентами.

В статье Генеративные состязательные сети с самовниманием (Хан Чжан, Ян Гудфеллоу, Димитрис Метаксас, Огастус Одена) спектральная нормализация использовалась как в дискриминаторе, так и в генераторе.

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

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

2-кратное сверхвысокое разрешение: улучшенная модель с архитектурой U-Net на базе кодировщика и декодера ResNet 34

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

Модель, генерирующая эти изображения для сверхвысокого разрешения, имеет кодировщик и декодер на основе ResNet34 в архитектуре U-Net. Эта улучшенная модель по сравнению с моими прошлыми экспериментами была обучена для сверхвысокого разрешения с использованием функции потерь, которая объединила SSIM (индекс структурного сходства), потерю характеристик / восприятия из фиксированной предварительно обученной модели VGG16 и потерю матрицы (стиля) грамма из фиксированной предварительно обученной модели VGG16, и небольшая часть потерь MAE (средней абсолютной ошибки).

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

В приведенном ниже примере входное изображение с низким разрешением находится слева, сгенерированное предсказание - в середине, а исходное / целевое изображение - справа.

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

Колоризация / Раскрашивание цвета в черно-белые изображения.

Эксперименты по раскрашиванию здесь используют гораздо меньшую архитектуру U-Net, чем мои предыдущие эксперименты, основанные на кодировщике и декодере на основе ResNet18, а не на кодировщике и декодере на основе ResNet34.

Улучшенный кодировщик и декодер U-Net на базе ResNet18.

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

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

В приведенном ниже примере входное изображение с низким разрешением находится слева, сгенерированное предсказание - в середине, а исходное / целевое изображение - справа.

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

Функция потерь грамма (стиля), используемая для обучения модели с архитектурой кодера и декодера на основе ResNet18 U-Net

Результат этой модели оказался на удивление эффективным. Функция потерь, используемая для обучения этой модели, не использовала потери пикселей MSE или MAE. Функция потери также не использует PSNR, SSIM или потерю функций. Функция потерь сравнивала только граммовые матрицы интересных функций по сравнению с предварительно обученной фиксированной моделью ImageNet.

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

В приведенном ниже примере входное изображение с низким разрешением находится слева, сгенерированное предсказание - в середине, а исходное / целевое изображение - справа.

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

Эксперименты в 4-кратном сверхвысоком разрешении

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

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

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

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

Эксперименты по переносу стилей на основе U-Net

В некоторых недавних экспериментах я пытался оценить, можно ли применить вышеуказанные методы к переносу стилей. Эти эксперименты дали некоторые интересные результаты с использованием показателей архитектуры U-Net, потери функций и потери стиля.

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

В ходе этих экспериментов была обучена модель с архитектурой U-Net, основанной на кодировщике и декодере ResNet34. Кодировочная часть сети была основана на модели, предварительно обученной в ImageNet.

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

Идентичность / пропуск соединений архитектур U-Net, с которыми я экспериментировал, может позволить изучить необычный алгоритм с кластером сильно стилизованных частей изображения и больших частей изображения, оставшихся без стиля. Это то, что обнаруженная модель минимизировала ошибку наиболее эффективно в рамках показателей функции потерь. Для получения привлекательных результатов требовалось тщательное взвешивание граммовой матрицы / потери стиля по сравнению с потерей характеристик / восприятия.

Эксперименты по передаче стилей - хорошие результаты

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

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

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

Эксперименты по переносу стилей - другие результаты

Эти примеры пытались передать стиль «Звездной ночи» Винсента Ван Гога.

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

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

Эксперименты по переносу стилей - худшие результаты

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

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

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

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

Выводы

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

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

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

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