нейронные сети, мультфильмы, апскейл
»нейронные сети гайд туториал StableDiffusion песочница
Как перерисовать/раздеть любого персонажа с помощью Stable Diffusion
Сегодня я расскажу о способе дорисовывать любые рисунки с помощью инструментов Stable Diffusion. Но прежде чем я начну, убедитесь что у вас установлена свежая версия Stable Diffusion webui от Automatic1111 + расширение ControlNet 1.1 со всеми нужными моделями.Вот видео-инструкции (смотреть по порядку):
Установили? Тогда начинаем.
Часть 1. ControlNet Inpaint
Ни для кого не секрет, что в SD существует фича под названием inpaint - это, по сути, способ сгенерировать что-то поверх существующего изображения. В интерфейсе от Automatic1111 под inpaint'ом обычно подразумевают один из режимов img2img. Это хоть и мощный инструмент, но, всё же, недостаточно точный и контролируемый. Тут на помощь приходит ControlNet Inpaint и исправляет главный недостаток "классического" inpaint'а - игнорирование контекста. Впрочем, достаточно теории переходим к практике.
Итак, возьмём изображение, которое мы хотим отредактировать.
И сразу же уменьшаем/увеличиваем его до нужного разрешения:
В моём случае с 1500x1500 до 640x640. По опыту скажу, что лучший результат получается при размере меньшей стороны от 512 до 768 пикселей, а большая сторона при этом желательно меньше 1024 пикселей.
Теперь замазываем места, которые хотим перерисовать:
В промпт пишем то, что хотим в результате видеть. Ещё раз, пишем не то, что нужно нового добавить, а то, каким хотим видеть финальную картинку:
1girl, naked, completely nude, (best quality, masterpiece:1.2)
Негативный промпт как обычно:
EasyNegative, badhandv5, (worst quality, low quality, normal quality:1.4)
Модель подбираем поближе к стилю рисунка (реалистичный/стилизованный). В моё случае это MeinaMix_v11-inpaint.
Параметры генерации:
Всё, можно нажимать Generate до тех пор пока не появится приемлемая картинка.
Столь хороший результат обеспечивается препроцессором inpaint_only+lama - он пытается дорисовать зону под маской с учётом "наружного контекста". Это же и обеспечивает генерацию правильного цвета.
Простой случай разобрали, переходим к чему-то посложнее:
Часть 2. Style transfer
Возьмём теперь другой рисунок попробуем повторить описанный выше процесс:
Мда, мало того, что поза поехала, так ещё и стиль оказался потерян. Одного ControlNet Inpaint тут недостаточно. Надо подключать дополнительные юниты.
Нам нужно решить 2 задачи:
Повторить существующий стиль рисункаСохранить силуэтДля решения первой задачи будем использовать ControlNet reference и ControlNet T2IA - они оба позволяют копировать стиль с изображения-референса и как нельзя лучше работают в связке.
Возвращаемся к интерфейсу ControlNet'a. Копируем исходное изображение в Unit 1 и Unit 2. Настраиваем вот так:
(Все нужные модели скачать не забыли?)А в качестве четвёртого ControlNet'a можно использовать любой, что позволяет сохранить форму: canny, depth, softedge, lineart - на ваше усмотрение и под конкретную задачу.
(Вот тут softedge)
Интересный факт: никто не запрещает отредактировать выход предпроцессора в фотошопе. Что-то убрать, что-то подрисовать. Вот где могут понадобиться навыки рисования.
Ладно, всё 4 юнита активны. Нажимаем Generate и:
Это совсем не то, нужно!
Формы сохранены, но промпт будто проигнорирован. Что случилось? Я вам скажу что: сила ControlNet'а оказалась слишком велика. Stable Diffusion попытался во время генерации воссоздать рисунок-референс да ещё и плюс inpaint там подсунул белый цвет с фона!
Как с этим бороться? Нужно уменьшить эффект двух юнитов переноса стиля (reference и T2IA), но при этом нельзя сильно уменьшать их силу, иначе перенос стиля будет ослаблен. В общем, нужно воспользоваться настройкой Starting Control Step. Она отвечает за то, на какую долю шагов генерации придётся действие ControlNet'a.
Starting Control Step 0.5, например, означает, что первую половину шагов генерация будет опираться только на промпт, а со второй половины подключится уже наш ControlNet.
В общем, план такой: слегка понижаем Control Weight (сила) у стилевых юнитов (примерно до 0.9). После этого начинаем постепенно поднимать границу начала действия стилевых юнитов. Также имеет смысл подобным же образом немного ослабить действие Inpaint'a - позволяет в некоторых случаях исправить цвета.
После нескольких попыток (и усиление промпта) получаем вот такую задницу:
Не идеально, но уже шаг в нужном направлении. На самом деле, сейчас можно (и нужно) уже именно это изображение сделать референсом. Другими словами, скопировать его во все 4 юнита и отталкиваться уже от него. И так сколько нужно раз. Пока не получится идеальный результат, либо ваша генерация окончательно не развалится.
Часть 3. img2img
Даже после получения хорошей генерации во вкладке txt2img имеет смысл несколько отшлифовать изображение уже через img2img inpaint. Главное не забудьте подключить 2 ControlNet'a для переноса стиля. Помните да, reference и T2IA.
Некоторые пункты в виде итога:
Ключ ко всему - это ControlNet (inpaint_only+lama) и ControlNet (reference_only, T2IA)Генерацию лучше проводить поэтапно, чтобы было на что опереться в последующие шаги
Также имеет смысл разделять генерацию объектов нужной формы и затем покраску их в нужные цвета.
Подбирайте подходящие под задачу модели и/или лоры.
Не забудьте про параметры Control Weight, Starting Control Step, Ending Control Step. И про Control Mode в самом низу!
P.S. Хотел бы я чтобы кто-то обстоятельно протестировал этот метод и поделился бы потом результатами. Мне кажется, как-то можно добиться ещё большей близости к стилю оригинала, ведь задача состояла именно в этом.
Туториал закончен, теперь впечатления. Это охиренно мощная штука! Можно как угодно дорисовать любую картину, стиль вообще не важен, тем более что сейчас уже натренированы сотни моделей на все случаи жизни. Хоть скриншоты из мультфильмов/аниме, хоть картины маслом. Фильмы и фотографии вообще пройденный этап. Можно даже без использования inpaint'a просто сгенерировать сколько хочешь изображений с нуля, просто опираясь на единственный рисунок. А ведь ControlNet появился лишь в начале этого года. Короче, уже почти год прошёл, а всё это до сих пор кажется каким-то колдунством. Что грядущий день готовит...
Снежная королева (мультфильм) 1957 мультфильм Союзмультфильм апскейл Metracryg_upscale продолжение в комментариях видео
"Снежная Королева" (1957) в 4К
Это 200-е видео на моем канале, так что я постарался выбрать достойное произведение.
Обработка целого часа видео заняла немало времени, но я доволен. Удалось очень хорошо увеличить картинку, убрать мусор и зерно, мерцание... почти идеально :)
Я даже сделал дополнительную версию. Удалось добиться повышения четкости изображения после апскейла, но визуальный ряд немного поменялся. Лично мне нравится эта версия.
Часовые видео до 4К будут ютубироваться долго, да и все равно что-то потеряется при перекодировании, но подписчики тега наверняка помнят про папку с моими релизами на гугл-диске - там все в лучшем виде:
https://drive.google.com/drive/folders/15Qk1xODUGfBMGQbVWaTji7GEUupfTFMd?usp=sharing
Если вам понравилось на ютубе, и собираетесь показать детям, то скачивайте из папки в наилучшем качестве. Все лучшее - детям :)
Теперь сравнения (открывайте в полном размере, дабы узреть).
Оригинал vs апскейл (с четкостью):
Апскейл vs апскейл с четкостью:Ну, и сами видео :)Апскейл:
Четкий апскейл (ваще чоткий):
А еще Великолепный Гоша (все 10 серий) давно ждет, когда его заплюсуют на главную (мои предыдущие два поста).
нейросеть песочница апскейл инструкция
Как апскелить у себя дома
Краткая предыстория: решил посмотреть первый сезон покемонов, но захотелось, чтоб прям всё красивишно в 4к, потому начал искать варианты.
Машина 1: Стационарный ПК, MX Linux, R7 7700X, RX 7900XTX, 32 ГБ ОЗУ
Машина 2: Ноутбук Win10, R7 5800H, RTX 3060 Laptop, 16 ГБ
-----
Первым делом попробовал dandere2x (https://github.com/akai-katto/dandere2x), он основан на waifu2x. Итог: тестовый отрывок (20 секунд) обработан на машине 1 за ~5 минут, покадровое сравнение выгоды относительно просмотра видео без апскейла не выявило. Инструкции по установке, которыми я пользовался, если кому интересно:
-----
После этого я обнаружил Anime4K (https://github.com/bloc97/Anime4K), апскейлер в реальном времени, основной минус - работа с ограниченным кол-вом проигрывателей (1-3 в зависимости от ОС). Инструкции по установке и применению находятся по ссылке выше в зависимости от проигрывателя. Но я пользуюсь SMPlayer, так что вот инструкция:
1) Следуем инструкции mpv
2) Открываем файл input.conf, открываем настройки SMPlayer (ПКМ - сервис - настройки - дополнительно - MPlaeyr/mpv) и вставляем необходимый нам профиль в поле "параметры"
Например: вы хотите профиль "A", в input.conf вы видете строку:CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A (HQ)"
В параметры вы копируете только то, что находится в кавычках (вместе с кавычками) после слова set и до слова show-text, то есть:
"~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"
И добавляете перед этим: --glsl-shaders=, получая что-то вроде этого:
--glsl-shaders="~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"
3) Profit
Естесственно комбинации клавиш для переключения профилей в таком случае не будет.
Стоит упомянуть, что Anime4K не сохраняет апскельнутую версию, так что каждый раз будет апскелить как в первый.
-----
Там же на сайте Anime4K было сравнение разных алгоритмов:
Очевидно, что после такого я захотел установить real-ESRGAN, потому что я хотел бы как раз сохранить себе апскельнутую версию, плюс он всё таки визуально получше.В результате визуально качество Anime4K (я использовал пресет для higher-end gpu) и Real-ESRGAN довольно близко, но некоторую разницу при сравнении заметить можно.
Обработка тестового отрезка (20 секунд) на машине 1 заняла ~56.5 минут (заработала только на CPU), на машине 2 - ~2 минуты. Были мысли перед постом проверить работу через ZLUDA (https://github.com/vosen/ZLUDA) недавно вышедшую прослойку между CUDA и видеокартами AMD, но на Debian пока нет ROCm, так что когда-нибудь...
Дальше инструкция по установке Real-ESRGAN на Win10 и Linux и бонусные батники для винды для удобства.
Собственно инструкция:
1) Установка ffmpeg на Win10 (на linux по идее предустановлено)
1а) Открыть powershell (под администратором)
1б) Установить chocolatey (https://chocolatey.org/install#individual)
- Ввести команду:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
- Проверить, что всё установилось:
1в) Установить ffmpeg
- Ввести команду:
choco install ffmpeg -y
1д) Закрыть powershell
2) Создание python3 virtual environment (venv) (необходим установленный python3)
Windows:
- Открыть командную строку (cmd) (под администратором)
- Ввести команду, чтобы установить virtualenv:
pip install virtualenv
- Перейти в директорию, где хотите создать venv
cd /d "G:/AI"
# /d указывает на то, что директория будет на другом диске (G)
- Создать venv
virtualenv anyname-venv
# Вместо anyname-venv можно указать любое допустимое в win10 имя
Linux:
- Открыть терминал
- Перейти в директорию, где хотите создать venv
cd ~/AI
# ~ означает домашнюю директорию пользователя
- Создать venv
python3 -m venv ./.anyname-venv
# Первая точка означает текущую директорию
# Вторая точка - часть названия, просто файлы и папки, начинающиеся с точки считаются скрытыми
# Вместо .anyname-venv можно указать любое допустимое в linux имя
3) Активация venv (Нужно будет делать каждый раз, когда захотите запустить Real-ESRGAN) (делается из директории в которой мы вводили предыдущую команду)
Windows:
- Заходим внутрь
cd anyname-venv
cd Scripts
- Активируем
activate
Linux:
source ./.anyname-venv/bin/activate
4а) Переходим в папку куда мы скачали и разархивировали Real-ESRGAN
Windows:
cd G:\AI\Real-ESRGAN-masterLinux:
cd ~/AI/Real-ESRGAN-master
4б) Устанавливаем необходимые библиотеки
pip install basicsr facexlib gfpgan ffmpeg ffmpeg-python
Windows:
pip install -r G:\AI\Real-ESRGAN-master\requirements.txt
Linux:
pip install -r ~/AI/Real-ESRGAN-master/requirements.txt
# -r указывает, что мы передадим файл со списком библиотек
# файл находится в скачанной директории
python setup.py develop
4в) Для владельцев ВК Nvidia отдельно устанавливаем pytorch с поддержкой CUDA
- Переходим на сайт https://pytorch.org/get-started/locally/
- Выбираем ОС, версию Cuda и установщик (pip)
- Копируем и выполняем выданную команду4г) Правим код библиотек, чтобы он заработал
- Открываем файл ...\anyname-venv\Lib\site-packages\basicsr\data\degradations.py любым текстовым редактором (блокнот подходит)
Правим 8-ую строчку, из
from torchvision.transforms.functional_tensor import rgb_to_grayscale
Делаем
from torchvision.transforms.functional import rgb_to_grayscale
- Открываем файл ...\anyname-venv\Lib\site-packages\ffmpeg\_probe.py (Необязательно. Обязательно для обработки .mkv)
Правим 16-ую строчку, из
from torchvision.transforms.functional_tensor import rgb_to_grayscale
Делаем
args = [cmd, '-show_format', '-show_streams', '-of', 'json', '-count_frames']
# Чтобы для каждого видеофайла "вручную" считалось кол-во кадров, потому что, например, в .mkv нет данных о кол-ве кадров
4д) Правим код Real-ESRGAN, чтобы он заработал (или берём готовые файлы из гугл диска)
Если добавляли ручной подсчёт кол-ва кадров:
- Открываем файл ...\Real-ESRGAN-master\inference_realesrgan_video.py
Правим 35-ую строчку, из
ret['nb_frames'] = int(video_streams[0]['nb_frames'])
Делаем
try:
ret['nb_frames'] = int(video_streams[0]['nb_frames'])
except(KeyError):
ret['nb_frames'] = int(video_streams[0]['nb_read_frames'])
# Обращаем внимание на отступы (их можно сделать нажатием кнопки Tab)
Если запускаем на процессоре:
- Открываем файл ...\Real-ESRGAN-master\inference_realesrgan_video.py
Правим 272-ую (275-ую, если делали предыдущую правку) строчку, из
torch.cuda.synchronize(device)
Делаем
#torch.cuda.synchronize(device)
Правим 291-ую (294-ую) строчку, из
if num_process == 1:
Делаем
if num_process <= 1:
5) Запускаем обработку видео (желательно из папки Real-ESRGAN)
python inference_realesrgan_video.py --fp32 --suffix esrgan -i G:\AI\Real-ESRGAN-master\inputs\[Timber_Maniacs]_Pokemon_043_(041)_[Rus-Eng]_[XviD]_[219F48A8].mkv
# параметр --fp32 нужен, чтобы не было ошибки
# параметр --suffix указывает какой суффикс будет у выходного файла, по умолчанию: out. Например: исходный файл: "name.mp4", файл на выходе: "name_out.mp4" или "name_esrgan.mp4" в случае этой команды.
# параметр -i говорит какой файл обрабатывать (по идее можжно обрабатывать несколько файлов и всё такое, но оно как-то криво работает, так что только так)
# итоговые файлы будут сохраняться в папке .../Real-ESRGAN/results
6) Для WIn10 из гугл диска можно взять один из файлов с расширением .bat, чтобы облегчить себе запуск нескольких видео сразу
7) Profit
-----
Гугл диск: https://drive.google.com/drive/folders/1kxS7yC750WqSBmvGQyFVrEMTCFP9S96w?usp=sharing
inference_realesrgan_video-CPU.py и inference_realesrgan_video-CUDA.py переименовать в inference_realesrgan_video.py и заменить оригинал.
Real-ESRGAN-autostart(video).bat запускает в обработку все файлы, которые находятся в папке "G:/AI/Real-ESRGAN-master/inputs/". Его надо открыть в том же блокноте и отредактировать пути на соответствующие вашим.
Спасибо за внимание!
видео нейросети 4K апскейл кинохроники 19 век раскрашено
Блогер сделал апскейл до 4k 60fps и раскарасил известные кадры, снятые братьями Люмьер 128 лет назад
CCCP пепси старое фото фото нейросети апскейл
Я тогда тебе открою огромную тайну - в Москве тоже она часто встречалась.
Этими двумя городами и заканчивался ареал обитания пепси в совке.
А вот в других городах ничего подобного не было, нам отец в середине 80-х привозил пепси из Москвы, например. А я жил в городе-миллионнике.
пидоры помогите upscale нейросеть изображение
Улучшение качества изображения
Доброго дня, почаны.Итак дано изображение низкого качества, 80x80.
Необходимо получить изображение уже 250х250.
Большинство бесплатных сервисов не имеет регулировку апскейла и либо с первого раза получается недолет(200) или перелет(300). В первом случае при повторении перелет и смотри в2. Во втором случае приходится сжимать и вылезают шакалы.
Поэтому вопрос - мб кто знает бесплатный сервис или как у себя на компе организовать что-то подобное, те с выбором кратности.
Премного благодарен.
Отличный комментарий!