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

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

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

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

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

Эта проблема

Предположим, у вас есть изображение размером X, (m × n × c) пикселей. Мы хотим увидеть, как это будет выглядеть на самом деле после k-кратного масштабирования. Это означает, что мы хотим, чтобы выходное изображение Y имело размер (км × kn × c) пикселей. Количество каналов c остается прежним. Задача SR состоит в том, чтобы разработать такое отображение F, что F (X) = Y.

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

Рассмотрим изображение X с низким разрешением. Соответствующее ему желаемое выходное изображение называется эталонным изображением. Обозначим это как Y_true.

Метрики

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

Для данного отображения F пусть F (X) = Y_pred. Используя два изображения Y_true и Y_pred, мы определяем метрики оценки.

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

  1. Среднеквадратичная ошибка (MSE):

Среднеквадратичная ошибка, также называемая MSE, является средним квадратом ошибки. Для наших изображений размером km x kn для каждого пикселя (i, j) мы найдем норму разницы по всем каналам. Он будет возведен в квадрат и усреднен по общему количеству пикселей. То есть MSE находится по приведенному ниже уравнению.

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

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

Пиковое отношение сигнал / шум, также называемое PSNR, является мерой максимальной (максимальной) ошибки в изображении. Это напрямую связано с MSE как -

где R представляет максимальный диапазон данных. Для изображения, которое обычно составляет 8 бит, максимальное значение равно 255, а минимальное - 0. Тогда значение R - это их разность, то есть 255.

PSNR всегда определяется в децибелах (дБ), поэтому мы логарифмируем соотношение.

3. Средняя оценка мнения (MOS):

Средние оценки мнений - это в основном мнения / оценки пользователей одного и того же изображения, обрабатываемого разными алгоритмами. Несколько пользователей оценивают эти изображения, и среднее значение указывается как MOS. Обычно это рейтинг от 1 до 5, но можно использовать и другие диапазоны.

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

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

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

Он учитывает деградацию (изменение) изображения по яркости (l), контрастности (c), а также по структуре (s).

Для двух патчей x и y мы определяем индекс SSIM как -

Здесь μ и сигма - среднее и стандартное отклонение пятен соответственно. Константа c1 = (k1 x L) ² и c2 = (k2 x L) ² такая, что L - это общий диапазон значений пикселей (такой же, как R в определении PSNR). Определим c3 = c2 / 2 и положим α, β, γ равными 1.

Наборы данных:

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

  1. BSDS - Berkeley Segmentation DataSet - это богатый набор данных в естественных изображениях.
  2. Set5 - один из самых популярных наборов данных. Он содержит пять изображений, которые содержат множество сложных областей для различных проблем компьютерного зрения.

3. Set14 - Еще один эталонный набор данных, который содержит фотографии и графику. Используется для тестирования алгоритмов.

Другие включают T91, NTIRE и т. Д.

Примечание. Сначала необходимо уменьшить масштаб изображения и добавить различные типы шумов для имитации изображения с низким разрешением. Исходное изображение можно рассматривать как изображение с высоким разрешением. Подробнее см. Здесь.

Идти в ногу с SR -

Конференции:

Решения для SR были представлены на нескольких конференциях, отмеченных звездочкой A. CVPR обычно включает множество алгоритмов глубокого обучения. ICCV и ECCV - другие популярные.

Демонстрации:

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

  1. Https://bigjpg.com/
  2. Http://waifu2x.udp.jp/ для любителей аниме!
  3. Https://letsenhance.io/

Открытый исходный код:

Многие репозитории могут помочь в начале работы с кодом. Несколько репозиториев для начала будут -

  1. YapengTian / Single-Image-Super-Resolution - предоставляет набор почти всех алгоритмов SR на основе используемого подхода.
  2. Titu1994 / Image-Super-Resolution - содержит набор реализаций множества алгоритмов SR в Keras.

3. tensorlayer / srgan - один из моих любимых алгоритмов!

Поделитесь своими мыслями по поводу статьи в комментариях или здесь. Далее: SRCNN; следите за обновлениями!