Хан Ходиль
Хан Ходиль
Хан Ходиль
Рейтинг:
10.290 за неделю
Постов: 23
Комментов: 217
C нами с: 2016-04-04

Посты пользователя Хан Ходиль

Как апскелить у себя дома

Краткая предыстория: решил посмотреть первый сезон покемонов, но захотелось, чтоб прям всё красивишно в 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'))
- Проверить, что всё установилось:
PS C:\Users\shtur> choco
Chocolatey v2.2.2
Please run 'choco -?' or 'choco <command> -?' for help menú.,нейросеть,песочница,апскейл,инструкция
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
:\AI>cd anyname-venv :\AI\anyname-venv>cd Scripts :\AI\anyname-venv\Scripts>activate (anyname-venv) G:\AI\anyname-venv\Scripts>,нейросеть,песочница,апскейл,инструкция
Linux:
source ./.anyname-venv/bin/activate
4а) Переходим в папку куда мы скачали и разархивировали Real-ESRGAN
Windows:
cd G:\AI\Real-ESRGAN-master
Linux:
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
-----
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/". Его надо открыть в том же блокноте и отредактировать пути на соответствующие вашим.

Спасибо за внимание!


Ну что сказать, времени у меня совсем нет, сессия всё ближе, заранее переведённый текст закончился, хобби начало превращаться в работу (перевод). В общем я как поистине ленивый студент решил взять перерыв... Где-то до января - февраля. Переведённые пять страниц выкладываю (подумал нехорошо просто текст выкладывать), но не думаю, что я их хорошо перевёл, когда вернусь как минимум 332 и 334 я переделаю, 333, возможно, если будет время придумать нормальный текст под ритм (что вряд ли). По секрету: я не очень хороший стихоплёт, а песнесочинитель - ещё хуже.

В общем читайте и ждите, ну или не очень.

Т.к. 332 и 334 страницы были сделаны на отвали (332 так вообще отвратительно на мой взгляд, наверно, не стоило вообще их выкладывать) в ограниченном количестве времени ожидаю отгрести кучу минусов (но я не настаиваю...)

З.Ы. 331, 333, 335 делались без недостатка во времени.
З.З.Ы. Я не смог разобраться, кто такой PF.

страницы 331-335 (гостевые)
Отлично. Я всё ещё могу сожрать твой Элемент.
ЧТО?
Без проблем. Он в моей седельной сумке.
Ты можешь взять его.
Подождите минутку! Разве ты не сбросила свои сумки в лаву в храме
да! Я подозревала, что^в что-то такое произойдёт, но не знала что. Так что я уничтожила свой Элемент, потому что ни

Вот и подошёл конец 4-ой игровой сессии и скоро подойдёт конец заранее переведённому тексту (~2 недель ещё) и частота выкладки скорее всего упадёт...
страницы 326-330


Да, первый звук не очень, но мне было влом уже переделывать может позже (через недельку-две) выложу более красивую версию.
страницы 321-325


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

страницы 316-320