Я все таки нашел решение именно для улучшения размытых фото с сохранением изначального лица — и оно офигенное!
Первым делом большое спасибо Tao Yang, Peiran Ren, Xuansong Xie и Lei Zhang за GAN Prior Embedded Network for Blind Face Restoration in the Wild
Публичную версию проекта они раздают всем на гитхаб github.com/yangxy/GPEN. GPEN позволят увеличивать лица в четрые раза и картинку с несколькими лицами в четыре раза. Как и все великие программисты инструкцию по установке и использованию они писать не умеют поэтому и я тут вот…
В предыдущей статье Инструкция по установке PULSE: Self-Supervised Photo Upsampling на Ubuntu я видимо наступил на все грабли с CUDA и Anaconda (и подробно их описал), но тут выходит это… Anaconda не нужно точно, явно только нужен Python и он уже установлен. А вот CUDA выходит что нужен, в требованиях его нет и при обработке одной фотки не заметно что видеокарта нагружается, а при тысячи начинает гудеть как не в себя! Так что cuda-toolkit должно быть установлено как описано в статье Инструкция по установке PULSE: Self-Supervised Photo Upsampling на Ubuntu!!!
Вся конфигурация ПК:
OS: Ubuntu 20.04.3 LTS
CPU: AMD® Ryzen 7 3700x 8-core processor × 16
MB: Gigabyte X570 I AORUS PRO WIFI
Mem: 64 GB DDR4 1330 Mhz
GPU: Nvidia GeForce RTX 2070 8Gb
Disk: Samsung SSD 512Gb EVO Plus
Создаем папку и клонируем туда гитом проект
git clone https://github.com/yangxy/GPEN.git
cd GPEN
cd ./GPEN/weights
сюда качаю модели все что есть по ссылкам в описании на гитхабь (итого 1,6 Gb)
wget https://public-vigen-video.oss-cn-shanghai.aliyuncs.com/robin/models/RetinaFace-R50.pth
wget https://public-vigen-video.oss-cn-shanghai.aliyuncs.com/robin/models/GPEN-BFR-512.pth
wget https://public-vigen-video.oss-cn-shanghai.aliyuncs.com/robin/models/GPEN-BFR-512-D.pth
wget https://public-vigen-video.oss-cn-shanghai.aliyuncs.com/robin/models/GPEN-BFR-256.pth
wget https://public-vigen-video.oss-cn-shanghai.aliyuncs.com/robin/models/GPEN-BFR-256-D.pth
wget https://public-vigen-video.oss-cn-shanghai.aliyuncs.com/robin/models/GPEN-Colorization-1024.pth
wget https://public-vigen-video.oss-cn-shanghai.aliyuncs.com/robin/models/GPEN-Inpainting-1024.pth
wget https://public-vigen-video.oss-cn-shanghai.aliyuncs.com/robin/models/GPEN-Seg2face-512.pth
wget https://public-vigen-video.oss-cn-shanghai.aliyuncs.com/robin/models/rrdb_realesrnet_psnr.pth
Запускаю первый раз восстановление картинки из тестовых примеров
python face_enhancement.py --model GPEN-BFR-512 --size 512 --channel_multiplier 2 --narrow 1 --use_sr --indir examples/imgs --outdir examples/outs-BFR
Вылетают ошибки из которых легко становится ясно что мне в Python надо до установить еще
pip install opencv-python
pip install torchvision
pip install ninja
полный список того что нужно вот такой, у меня видимо остальное уже было установлено
ninja
torch
torchvision
opencv-python
numpy
scikit-image
pillow
И начинается магия создаю в папке GPEN еще две папки pic_in (сюда буду класть фотки на обработку) и pic_out (тут они будут появляются)
GPEN увеличивает в четыре раза, берем картинку 512×512. Название модели GPEN-BFR-512 не знаю почему 512, но есть еще 256, но берем 512. Замечено что чем хуже исходная картина тем лучше четкость, потому что GPEN больше дорисовывает. Надо убирать шумы с картинки если есть — мелкие точки вполне органично рисует как веснушки, а вот рябь или полосы рисует как шрамы или зомби вены.
В папке GPEN запускаю
python face_enhancement.py --model GPEN-BFR-512 --size 512 --channel_multiplier 2 --narrow 1 --use_sr --indir pic_in --outdir pic_out
Все черты сохранены, четкость запредельная, легко узнается Наталия Орейро в детстве и главное результат получен практический моментально, это фантастика!!!!!!
Теперь кладу эту фотку в папку /exampels/grays
запускаю для раскрашивания
python face_colorization.py
и получаю в /exampels/outs-colorization
Очуметь!!!!!
Чтобы face_colorization.py делал так же соло цветную фотку а не пару серая цветная надо после строчки
cv2.imwrite(os.path.join(outdir, '.'.join(filename.split('.')[:-1])+'.jpg'), np.hstack((grayf, colorf)))добавить строчку
cv2.imwrite(os.path.join(outdir, '.'.join(filename.split('.')[:-1])+'_COL.jpg'), colorf)
Еще GPEN умеет добавлять недостающие детали на фото (нос там и пр), надо будет это тоже попробовать!
Проблема с этим режим в том что вот вся инструкция от авторов:
Complete faces:
python face_inpainting.py
И естественно ничего не работает. Я нашел папку в которую надо класть /examples/ffhq-10 нашел папку куда вылезает /examples/outs-inpainting но желаемоего эффекту нет
Как использовать функцию Complete faces в GPEN
Авторы не хотят чтобы мы её использовали, но не запрещают! Файл face_inpainting.py он демонстрационный, рисует на фото хаотично линии потом их убирает.
Убираем часть кода которая занимается этим вандализмом
в файле face_inpainting.py
удаляем строки между
28 for _ in range(np.random.randint(1, 4)): ... 60 return mask
Судя по всему face_inpainting.py надо скармливать фотки размером 1024 поэтому увеличиваем их через Restore face(как описано выше)
Виден изгиб бумаги который надо будет убирать! Для этого надо особым образом подготовить картинку в Gimp! Надо в PNG цвета RGB создать слой маску и там отметить дефекты которые мы хотим исправить. Важно как отмечать! На фоне хороший результат дают толстые мазкт толстой кистью, а на лице местами надо потоньше отмечать.
Этот файл кладем /examples/ffhq-10 запускам кастрированный
python face_inpainting.py
и в /examples/outs-inpainting получаем результат
Итого с раскрашиванием очень даже супер получается
Приветствую Александр, а где скачать сие, можно ссылку, или это работает только онлайн в браузере?
В статье выше описано(несколько сумбурно) как это делать на ПК на Linux — но если вопрос про то как это сделать на Windows то вот лучше другая нейросеть и именно описано как на Windows запускать https://itcooky.com/?p=6993
Здравствуйте Саша меня зовут Костя я поклонник Наталии Орейро увидел вашу работу и очень понравилось я пытался зарегистрироваться на сайте но у меня не получается на пишите мне на электронный адрес хотел бы обработать фото с концерта Наталии Орейро В кремле skvorcovkosta887@gmail.com
Обработать можно через бот https://itcooky.com/?p=7243
Доработал вариант. Получается просто бомба. Прописал и обучил правильную работу с волосами. Теперь ии работает практически со всем образом. Разрабам отправил доработку. Пока молчат. Работаю на cuda а100 и а5000.
А где посмотреть как получается?