Real-ESRGAN, нейросеть для восстановления изображений и видео
Добавлено: 10 июл 2023, 19:01
Real-ESRGAN - одна из реализаций технологии GAN (generative adversarial networks или генеративно-состязательных сетей) улучшения качества картинки. Работает как с одиночными картинками, так и с сериями кадров.
Релиз проекта Real-ESRGAN на питоне
Скомпилированый исполняемый файл Real-ESRGAN-ncnn-vulkan
Три претренированные модели - положить в каталог realesrgan в подкаталог models
Еще две натренированные модели тут в каталоге models (качать весь проект)
Поскольку у проекта есть скомпилированный релиз для трех операционок - проще запускать его просто из командной строки, нежели запускать на питоне. Скачайте проект и модели к нему. Я запускал из командной строки, поиском в Windows находим cmd и запускаем, для трех моделей по очереди каждую из трех строк:
G:\realesrgan\realesrgan-ncnn-vulkan.exe -i G:\realesrgan\mackenzie -o G:\realesrgan\output -n realesr-animevideov3-x4 -s 4 -g 1 -f png
G:\realesrgan\realesrgan-ncnn-vulkan.exe -i G:\realesrgan\mackenzie -o G:\realesrgan\output -n realesrgan-x4plus -s 4 -g 1 -f png
G:\realesrgan\realesrgan-ncnn-vulkan.exe -i G:\realesrgan\mackenzie -o G:\realesrgan\output -n realesrgan-x4plus-anime -s 4 -g 1 -f png
где -i -o ключи путей к инпут и оутпут, -s 4 - четырехратное увеличение, -g 1 - номер GPU в системе (у меня под нулем идет Intel и под 1 более производительный Nvidia, в некоторых программах минус 1 говорит о том, что считать вообще на CPU), -f формат файла на выходе. Я обычно создаю нейросетью файлы png без потерь, и потом уже по необходимости для публикации делаю оптимальную не сильную компрессию JPG в хорошо развитых для этого программах - FastStone Image Viewer или XnViewMP. Файлы png с максимальной компрессией без потерь готовлю к публикации в Pingo - жмет без потерь компактнее и быстрее всех. Разные сжатия для публикации в сети обсуждались немного здесь.
Получил такие результаты в Real-ESRGAN, посмотрите, это различные алгоритмы отработали, не все удачно, но видно, что ИИ поработал над имиджем. Например последний x4plus-anime весьма недурно отрисовал брови, а вот с естественной фактурой кожи ожидаемо не справился, ибо аниме судя по названию для других явно задач предназначен. Проект Real-ESRGAN позволяет запускать обработку серии изображений, например кадров ролика, достаточно просто указать путь к папке с файлами на входе и на выходе. Чтобы разобрать ролик на кадры и потом собрать кадры обратно в видео, удобно использовать ffmpeg. Для превращения ролика в серию кадров используйте команду примерно такую в командной строке:
ffmpeg -i input.mp4 %05d.png
Только пропишите путь к ffmpeg, к файлу input и каталогу для png. Имя %05d по маске означает, что будет создана серия картинок с пятизначным числом начиная с 00001.png. Запускать обработку имени %05d лучше напрямую из командной строки, а не из файла bat или cmd: символ % батником по-своему интерпретируется. Но если хотите именно из bat или cmd - то два символа %% нужно в маске.
Чтобы запаковать готовый результат из обработанных кадров в mp4 используйте следующую команду:
ffmpeg.exe -r 20 -i "%05d.png" -c:v libx264 -r 30 -pix_fmt yuv420p -b:v 3200k -maxrate:v 4800k -minrate:v 1600k -bufsize:v 1920k video.mp4
Не забудьте прописать пути к исполняемому файлу и к файлам для обработки, с путями будет как-то так выглядеть:
C:\ffmpeg-master-latest-win64-gpl\bin\ffmpeg.exe -r 20 -i "G:\realesrgan\output\%05d.png" -c:v libx264 -r 30 -pix_fmt yuv420p -b:v 3200k -maxrate:v 4800k -minrate:v 1600k -bufsize:v 1920k G:\realesrgan\output\video.mp4
В документации по ffmpeg найти трудно, но лучше прямо использовать указание на систему цвета файла -pix_fmt yuv420p, у меня без этой отметки программа собирала фильм непонятно как.
Пока я не нашел в проекте Real-ESRGAN подготовку имиджей к сборке ролика для устранения дрожания кадров, в каких-то других проектах точно встречал, напишу позже где видел такую подготовку кадров к сборке, или вы напишите мне.
Пока мне показалось, что старое видео низкого разрешения с сильными шумами лучше всего восстанавливает модель realesrgan-x4plus-anime.
Real-ESRGAN не заточен специально на лицах, но проекты с особым вниманием к лицам мы рассмотрим в ближайшее время.
Потренировать модели самостоятельно для проекта Real-ESRGAN можно в дружественной программе BasicSR. Потребуются значительные вычислительные ресурсы вашего GPU.
Релиз проекта Real-ESRGAN на питоне
Скомпилированый исполняемый файл Real-ESRGAN-ncnn-vulkan
Три претренированные модели - положить в каталог realesrgan в подкаталог models
Еще две натренированные модели тут в каталоге models (качать весь проект)
Поскольку у проекта есть скомпилированный релиз для трех операционок - проще запускать его просто из командной строки, нежели запускать на питоне. Скачайте проект и модели к нему. Я запускал из командной строки, поиском в Windows находим cmd и запускаем, для трех моделей по очереди каждую из трех строк:
G:\realesrgan\realesrgan-ncnn-vulkan.exe -i G:\realesrgan\mackenzie -o G:\realesrgan\output -n realesr-animevideov3-x4 -s 4 -g 1 -f png
G:\realesrgan\realesrgan-ncnn-vulkan.exe -i G:\realesrgan\mackenzie -o G:\realesrgan\output -n realesrgan-x4plus -s 4 -g 1 -f png
G:\realesrgan\realesrgan-ncnn-vulkan.exe -i G:\realesrgan\mackenzie -o G:\realesrgan\output -n realesrgan-x4plus-anime -s 4 -g 1 -f png
где -i -o ключи путей к инпут и оутпут, -s 4 - четырехратное увеличение, -g 1 - номер GPU в системе (у меня под нулем идет Intel и под 1 более производительный Nvidia, в некоторых программах минус 1 говорит о том, что считать вообще на CPU), -f формат файла на выходе. Я обычно создаю нейросетью файлы png без потерь, и потом уже по необходимости для публикации делаю оптимальную не сильную компрессию JPG в хорошо развитых для этого программах - FastStone Image Viewer или XnViewMP. Файлы png с максимальной компрессией без потерь готовлю к публикации в Pingo - жмет без потерь компактнее и быстрее всех. Разные сжатия для публикации в сети обсуждались немного здесь.
Получил такие результаты в Real-ESRGAN, посмотрите, это различные алгоритмы отработали, не все удачно, но видно, что ИИ поработал над имиджем. Например последний x4plus-anime весьма недурно отрисовал брови, а вот с естественной фактурой кожи ожидаемо не справился, ибо аниме судя по названию для других явно задач предназначен. Проект Real-ESRGAN позволяет запускать обработку серии изображений, например кадров ролика, достаточно просто указать путь к папке с файлами на входе и на выходе. Чтобы разобрать ролик на кадры и потом собрать кадры обратно в видео, удобно использовать ffmpeg. Для превращения ролика в серию кадров используйте команду примерно такую в командной строке:
ffmpeg -i input.mp4 %05d.png
Только пропишите путь к ffmpeg, к файлу input и каталогу для png. Имя %05d по маске означает, что будет создана серия картинок с пятизначным числом начиная с 00001.png. Запускать обработку имени %05d лучше напрямую из командной строки, а не из файла bat или cmd: символ % батником по-своему интерпретируется. Но если хотите именно из bat или cmd - то два символа %% нужно в маске.
Чтобы запаковать готовый результат из обработанных кадров в mp4 используйте следующую команду:
ffmpeg.exe -r 20 -i "%05d.png" -c:v libx264 -r 30 -pix_fmt yuv420p -b:v 3200k -maxrate:v 4800k -minrate:v 1600k -bufsize:v 1920k video.mp4
Не забудьте прописать пути к исполняемому файлу и к файлам для обработки, с путями будет как-то так выглядеть:
C:\ffmpeg-master-latest-win64-gpl\bin\ffmpeg.exe -r 20 -i "G:\realesrgan\output\%05d.png" -c:v libx264 -r 30 -pix_fmt yuv420p -b:v 3200k -maxrate:v 4800k -minrate:v 1600k -bufsize:v 1920k G:\realesrgan\output\video.mp4
В документации по ffmpeg найти трудно, но лучше прямо использовать указание на систему цвета файла -pix_fmt yuv420p, у меня без этой отметки программа собирала фильм непонятно как.
Пока я не нашел в проекте Real-ESRGAN подготовку имиджей к сборке ролика для устранения дрожания кадров, в каких-то других проектах точно встречал, напишу позже где видел такую подготовку кадров к сборке, или вы напишите мне.
Пока мне показалось, что старое видео низкого разрешения с сильными шумами лучше всего восстанавливает модель realesrgan-x4plus-anime.
Real-ESRGAN не заточен специально на лицах, но проекты с особым вниманием к лицам мы рассмотрим в ближайшее время.
Потренировать модели самостоятельно для проекта Real-ESRGAN можно в дружественной программе BasicSR. Потребуются значительные вычислительные ресурсы вашего GPU.