Время прочтения: 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
Вот ещё несколько примеров обработки:
Разница особо заметна при увеличении отдельных фрагментов изображения, например:
Ещё один пример:
Увеличенные фрагменты:
Как видите, такой результат был получен без тонких настроек модели. При большем углублении в эту тему можно достигнуть не только восстановления качества изображения после его сжатия, но также улучшения качества видео изначально низкого качества до приемлемого уровня.