ITСooky

IT-рецепты съедобные и не очень!

Инструкция по установке PULSE: Self-Supervised Photo Upsampling на Ubuntu

дата 19.11.2021

DeepFake уже давно в фанаклубовской среде используется, вот теперь и вполне реально улучшать старые маленькие фоты кумиров! Пока правда результат, как бы это сказать, не совсем похоже… а точнее совсем не похоже, я только после написания статьи понял что PULSE специально генерирует случайные лица, и улучшить фото им нельзя!

Обязательно понадобиться
— Видеокарта Nvidia c CUDA

Простого способа использовать PULSE: Self-Supervised Photo Upsampling нет — есть какое-то невероятное нагромождение всего с чем-то и Анаконда… Есть чуть ли ни одна инструкция как всё настроить Как запустить PULSE (face-depixelizer) на Linux в Windows 10 (WSL)? Туториал частично очень мне помогла!

Устанавливаем CUDA и все что для него надо
Нужна видео карта Nvidia c CUDA смотрим что у меня есть
nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.91.03    Driver Version: 460.91.03    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce RTX 2070    Off  | 00000000:0A:00.0  On |                  N/A |
| 40%   37C    P8    19W / 175W |    404MiB /  7979MiB |     16%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

Стандартный драйвер 460.91.03
Он уже с CUDA 11.2
И карта GeForce RTX 2070 8Gb — средняя уже но лучше чем ничего, и куплена еще по ветхозаветным ценам… которых уже нет!

Есть еще вот такая команда
lspci | grep -i nvidia

0a:00.0 VGA compatible controller: NVIDIA Corporation TU106 [GeForce RTX 2070] (rev a1)
0a:00.1 Audio device: NVIDIA Corporation TU106 High Definition Audio Controller (rev a1)
0a:00.2 USB controller: NVIDIA Corporation TU106 USB 3.1 Host Controller (rev a1)
0a:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU106 USB Type-C UCSI Controller (rev a1)

Слова CUDA нет, но видимо по модели чипа понятно что оно есть

По инструкции Nvidia https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#pre-installation-actions проверяем дальше есть ли у нас все нужное для использования CUDA

