• Реконструкция фотографий методом частичной свертки от Nvidia

    Image Inpainting for Irregular Holes Using Partial Convolutions

    “Image inpainting” — задача заполнения пробелов в изображении (реконструкция, дорисовка). Цель работы, проделанной авторами — предложить модель для реконструкции изображений, которая надежно работает на нерегулярных пробелах и создает семантически значимые прогнозы, которые сочетаются с остальной частью изображения без необходимости дополнительных операций пост-обработки или смешивания. Модель используется со многими приложениями, например, при редактировании изображений для удаления нежелательных деталей в изображении, заполняя приемлемым контентом.

    Для image inpainting используются разные подходы, но ни один из них не использует метод глубокого обучения, и у них есть недостатки. Один из методов называется patchmatch, который итеративно ищет подходящие исправления для заполнения пробелов. Хотя этот подход в результаты дает плавный переход, он ограничен доступной статистикой изображений и не использует понятие визуальной семантики. Другое ограничение подобных подходов — фокусировка на прямоугольных пробелах, которые часто считаются центральными в изображении. Ограничения приводят к перенасыщению прямоугольных пробелов и, в конечном счете, ограничивают применение этих моделей.

    Метод частичной свертки

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

    Новшества:

    • Использование частичных сверток с автоматическим шагом обновления маски для достижения современных результатов в дорисовывании изображений (image-inpainting).
    • При помощи замены сверточных слоев частичными свертками и обновления масок удалось достичь самых высоких результатов в реконструкции изображений.
    • Продемонстрирована эффективность обучения image-inpainting моделей на пробелах неправильной формы.

    Частичный сверточный слой

    Модель использует операции стекирования частичной свертки и операции обновления маски для выполнения image inpainting. Операция частичной свертки и функция обновления маски работают совместно как частичный Сверточный слой.

    Пусть W — вес фильтра свертки, а b — соответствующее смещение. X — значения пикселей для текущего окна свертки, а M — соответствующая бинарная маска. Частичная свертка в каждом месте выражается следующим образом:

    Partial Convolutional Layer

    Где ⊙ обозначает умножение по элементам. Как видно, выходные значения зависят только от немаскируемых входных значений. С помощью масштабного коэффициента 1/sum(M) подбирается подходящее масштабирование, чтобы скорректировать изменяющиеся действительные (незамаскированные) входные данные. После каждой операции частичной свертки маска обновляется. Правило unmasking простое: если с помощью свертки получилось вывести результат, по крайней мере, для одного допустимого входного значения, тогда маска для этого местоположения удаляется. Это выражается следующим образом:

    Partial Convolutional Layer

    и легко реализуется в любой системе глубокого обучения как часть forward pass.

    Архитектура нейросети

    Частичный слой свертки реализуется путем расширения существующего стандартного PyTorch. Прямая реализация заключается в определении двоичных масок размера C × H × W, того же размера с их связанными изображениями или элементами, а затем, чтобы обновить маску, требуется использование фиксированного слоя свертки с тем же размером ядра, что и операция частичной свертки , но с весами, равными 1, и нулевым смещением. Весь вывод сетью изображения 512 × 512 занимает 0,23 с на одном графическом процессоре NVIDIA V100, независимо от размера пробела.

    Используется Unet-like архитектура, заменяющая сверточные слои частичными сверточными слоями, а также на этапе декодирования используется nearest neighbour up-sampling .

    Network Architecture

    ReLU используется на этапе кодирования, и LeakyReLU с альфа = 0,2 используется между декодирующимися слоями. Кодер состоит из восьми частичных сверточных слоев с шагом 2. Размеры ядра — 7, 5, 5, 3, 3, 3, 3 и 3. Размеры канала — 64, 128, 256, 512, 512, 512, 512 и 512. Входные данные последнего частичного сверточного слоя будут содержать конкатенацию исходного входного изображения с пробелами и оригинальной маской.

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

    Функция потери направлена как на точность пиксельной реконструкции, так и на композицию, т. е. как плавно перетекают предсказанные значения пробелов в окружающее изображение. Учитывая входное изображение с пробелом Iin и маской M, предсказание сети Iout и ground truth изображение Igt, то потеря пикселя определяется как:

    Loss Function

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

    Функция perceptual loss вычисляет расстояния L1 одновременно между Iout и Icomp и ground truth. Для выполнения автокорреляции, на каждой карте характеристик вводится термин style loss.

    Perceptual loss

    Loss Function

    Общая потеря — комбинация всех вышеперечисленных потерь:

    Total Loss

    Результаты

    Частичная свертка превосходит другие методы. Чтобы доказать, что частичная свертка работает лучше, чем другие методы, используются I1-ошибка, пиковое отношение сигнала к шуму (peak signal-to-noise ratio — PSNR), индекс структурного сходства (Structural SIMilarity — SSIM) и начальная оценка (Inception score — IScore). Ниже в таблице показаны результаты сравнения. Видно, что метод PConv превосходит другие методы в этих измерениях на нерегулярных масках.

    measurements on irregular masks

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

    Сorresponding inpainted results
    Рисунок 2: Верхняя строка: ввод; нижняя строка: соответствующие результаты
    Comparison convolution layer and partial convolution results
    Рисунок 3: Сравнение между типичными результатами на основе сверточного слоя (Conv) и результатами на основе частичного сверточного слоя (PConv)

    Больше результатов метода частичной свертки (PConv):

    PConv PConv

    Руслан Хабибуллин