Время прочтения: 3 мин.

При хранении видеозаписи в высоком разрешении занимают много места. Рано или поздно возникает проблема его нехватки. Для решения этой проблемы существует два варианта. Первый — уменьшать количество данных, удалив старые записи. Второй – увеличение памяти хранилища. С развитием современных 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

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

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

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

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

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