Super Resolution
Сверхразрешение восстанавливает изображение с более высоким разрешением из изображения с низким разрешением, предсказывая детали, которые не удаётся восстановить интерполяцией. Модели и код.
Сверхразрешение (SR) — это семейство методов компьютерного зрения, которые восстанавливают изображение или видео с более высоким разрешением по входным данным с низким разрешением. При классическом масштабировании, например с помощью бикубической интерполяции, имеющиеся пиксели просто распределяются по более крупной сетке, из-за чего края становятся размытыми, а мелкие текстуры теряют чёткость. Обученная модель SR предсказывает недостающие высокочастотные детали — например, резкие края, штрихи текста, текстуры ткани или листвы — на основе закономерностей, усвоенных на парах изображений с низким и высоким разрешением. Сверхразрешение одиночного изображения (SISR) использует одно изображение, а сверхразрешение видео также опирается на соседние кадры, каждый из которых содержит немного отличающуюся информацию об одной и той же сцене.
Как работает сверхразрешение#
Сверхразрешение — некорректно поставленная задача: множество разных изображений высокого разрешения при уменьшении дают одно и то же изображение низкого разрешения, поэтому модель должна выбрать наиболее правдоподобный вариант на основе усвоенных знаний о естественных изображениях. Обучающие пары создают, ухудшая качество изображений высокого разрешения: применяют размытие, уменьшают разрешение в 2× или 4×, добавляют шум и сжатие. От модели такого ухудшения зависит, с какими реальными входными данными сможет работать сеть; Real-ESRGAN обучается на случайно скомбинированных цепочках искажений, чтобы восстанавливать как реальные фото и видео, так и изображения, чисто уменьшенные в разрешении.
Архитектуры развивались вместе с остальными направлениями глубокого обучения. В 2014 году SRCNN показала, что трёхслойная свёрточная нейронная сеть (CNN) превосходит классические методы. ESPCN выполняет свёртки на низком разрешении и масштабирует изображение только в конце с помощью субпиксельной свёртки, которая переставляет каналы в изображение большего размера. Благодаря этому метод достаточно быстр для обработки видео 1080p в реальном времени. EDSR объединяла множество остаточных блоков, SwinIR строила модель из блоков визуального трансформера со сдвинутыми окнами, а диффузионные модели генерируют детали посредством итеративного устранения шума.
Функция потерь определяет, что считать «лучшим». Пиксельные функции потерь, например L1 или среднеквадратичная ошибка, максимизируют сходство с исходным изображением, но усредняют возможные варианты ответа, из-за чего результат выглядит сглаженным. SRGAN добавила перцептивную функцию потерь на основе глубоких признаков и состязательную функцию потерь из генеративно-состязательной сети (GAN). В результате получаются чёткие, реалистичные текстуры, которые могут не совпадать с реальной сценой пиксель в пиксель. В медицинской и криминалистической визуализации это рискованно: выдуманную деталь можно принять за доказательство.
Оценка сверхразрешения#
Точность измеряют с помощью пикового отношения сигнала к шуму (PSNR) — логарифмической метрики среднеквадратичной ошибки в децибелах — и индекса структурного сходства (SSIM). Перцептивные метрики, например LPIPS, сравнивают глубокие признаки и точнее отражают человеческую оценку реалистичности. В примере ниже изображение уменьшается в 4 раза, а затем восстанавливается с помощью бикубической интерполяции и предварительно обученной модели ESPCN из OpenCV:
import urllib.request
import cv2 # cv2.dnn_superres requires: pip install opencv-contrib-python
# Download a pretrained 4x ESPCN model and a test image cropped to a multiple of 4
urllib.request.urlretrieve("https://github.com/fannymonori/TF-ESPCN/raw/master/export/ESPCN_x4.pb", "ESPCN_x4.pb")
urllib.request.urlretrieve("https://ultralytics.com/images/bus.jpg", "bus.jpg")
original = cv2.imread("bus.jpg")[:1080, :808]
# Simulate a low-resolution capture by shrinking the image 4x
low_res = cv2.resize(original, (202, 270), interpolation=cv2.INTER_CUBIC)
# Upscale 4x with bicubic interpolation and with the learned ESPCN model
bicubic = cv2.resize(low_res, (808, 1080), interpolation=cv2.INTER_CUBIC)
sr = cv2.dnn_superres.DnnSuperResImpl_create()
sr.readModel("ESPCN_x4.pb")
sr.setModel("espcn", 4)
espcn = sr.upsample(low_res)
# Higher PSNR means the reconstruction is closer to the original image
print(f"Bicubic: {cv2.PSNR(original, bicubic):.2f} dB, ESPCN: {cv2.PSNR(original, espcn):.2f} dB")Выводится Bicubic: 19.51 dB, ESPCN: 20.52 dB. Прирост в 1 дБ соответствует снижению среднеквадратичной ошибки примерно на 21%; размер файла модели — около 100 КБ.
Сверхразрешение и смежные понятия#
- Восстановление изображений: более широкая область, посвящённая восстановлению чистого изображения из искажённого; включает устранение шума, размытия и артефактов сжатия. Сверхразрешение — задача восстановления, которая также увеличивает число пикселей; современные модели часто одновременно справляются с несколькими видами искажений.
- Ретуширование изображений: заполняет отсутствующие или замаскированные области, тогда как сверхразрешение добавляет детали по всему изображению, которое целиком, но имеет низкую чёткость.
- Интерполяция кадров: повышает временное разрешение, создавая кадры между существующими; это аналог сверхразрешения для пространственной оси, применённый к оси времени.
- Генеративный ИИ: модели преобразования текста в изображение создают изображения по текстовым запросам. Сверхразрешение выполняется с учётом входного изображения и должно сохранять его содержание; многие генераторы изображений используют диффузионный апскейлер на заключительном этапе.
Примеры применения в реальных условиях#
- Игры: NVIDIA DLSS рендерит кадры в низком разрешении, а затем увеличивает их с помощью нейросети, повышая частоту кадров при сопоставимом визуальном качестве.
- Потоковое видео и архивы: телекомпании и специалисты по реставрации фильмов масштабируют видео стандартной чёткости и архивные записи для экранов HD и 4K.
- Анализ спутниковых снимков: аналитики повышают чёткость снимков, полученных более дешёвыми средствами, чтобы размечать здания, дороги и автомобили.
- Анализ медицинских изображений: исследовательские системы восстанавливают МРТ высокого разрешения по более быстрым снимкам низкого разрешения, сокращая время, которое пациент проводит в сканере.
Сверхвысокое разрешение также применяют как этап предварительной обработки для обнаружения мелких объектов на источниках низкого разрешения. YOLO26 от Ultralytics изменяет размер каждого входного изображения до imgsz, по умолчанию до 640 пикселей, используя билинейную интерполяцию. Поэтому кадр камеры размером 320×240 перед обнаружением увеличивается вдвое. Если вместо интерполяции использовать модель сверхвысокого разрешения с увеличением в 2 раза, детектор получит восстановленные контуры небольших удалённых объектов, например лиц, автомобильных номеров и автомобилей на аэрофотоснимках.