uname -m && cat /etc/*release

x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
NAME="Ubuntu"
...

Тут главное x86_64

gcc --version

gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0

Установлено уже

Дальше что-то про ядро, я не понял но видимо исходники чтоли нужны
sudo apt-get install linux-headers-$(uname -r)
у меня тоже уже установлено было

Дальше делаем как тут https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#ubuntu-installation

И Nvidia предлагает угадать какой ей нужен дистрибутив у меня…
sudo dpkg -i cuda-repo-__.deb
Пожалуй это не сложно, я только привык что такие вещи сами подтаскивающий при установке
Идем сюда https://developer.download.nvidia.com/compute/cuda/repos/
и мне нужен репозиторий
ubuntu2004 — потому что у меня 20.4
x86_64 — потому что у меня 64 битный убунту
cuda-11-2_11.2.2-1_amd64.deb — потому что CUDA в драйвере у меня версии 11.2

Далее по инструкции Nvidia у меня ничего не работало, делаю как на Habr подставляя везде свои версии
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
sudo sh -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64 /" > /etc/apt/sources.list.d/cuda.list'
sudo apt update

Пробую
sudo apt install -y cuda-toolkit-11-2

Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 cuda-11-2 : Depends: cuda-runtime-11-2 (>= 11.2.2) but it is not going to be installed
             Depends: cuda-demo-suite-11-2 (>= 11.2.152) but it is not going to be installed
 cuda-toolkit-11-2 : Depends: cuda-compiler-11-2 (>= 11.2.2) but it is not going to be installed
                     Depends: cuda-libraries-11-2 (>= 11.2.2) but it is not going to be installed
                     Depends: cuda-libraries-dev-11-2 (>= 11.2.2) but it is not going to be installed
                     Depends: cuda-tools-11-2 (>= 11.2.2) but it is not going to be installed
                     Depends: cuda-documentation-11-2 (>= 11.2.154) but it is not going to be installed
                     Depends: cuda-nvml-dev-11-2 (>= 11.2.152) but it is not going to be installed
                     Depends: cuda-samples-11-2 (>= 11.2.152) but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

И опять мне говорят что кучу зависимостей устанавливать не будут, и вообще ничего не будет установлено… а у всех ставится!!!

Кидаем в консоль все советы из интернета! Вау вот это помогло
sudo apt-get -o Dpkg::Options::="--force-overwrite" install --fix-broken

Установка пошла
sudo apt install -y cuda-toolkit-11-2

Проверяем работоспособность CUDA
wget https://github.com/NVIDIA/cuda-samples/archive/master.zip
unzip master.zip
cd cuda-samples-master
make

Собирается с ошибкой

4 errors detected in the compilation of "graphMemoryNodes.cu".
make[1]: *** [Makefile:354: graphMemoryNodes.o] Error 255
make[1]: Leaving directory '/home/alexandr/test/cuda/cuda-samples-master/Samples/graphMemoryNodes'
make: *** [Makefile:45: Samples/graphMemoryNodes/Makefile.ph_build] Error 2

Проверку не проходит
./bin/x86_64/linux/release/deviceQuery

 CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 804
-> forward compatibility was attempted on non supported HW
Result = FAIL

Гугленье ничего не дает… так что давайте перезагрузимся… интересно…

Пропал Nvidia драйвер
nvidia-smi

Command 'nvidia-smi' not found, but can be installed with:

Сразу почуствовал на логинскрине что-то экран другой, возможно в этом причина провала теста CUDA!

Да, сейчас стандартный драйвер
lspci -k | grep -EA2 'VGA|3D'

Kernel driver in use: nouveau

Пытаюсь установить тот драйвер что был
sudo apt-get install nvidia-driver-460

Перезагрузился, драйвер вернулся

Ееееее теперь тест проходит (даже не мейкал его занова)

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce RTX 2070"
  CUDA Driver Version / Runtime Version          11.2 / 11.2
  CUDA Capability Major/Minor version number:    7.5
  Total amount of global memory:                 7979 MBytes (8366784512 bytes)
  (036) Multiprocessors, (064) CUDA Cores/MP:    2304 CUDA Cores
  GPU Max Clock rate:                            1620 MHz (1.62 GHz)
  Memory Clock rate:                             7001 Mhz
  Memory Bus Width:                              256-bit
  L2 Cache Size:                                 4194304 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
  Maximum Layered 1D Texture Size, (num) layers  1D=(32768), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(32768, 32768), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total shared memory per multiprocessor:        65536 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  1024
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 3 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device supports Managed Memory:                Yes
  Device supports Compute Preemption:            Yes
  Supports Cooperative Kernel Launch:            Yes
  Supports MultiDevice Co-op Kernel Launch:      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 10 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 11.2, CUDA Runtime Version = 11.2, NumDevs = 1
Result = PASS

CUDA установлен, теперь ставим какую-то Anaconda
А Nvidia её называет Conda https://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html#unique_471659779 и их способ установке совсем не работает

С сайта скачиваем дистрибутив https://www.anaconda.com/products/individual#linux
вот этот
Python 3.9
64-Bit (x86) Installer (581 MB)

Запускаем
bash Anaconda3-2021.11-Linux-x86_64.sh

На все соглашаемся, Anaconda кладется в домашнею директорию
/home/alexandr/anaconda3

Чтобы что-то сработало после установки надо открыть заркыть терминальное окно
Да, Anaconda консоль испаганила теперь в начале добавлется (base)

Устанавливаем PULSE
Иду в папку которую раньше делал, потому что опять надо будет качать (удлаем из него master.zip куды чтобы не мешался)
wget https://github.com/adamian98/pulse/archive/master.zip
unzip master.zip

идем в папку и бекапим файл настроек
cd pulse-master
cp pulse.yml pulse.yml.bak

Далее по Habr’у надо отредактировать файл, сделать свой. В первом пункте

Доводим куоск файла pulse.yml до вида — источники пакетов

channels:
  - pytorch
  - defaults
  - conda-forge
  - anaconda

Во втором комнада все понятно
sed '/==/b; s/=\([^=]*\)$//' pulse.yml > pulse1.yml

Теперь создаем окружение Conda
conda env create -f pulse1.yml
Что то много качает, ждем

Активируем
conda activate pulse
в консоле вместо (base) появляется (pulse)

Теперь надо скачать с Google Drive модель, для этого запускам просто
python run.py
И что-то скачивается, и саоздаются еще какие-то папки

Дальше говорится что надо положить чотку в папку realpics её нет в директории пульс создаем
mkdir realpics

Я хочу улучшить вот эту фотку Наталии Орейро, всю хотелось бы но тут дает только лицо

Фотку положил запускаю
python align_face.py
Опять чето скачивает с гугле драйв, сделала папку input туда положило лицо, сильно уменьшив

Еще раз запускаю
python run.py
и нифига

Loading Synthesis Network
Optimizing
BEST (100) | L2: 0.0021 | GEOCROSS: 2.5712 | TOTAL: 0.3417 | time: 6.2 | it/s: 16.20 | batchsize: 1
Could not find a face that downscales correctly within epsilon

Тут надо где-то чего то натсроить… автор то просто пищет «Enjoy!», а чего как не обьясняет! Все задается командаой

Пробую так
python run.py -eps 2e-3 -steps 1000
Система сразу напряглась, видюха завертелась и в папку runs по окнчанию положила результат

ААААААААААААААААААААААААААААААААААААААААААААААААААААААААА
Улучшить улучило, но кто ЭТО!!!

Все дело в настройках конечно, и вот их придется искать неделями (как найду буут писать тут) пока вот что попробую

Лицо вытащю изначально уже растянутым 1024 а не 32 как по умолчанию
python align_face.py -output_size 1024

И попробую сначаал 3000 шагов а потом 30000
python run.py -eps 2e-3 -steps 3000

Результат однозначно лучше на 30000 — правый глаз нарисовался, рот открылся, однако похожесть и есть и нет, но улучшился и на волосах какой-то дрейфующий глюк с чего это!

Погонял день и окончательно разочаровался в PULSE: Self-Supervised Photo Upsampling не для улечшения фото он! И даже в качестве случайных лиц он тоже не очень — в модели лицо одной тётенки и все остальные тётенки на неё сильно получаются похожи!

И глюк-пятно на всех, никак не избавиться от него


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *