Обучение ESRGAN

Материал из wolfram
Перейти к навигации Перейти к поиску

Обучения силами BasicSR от Xintao.

За основу взята версия релиз 1.2

Интересно то, что все будет запускаться нативно в Windows. Без каких либо прослоек. С использование аппаратного ускорения CUDA.

Подготовка

Скрин скачивания с сайта python.org

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

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 Toolkit

Такое обычный пользователь ставить не будет, но в данном случае придется, ведь наша нейросеть основана на cuda, точнее она исполняет код с помощью CUDA Toolkit.

Конечно же брать с официального сайта. Выбрать Windows, архитектуру x86_64, версия Windows конечно же 10, ну и тип установщика: автономный или локальный, в челом без разницы.

Устанавливает как обычно, практически также как драйвер.

Так что ждем установки и радуемся успешному окончанию.

Git

Тоже мало кто будет ставить это на Windows, но разработчики это делают по умолчанию. Потому что, а как еще взаимодействовать с GitHab. Интересно, что MS давно уже приобрели GitHab, но какого мелкомягкого человека Git не встроен в Windows до сих пор!?

Ладно... Скачиваем с официального сайта. Естественно под x64, в каком веке мы живем?

Ничего сложного, далее, далее, далее, готово.

Теперь мы можем получать с Githab и подобных файлы напрямую, через PowerShell.

Пункт для установки Microsoft C++ Build Tools

Microsoft C++ Build Tools

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

Конечно скачать с официального сайта.

При установке, отметить галкой C++ Build Tools. Как показано на картинке.

Как получить нужную версию BasicSR

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 можно закончить.

Следующим этапом будет подготовка датасетов.