Как нейросети повышают качество изображений?

При хранении видеозаписи в высоком разрешении занимают много места. Рано или поздно возникает проблема его нехватки. Для решения — существует два варианта. Первый — уменьшать количество данных, удалив старые записи. Второй – увеличение памяти хранилища. С развитием современных IT-технологий стал возможен третий вариант, который Вы не раз видели в фильмах, когда спецслужбы, путём увеличения и обработки размытого объекта в углу экрана, распознавали, например, номер машины.

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

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

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

python net_interp.py 1.0

, где 1.0 – степень интерполяции от 0 до 1.

Кладём наши изображения в папку LR, запускаем модель следующей командой:

python test.py models/interp_10.pth

, где interp_10.pth – это файл настроек, сгенерированный на предыдущем шаге. И забираем улучшенное изображение в папке results.

В сети уже есть различные вариации файла настроек (по сути, это и есть сама модель), заточенные под разные виды изображений, к стандартным (помимо net_interp) относятся RRDB_esrgan и RRDB_PSNR. После скачивания их необходимо разместить в папке model и запустить, как и в случае со стандартной моделью, например:

python test.py models/RRDB_ESRGAN_x4.pth

Вот ещё несколько примеров обработки:

Разница особо заметна при увеличении отдельных фрагментов изображения, например:

Ещё один пример:

Увеличенные фрагменты:

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

0
2 комментария
Антон Федосеев

В случае последней картинки не сказать что качество улучшилось. Да подкрутили резкость, но при этом получили кучу артефактов. Нейронка несколько не так должна работать...
Если точнее то именно модель "esrgan" работает плохо и её надо обучать. Или же взять более подходящую обученную модель.

Ответить
Развернуть ветку
NTA
Автор

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

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
-1 комментариев
Раскрывать всегда