Как апскелить у себя дома
Краткая предыстория: решил посмотреть первый сезон покемонов, но захотелось, чтоб прям всё красивишно в 4к, потому начал искать варианты.
Машина 1: Стационарный ПК, MX Linux, R7 7700X, RX 7900XTX, 32 ГБ ОЗУ
Машина 2: Ноутбук Win10, R7 5800H, RTX 3060 Laptop, 16 ГБ
-----
Первым делом попробовал dandere2x (https://github.com/akai-katto/dandere2x), он основан на waifu2x. Итог: тестовый отрывок (20 секунд) обработан на машине 1 за ~5 минут, покадровое сравнение выгоды относительно просмотра видео без апскейла не выявило. Инструкции по установке, которыми я пользовался, если кому интересно:
-----
После этого я обнаружил Anime4K (https://github.com/bloc97/Anime4K), апскейлер в реальном времени, основной минус - работа с ограниченным кол-вом проигрывателей (1-3 в зависимости от ОС). Инструкции по установке и применению находятся по ссылке выше в зависимости от проигрывателя. Но я пользуюсь SMPlayer, так что вот инструкция:
1) Следуем инструкции mpv
2) Открываем файл input.conf, открываем настройки SMPlayer (ПКМ - сервис - настройки - дополнительно - MPlaeyr/mpv) и вставляем необходимый нам профиль в поле "параметры"
Например: вы хотите профиль "A", в input.conf вы видете строку:CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A (HQ)"
В параметры вы копируете только то, что находится в кавычках (вместе с кавычками) после слова set и до слова show-text, то есть:
"~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"
И добавляете перед этим: --glsl-shaders=, получая что-то вроде этого:
--glsl-shaders="~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"
3) Profit
Естесственно комбинации клавиш для переключения профилей в таком случае не будет.
Стоит упомянуть, что Anime4K не сохраняет апскельнутую версию, так что каждый раз будет апскелить как в первый.
-----
Там же на сайте Anime4K было сравнение разных алгоритмов:
Очевидно, что после такого я захотел установить real-ESRGAN, потому что я хотел бы как раз сохранить себе апскельнутую версию, плюс он всё таки визуально получше.В результате визуально качество Anime4K (я использовал пресет для higher-end gpu) и Real-ESRGAN довольно близко, но некоторую разницу при сравнении заметить можно.
Обработка тестового отрезка (20 секунд) на машине 1 заняла ~56.5 минут (заработала только на CPU), на машине 2 - ~2 минуты. Были мысли перед постом проверить работу через ZLUDA (https://github.com/vosen/ZLUDA) недавно вышедшую прослойку между CUDA и видеокартами AMD, но на Debian пока нет ROCm, так что когда-нибудь...
Дальше инструкция по установке Real-ESRGAN на Win10 и Linux и бонусные батники для винды для удобства.
Собственно инструкция:
1) Установка ffmpeg на Win10 (на linux по идее предустановлено)
1а) Открыть powershell (под администратором)
1б) Установить chocolatey (https://chocolatey.org/install#individual)
- Ввести команду:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
- Проверить, что всё установилось:
1в) Установить ffmpeg
- Ввести команду:
choco install ffmpeg -y
1д) Закрыть powershell
2) Создание python3 virtual environment (venv) (необходим установленный python3)
Windows:
- Открыть командную строку (cmd) (под администратором)
- Ввести команду, чтобы установить virtualenv:
pip install virtualenv
- Перейти в директорию, где хотите создать venv
cd /d "G:/AI"
# /d указывает на то, что директория будет на другом диске (G)
- Создать venv
virtualenv anyname-venv
# Вместо anyname-venv можно указать любое допустимое в win10 имя
Linux:
- Открыть терминал
- Перейти в директорию, где хотите создать venv
cd ~/AI
# ~ означает домашнюю директорию пользователя
- Создать venv
python3 -m venv ./.anyname-venv
# Первая точка означает текущую директорию
# Вторая точка - часть названия, просто файлы и папки, начинающиеся с точки считаются скрытыми
# Вместо .anyname-venv можно указать любое допустимое в linux имя
3) Активация venv (Нужно будет делать каждый раз, когда захотите запустить Real-ESRGAN) (делается из директории в которой мы вводили предыдущую команду)
Windows:
- Заходим внутрь
cd anyname-venv
cd Scripts
- Активируем
activate
Linux:
source ./.anyname-venv/bin/activate
4а) Переходим в папку куда мы скачали и разархивировали Real-ESRGAN
Windows:
cd G:\AI\Real-ESRGAN-masterLinux:
cd ~/AI/Real-ESRGAN-master
4б) Устанавливаем необходимые библиотеки
pip install basicsr facexlib gfpgan ffmpeg ffmpeg-python
Windows:
pip install -r G:\AI\Real-ESRGAN-master\requirements.txt
Linux:
pip install -r ~/AI/Real-ESRGAN-master/requirements.txt
# -r указывает, что мы передадим файл со списком библиотек
# файл находится в скачанной директории
python setup.py develop
4в) Для владельцев ВК Nvidia отдельно устанавливаем pytorch с поддержкой CUDA
- Переходим на сайт https://pytorch.org/get-started/locally/
- Выбираем ОС, версию Cuda и установщик (pip)
- Копируем и выполняем выданную команду4г) Правим код библиотек, чтобы он заработал
- Открываем файл ...\anyname-venv\Lib\site-packages\basicsr\data\degradations.py любым текстовым редактором (блокнот подходит)
Правим 8-ую строчку, из
from torchvision.transforms.functional_tensor import rgb_to_grayscale
Делаем
from torchvision.transforms.functional import rgb_to_grayscale
- Открываем файл ...\anyname-venv\Lib\site-packages\ffmpeg\_probe.py (Необязательно. Обязательно для обработки .mkv)
Правим 16-ую строчку, из
from torchvision.transforms.functional_tensor import rgb_to_grayscale
Делаем
args = [cmd, '-show_format', '-show_streams', '-of', 'json', '-count_frames']
# Чтобы для каждого видеофайла "вручную" считалось кол-во кадров, потому что, например, в .mkv нет данных о кол-ве кадров
4д) Правим код Real-ESRGAN, чтобы он заработал (или берём готовые файлы из гугл диска)
Если добавляли ручной подсчёт кол-ва кадров:
- Открываем файл ...\Real-ESRGAN-master\inference_realesrgan_video.py
Правим 35-ую строчку, из
ret['nb_frames'] = int(video_streams[0]['nb_frames'])
Делаем
try:
ret['nb_frames'] = int(video_streams[0]['nb_frames'])
except(KeyError):
ret['nb_frames'] = int(video_streams[0]['nb_read_frames'])
# Обращаем внимание на отступы (их можно сделать нажатием кнопки Tab)
Если запускаем на процессоре:
- Открываем файл ...\Real-ESRGAN-master\inference_realesrgan_video.py
Правим 272-ую (275-ую, если делали предыдущую правку) строчку, из
torch.cuda.synchronize(device)
Делаем
#torch.cuda.synchronize(device)
Правим 291-ую (294-ую) строчку, из
if num_process == 1:
Делаем
if num_process <= 1:
5) Запускаем обработку видео (желательно из папки Real-ESRGAN)
python inference_realesrgan_video.py --fp32 --suffix esrgan -i G:\AI\Real-ESRGAN-master\inputs\[Timber_Maniacs]_Pokemon_043_(041)_[Rus-Eng]_[XviD]_[219F48A8].mkv
# параметр --fp32 нужен, чтобы не было ошибки
# параметр --suffix указывает какой суффикс будет у выходного файла, по умолчанию: out. Например: исходный файл: "name.mp4", файл на выходе: "name_out.mp4" или "name_esrgan.mp4" в случае этой команды.
# параметр -i говорит какой файл обрабатывать (по идее можжно обрабатывать несколько файлов и всё такое, но оно как-то криво работает, так что только так)
# итоговые файлы будут сохраняться в папке .../Real-ESRGAN/results
6) Для WIn10 из гугл диска можно взять один из файлов с расширением .bat, чтобы облегчить себе запуск нескольких видео сразу
7) Profit
-----
Гугл диск: https://drive.google.com/drive/folders/1kxS7yC750WqSBmvGQyFVrEMTCFP9S96w?usp=sharing
inference_realesrgan_video-CPU.py и inference_realesrgan_video-CUDA.py переименовать в inference_realesrgan_video.py и заменить оригинал.
Real-ESRGAN-autostart(video).bat запускает в обработку все файлы, которые находятся в папке "G:/AI/Real-ESRGAN-master/inputs/". Его надо открыть в том же блокноте и отредактировать пути на соответствующие вашим.
Спасибо за внимание!
Подробнее
Dandere2x ai video upscaler linux install and overview
i □ л SMPlayer - Настройки Л Основные Устройства Быстродействие Аь£ Субтитры Интерфейс Клавиатура и мыи. Плейлист ТВ и радио Обновления Сеть Дополнительно Дополнительно MPlayer/mpv Сеть Журналы Параметры для МР1ауег/тру Здесь вы можете указать параметры и фильтры МР1ауег/тру. Параметры: AutoDownscalePre_x4.glsl:—/shaders/Anime4K_Upscale_CNN_x2_M.glsl|| Видеофильтры: Аудиофильтры: □ Запускать MPlayer/mpv в отдельном окне 0 Уведомлять о сбоях MPlayer/mpv Отправлять параметр -playlist в MPlayer (небезопасно) < ? Справка >/ОК ■У Применить х Отмена
Bicubic FSRCNNX Anime4K-GAN waifu2x Real-ESRGAN
PS C:\Users\shtur> choco Chocolatey v2.2.2 Please run 'choco -?' or 'choco <command> -?' for help menú.
Microsoft Windows [Version 10.0.19045.4046] (с) Корпорация Майкрософт (Microsoft Corporation). Все права защищены. С :\Windows\system32>cd /d "G:/AI" G:\AI>virtualenv anyname-venv created virtual environment CPython3.10.6.final.0-64 in 1120ms creator CPython3Windows(dest=G:\AI\anyname-venv, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\shtur\ AppData\Local\pypa\virtualenv) added seed packages: pip==23.3.2, setuptools==69.0.3, wheel==0.42.0 activators BashActivator,BatchActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
:\AI>cd anyname-venv :\AI\anyname-venv>cd Scripts :\AI\anyname-venv\Scripts>activate (anyname-venv) G:\AI\anyname-venv\Scripts>
p master P 1 Branch O 19 Tags xinntao update readme D .github/workflows M .vscode M assets li docs li experiments/pretrained_models <> Code ▼ 0 Clone © add github release HTTPS GitHubCLI add no-response v https://github.com/xinntao/Real-ESRGAN.git ) ^ Clone using the web URL. Update ReadMe (# update readme, vC (D Download ZIP add readme for training 3 years ago
PyTorch Build Stable (2.2.0) Preview (Nightly) Your OS Package Language Compute Platform Run this Command: Linux Mac Conda Pip Python CUDA 11.8 CUDA 12.1 LibTorch C++/Java ROCm 5.7 Windows Source CPU iîii»WiHiaii лгптдвиД torch torchvision torchaudio Т!ии>1)Д
нейросеть,песочница,апскейл,инструкция
Статья норм, заливай английскую версию куда-нибудь на gist
Ну и раз уж напердолился с mpv, ждем статьи про 60 fps и motion interpolating, хуле.
А что там пердолится? Anime 4K спокойно ставится на mpv в 2 клика...
У меня есть гит где там я там всё собрал в кучку. Качаешь 2 архива распаковываешь, юзаешь...
https://github.com/Donate684/mpv-anime
Даже писал тут когда то...
https://ar.reactor.cc/post/5599393
А если есть условная карта топ сегменте в виде 3090/4090
Есть...
https://github.com/the-database/mpv-upscale-2x_animejanai
Там есть скрипт для пакетного преобразования файла в 4к либо что бы юзать это всё в реалтайме... Но карта нужна хорошая...
60 фпс и выше в аниме не приживётся там слишком резкое переключение между сценами.
В целом anime4k за глаза на текущий момент и работает в целом на весьма слабом железе.
Nvidia в последних драйверах апскейлер уже встроила - работает на лету в хроме (Youtube и подобное) и VLC (который нужно скачать с их сайта) или, например я в PotPlayer завёл поддержку. Единственное - видекоарта должна быть RTX.
Только с 30-й серии