Обучение ESRGAN: различия между версиями
Владимир (обсуждение | вклад) мНет описания правки |
Владимир (обсуждение | вклад) мНет описания правки |
||
| Строка 3: | Строка 3: | ||
За основу взята версия релиз 1.2 | За основу взята версия релиз 1.2 | ||
Интересно то, что все будет | Интересно то, что все будет запускаться нативно в Windows. Без каких либо прослоек. С использование аппаратного ускорения CUDA. | ||
== '''Подготовка''' == | == '''Подготовка''' == | ||
Версия от 19:24, 21 мая 2021
Обучения силами BasicSR от Xintao.
За основу взята версия релиз 1.2
Интересно то, что все будет запускаться нативно в Windows. Без каких либо прослоек. С использование аппаратного ускорения CUDA.
Подготовка

Python
Устанавливаем Python, в моем случае 3.9.5 с официального сайта.
При установке обязательно поставить галочку на против Add Python 3.9.5 to Path - это нужно чтобы он прописался как команды в Windows, что позволит выполнять команды Python из любого терминала.
После инсталляции открыть PowerShell и ввести:
Python
Получим ответ по типу:
Python 3.8.5 (default, Sep 3 2020, 21:29:08)
Значит все Ок, все установлено верно и будет работать.

PyTorch
фреймворк машинного обучения для языка Python с открытым исходным кодом.
Без него не будет работать BasicSR.
Берем опять же от официалов
В моем случае это версия 1.8.1, для Windows, устанавливаться будет через pip3, Работать будет с CUDA11.1.
Будет сгенерирован код.
Выполняем через PowerShell от администратора:
pip3 install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio===0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
Начнется небыстрая установка компонентов.
Результатов в процессе будет очень много, сложно сказать какие могут быть проблемы...
NVDIA драйвер
Ставим самый последний драйвер, как обычно, наверняка это все умеют, с официального сайта конечно.

CUDA Toolkit
Такое обычный пользователь ставить не будет, но в данном случае придется, ведь наша нейросеть основана на cuda, точнее она исполняет код с помощью CUDA Toolkit.
Конечно же брать с официального сайта. Выбрать Windows, архитектуру x86_64, версия Windows конечно же 10, ну и тип установщика: автономный или локальный, в челом без разницы.
Устанавливает как обычно, практически также как драйвер.
Так что ждем установки и радуемся успешному окончанию.
Git
Тоже мало кто будет ставить это на Windows, но разработчики это делают по умолчанию. Потому что, а как еще взаимодействовать с GitHab. Интересно, что MS давно уже приобрели GitHab, но какого мелкомягкого человека Git не встроен в Windows до сих пор!?
Ладно... Скачиваем с официального сайта. Естественно под x64, в каком веке мы живем?
Ничего сложного, далее, далее, далее, готово.
Теперь мы можем получать с Githab и подобных файлы напрямую, через PowerShell.

Microsoft C++ Build Tools
Не понимаю зачем но придется поставить и вот это. Да понятно что это, но на всего то нужно пара как их то модулей, но придется ставить монструозный софт, весом под 4 гигабайта.
Конечно скачать с официального сайта.
При установке, отметить галкой C++ Build Tools. Как показано на картинке.

BasicSR
При скачивании последней версии, обучение модели работает, но при создании Валидных изображений процесс крашится. На момент 22.05.20.
Поэтому беру релизную версию и не мучаюсь. В ней все работает, но инструкция не соответствует. Поэтому по ссылке приложена именно страница на момент выпуска релиза.
Важно!
В инструкции написано:
git clone https://github.com/xinntao/BasicSR.git
Но так как мы берем не последнюю версию, то нужно просто получить архив, на картинке:
Скачиваем архив, помещаем содержимое куда надо. Вообще не важно куда.
Теперь запускаем PowerShell от админа.
Переходим в папку BasicSR - у меня это выглядит так:
cd D:\test\AI\BasicSR
Выполняем команды:
pip install -r requirements.txt
python setup.py develop
Произойдет не мало всего, и очень надеюсь что без ошибок.
Настройка
Под настройкой подразумевается прописывание в конфигах нужных путей, настроек.
Мы хотим обучать сеть, алгоритм будем брать ESRGAN.
Открываем текстовым редактором файл:
.\BasicSR\options\train\ESRGAN\train_ESRGAN_x4.yml
name: указываем имя паки в которую будут складываться результаты.
name: Manga_set2
Далее по документу:
datasets: train: name: DIV2K type: PairedImageDataset dataroot_gt: datasets/Manga_set2/GT # тут папка в корой лежат файлы к которым сеть будет стремиться. dataroot_lq: datasets/Manga_set2/LQ # тут файлы которые сеть будет пытаться превратить в то к чему нужно стремится.
Следующий блок:
val: name: Set14 type: PairedImageDataset dataroot_gt: datasets/Manga_set2/GT_V # это файлы валидности, чрез некий промежуток времени будет делаться создание обученной сетью обработка, то что как бы должно быть. dataroot_lq: datasets/Manga_set2/LQ_V # из этого она попытается сделать конечный результат, который мы увидим, своего рода срезы обучения.
Следующий блок отвечает за местоположение файла предварительно обученной модели.
path: pretrain_network_g: experiments/pretrained_models/ESRGAN_PSNR_SRx4_DF2K_official-150ff491.pth # путь до файла модели, обучение запускается именно отсюда strict_load_g: true resume_state: ~ # в начале обучения тут ничего не должно быть, но в какой то момент, захочется остановить обучение, и продолжить позже, для этого ниже создаются срезы модели. Вот этими срезами и можно будет воспользоваться для возобновления обучения. Просто будет указан путь до среза.
Данный блок отвечает за то как часто будет создаваться изображения валидности, из срезов.
val: val_freq: !!float 1e2 # может указываться как в научном виде, так и простом, например 200. Каждые 200 итераций, будет выполнено создание изображения с использованием текущего состояния модели. save_img: true
Данные блоки отвечают за частоту отображения состоянии итераций и сохранении срезов модели.
logger: print_freq: 10 # частота отображения результатов в командной строке. save_checkpoint_freq: !!float 1e3 # частота создания срезов модели. В данном случае раз в 1000 итераций. Не забываем что каждый такой срез занимает 256 мегабайт, и таких срезом будет порядка 400, в итоге это будет занимать очень много места.
В общем с настройками train_ESRGAN_x4.yml можно закончить.
Следующим этапом будет подготовка датасетов.