Grand Theft Auto: San Andreas

Grand Theft Auto: San Andreas

Ocen: 28
ESRGAN или улучшение текстур.
Autorstwa: Alexkhav
Всем привет. В сети идет информация, что какие-то нейросети улучшают текстуры в старых играх. Решил попробовать что это из себя представляет.
   
Przyznaj nagrodę
Ulubione
Ulubione
Usuń z ulubionych
Что это.
ESRGAN (Enhanced Super Resolution Generative Adversarial Networks) представляет собой нейросеть, с помощью которой реализуются технологии масштабирования изображений с 2-8-кратным увеличением качества.
Принцип работы следующий: на вход алгоритму передается оригинальное изображение с низким разрешением, после чего он не только увеличивает исходное разрешение последнего, но еще и повышает качество изображения, добавляя к нему реалистичные детали и делая текстуры картинки «более естественными». За несколько проходов алгоритм, как правило, создает изображение с еще большей точностью и реалистичностью.
Как установить и работать.
К сожалению русского руководства как установить и работать в сети нет. Приходилось пользоваться гугл переводчиком.
Итак, для работы необходима система не ниже Windows 7 и причем обязательно x64 архитектуры. Далее рекомендуется иметь наличие ускоритель NVIDIA и причем не очень старый (у меня ASUS GeForce GTX 1060 DUAL OC 6GB), в противном случае работа нейросети будет идти за счет центрального процессора. Об этом позже будет.
1. Первый шаг - установить на компьютер язык программирования Python. Рекомендуется ставить версию 3.8.3 https://www.python.org/downloads/release/python-383/, в конце страницы в разделе "Files" и вкладке "Version" выбираете "Windows x86-64 executable installer". Можете выбрать веб установку, как угодно.
2. У кого видеокарта Nvidia рекомендуется к установке последние драйвера.
3. Третий шаг - идем на сайт установки PyTorch https://pytorch.org/get-started/locally/, ,
выбираем "Stable (1.7.0) в "PyTorch Build", "Windows" в "Your OS", "Pip" в "Package", "Python" в "Language", "Cuda 11.0" у кого видеокарта Nvidia или "None" если нет. Далее запускаем командную строку cmd.exe и копируем команду которая будет в графе "Run this Command:" и жмем Enter. Ждем пока все установится и загрузится. Как все закончится вставляете еще одну команду "pip install opencv-python" и жмем Enter. После установки всех компонентов может высветиться информация об обновлении pip. Вводим команду "python -m pip install --upgrade pip". Далее для корректной работы вводим еще строку "pip install numpy==1.19.3". Как все закончится закрываете командную строку.
4. Теперь идем на сайт ESRGAN, https://github.com/xinntao/ESRGAN, и загружаем пакет с двумя подготовленными моделями.
4.5. Этот шаг нужен тем у кого нет ускорителя от NVIDIA - открываем блокнотом файл test.py и меняем строчку “device = torch.device(‘cuda’)“ на “ device = torch.device(‘cpu’)”. Там работа сети будет идти за счет центрального процессора.
5. Дальше работа идет ТОЛЬКО в командной строке. На странице загрузки ESRGAN https://github.com/xinntao/ESRGAN есть инструкция как работать. Главное уметь работать с командной строкой. Вспомните куда вы распаковали архив с сетью. Выполните быстрый тест.
6. Помимо сети ESRGAN есть такая как SFTGAN. У этой сети свои методы улучшения в отличие от ESRGAN. Ссылка https://github.com/xinntao/SFTGAN. Работа все так же через командую строку. В отличие от ESRGAN вам нужно увеличить изображение в 4 раза. SFTGAN сам уменьшит его, улучшит качество и вернет разрешение в изначальный размер.
Дальше все в ваших руках. В интернете много моделей, которые тренированы на основе тех, кто вы скачали в 4-м пункте. Скачиваете и экспериментируйте.
Наглядные результаты работы.
Вот пример улучшения текстуры фар. Стандартная текстура очень ужасная а после улучшения выглядит ничего для оригинала. Руководство было переделано. Позднее будет еще больше сравнений.
Еще примеры.
Попытка обучить сеть с использованием разных изображений.
UPD 25.01. Всем привет. Кое как разобравшись что нужно для того чтобы обучать нейросеть с использованием разных изображений получил некоторые результаты. Итак, вернулся значит к начальной текстуре фар. Изначальная выглядит так . Теперь пошли результаты с попыткой обучения - использование модели с проходом в 5000 чего-то там (чего не знаю ибо в языке программирования дуб дубом), -тоже только 10000,
-15000. Разница на глаз вообще не заметна. Цифра в шаг 5000, я так понимаю, это сеть на тестовых картинках в течении 5000 раз учится улучшать картинку (для обучения берется какое-то количество тестовых изображений, далее эти изображения разрезаются на плитки определенных размеров, потом эти плитки надо уменьшить в 4 раза, и сеть уже пытается эти уменьшенные плитки вернуть в изначальный размер сверяясь с небольшим количеством плиток, оставленных для эталона). Далее обученная модель уже пытается улучшить изображение, которое я ей скармливаю - в нашем случае это текстура фар.
-это тоже результат модели 5000 но только уже обученная на других изображениях в отличие от верхних. Разницы опять не вижу. Может я что-то делал не так. А вот сейчас будут текстуры которые получены от уже предварительно обученых моделей которые идут в комплекте с ESRGAN.
-модель называется RRDB_PSNR_x4.-Manga109Attempt (скачивается отдельно)
-RRDB_ESRGAN_x4 (результат вроде ничего но больно много шума).
Каждая модель улучшает текстуру по своему. У манги выход ближе к оригиналу и плюс немного размыто, у PSNR результат получился поинтереснее но нехватает чуть чуть размытия, у модели ESRGAN результат не понятный (слишком много шума), ну а у обученых мной моделях результат похожий на мангу с небольшой разницей.
А вот результат через сеть SFTGAN .
Так же сделал попытку текстуру прогнать через ESRGAN методом сетевой интерполяций в режиме 0.1 а затем полученный результат через SFTGAN. Результат

Какая модель вам больше понравилась?
Продолжение экспериментов.
Upd 16.02. Всем привет. Решил немного поэкспериментировать над очень старой игрой под названием Дальнобойщики 2. Результаты превзошли все мои ожидания. Говорить больше не о чем - просто смотрите что вышло.



Использована последняя обученная мной модель 5000. Жду ваших комментариев.
Komentarzy: 22
SP TA* 2 listopada 2021 o 10:18 
в мафии лост хавен и то графон получше чем в оригинальное сан адреес,вообще пиздец какой-то рок стар этот!
desync 9 grudnia 2020 o 8:15 
Спасибо за статью!
Alexkhav  [autor] 5 listopada 2020 o 8:25 
Обновил руководство по установке.
Acwellen 4 listopada 2020 o 15:52 
По ходу, я совсем ламер, но при попытке запустить строку из командной строки мне пришёл следующий ответ:
"pip" не является внутренней или внешней командой, исполняемой программой или пакетным файлом."
Alexkhav  [autor] 5 kwietnia 2020 o 3:32 
http://forums.qhimm.com/index.php?topic=18556.0 вот еще ссылка на обучение.
Alexkhav  [autor] 5 kwietnia 2020 o 3:18 
Ну обучение занимает достаточно долго. Все от мощности видеокарты зависит. Проход обучения в 100 чего-то там раз в 10 минут (или меньше), точно не помню. Раз в 5000 происходит сохранение обученной модели. Около 2 часов занимает на моей видеокарте проход в 5000.
JackKhoros 4 kwietnia 2020 o 18:26 
Ход мысли был такой: натренировать свою модель на определенном типе контента (на высококачественной записи (и её ухудшенном варианте) одной конкретной игры например) и получить узконаправленную модель, которая глобально ничего не может и никуда не годится, но превосходно работает конкретно с тем контентом, на котором она была натренирована.
Таким образом в теории можно было бы восстановить это:
https://youtu.be/0ebSY9wPCzI
Используя модель, обученную на этом:
https://youtu.be/oiUhl9opCE0
JackKhoros 4 kwietnia 2020 o 18:18 
А долго по времени оно обучалось? На самом деле интересует не эта нейросеть, а та, которая сейчас уже с ней в одном наборе инструментов (MMSR) - EDVR. Вчера в процессе установки всего необходимого софта что-то не срослось с пунктом про Deformable Convolution. Выходила ошибка. Да и мотивация пропала искать решение, так как не совсем понятно как составлять команду для тренировки своей модели, для ей непосредственного использования, да и вообще стало понятно что на моей 1080 обучение займет тысячу (плюс минут 300) лет...
Alexkhav  [autor] 4 kwietnia 2020 o 8:11 
Я уже не помню. Слишком давно это было. Делал по этой инструкции https://www.reddit.com/r/GameUpscale/comments/ag4ax3/instructions_for_training_esrgan_in_windows_i/