Привет всем увлеченным генеративными нейронными сетями, генерацией изображений и видео из prompt! В этой статье я хочу поделиться новостями о последнем обновлении моего проекта с открытым исходным кодом, Wunjo AI, в котором я переосмысляю возможности создания дипфейков с использованием Stable Diffusion. Давайте рассмотрим, какие изменения вносит версия 1.6 и как теперь Wunjo AI позволяет вам легко изменять видео с помощью текстовых запросов и создавать маски для движущихся объектов одним кликом. Помимо этого, я также представлю новый инструмент, который позволяет извлекать объекты из видео с прозрачным фоном, что делает их более универсальными для дальнейшего использования, например в дизайне.
Получение масок объектов одним кликом
Давайте начнем с небольших нововведений к новым инструментам. В версии 1.6 появилась возможность извлекать объекты из видео в разных моментах времени с прозрачным фоном. Вот как это делается:
Откройте панель удаления объектов и ретуши и загрузите свой медиа-контент.
Нажмите на объект, который вы хотите извлечь. После того как вы получите объект, если он соответствует вашим ожиданиям, добавьте его для дальнейшей обработки.
Используйте правый клик мыши, чтобы включить область, и левый клик, чтобы исключить. Например, вы можете попробовать получить две разные маски для двух маленьких быстро движущихся объектов с разными временными характеристиками. Вы можете выбрать кадр заранее или указать нужное время начала и окончания для извлечения объекта.
Панель удаления объектов и ретуши В параметрах можно выбрать, сохранить ли маску, задать цвет или сделать ее прозрачной. Также есть опция для настройки схожести масок, так как движущиеся объекты могут немного отличаться в разных кадрах. Стоит также отметить, что при первом клике на объект, если вы не загрузили модель для сегментации заранее, она будет автоматически загружена. Модель имеет размер от 1 Гб до 2 Гб в зависимости от вашего выбора CPU или GPU. Это важно учитывать при планировании использования ресурсов.
Панель параметров для получения маски Обратите внимание, что на сложных объектах в некоторых кадрах могут возникать артефакты, но вы можете исправить их на следующей итерации обработки, так как процесс извлечения масок также работает на отдельных изображениях. И вот наш результат:
Получаем результат
Улучшенная ретушь объектов
В версии 1.6 был добавлен новый способ удаления объектов из видео, который функционирует только на GPU. Ранее, нейронная сеть удаляла объекты из каждого кадра, основываясь только на своих весах и представлении о том, что должно быть на месте удаленного объекта. Это часто приводило к неестественным результатам из-за шума. Новый метод улучшенного удаления объектов вводит новую концепцию, основанную на анализе пачки из 50 кадров. Нейронная сеть анализирует эту группу кадров и на основе этой информации старается заполнить область, включая представление о том, что должно быть на месте удаленного объекта. Этот новый метод доступен в панели удаления объектов и ретуши под названием «Улучшенное удаление объектов».
Параметры:
Толщина маски: Этот параметр добавляет контур маски, что полезно, если сегментация не выделила контур объекта, но он все равно должен быть включен в маску для удаления.
Восстановление размера: Поскольку этот метод требователен к ресурсам, некоторые кадры могут потреблять много ресурсов, и их размер приходится уменьшать. Опция «Восстановить размер» позволяет объединить оригинальное видео и увеличенную область после удаления объектов. Делается это масштабированием, и такой способ будет заметнее, при большой разнице размеров оригинального видео, и полученного.
Параметры
Ресурсы VRAM и лимиты на разрешение видео:
19 GB VRAM: 1280x1280
7 GB VRAM: 720x720
6 GB VRAM: 640x640
2 GB VRAM: 320x320
![Удаление объектов Удаление объектов](https://habrastorage.org/getpro/habr/upload_files/20c/aab/f8e/20caabf8e3009439413c6eae1c9bf3ba.gif)
Эти ограничения важно учитывать при работе с видео на вашем устройстве.
В обновлении 1.6.1, я планирую еще больше улучшить результаты, предоставив возможность отправлять промежуточные кадры в пачки по 50 кадров с уже обработанными кадрами, что сделает переходы более плавными и незаметными.
Преобразование дипфейка по текстовым подсказкам
В чем суть? Идея заключается в использовании предыдущего подхода к сегментации объектов для автоматического создания масок и последующей передаче каждого объекта в Stable Diffusion с соответствующими текстовыми подсказками. В этом процессе объекты или даже весь фон могут быть полностью перерисованы на основе текстовых указаний.
![Панель преобразования видео текстовым запросом Панель преобразования видео текстовым запросом](https://habrastorage.org/getpro/habr/upload_files/18e/7ba/fff/18e7bafffe1b46f6b37a263b4aaa9cd3.png)
Давайте рассмотрим это на конкретном примере: предположим, у нас есть два объекта, двигающихся в одно и то же время, и мы хотим применить к ним текстовые подсказки «Блондин» и «Коричневый пиджак» соответственно. В данном примере используется модель по умолчанию, но вы можете легко заменить ее на свою собственную. Кроме того, доступны два разных предобработчика, один из которых более сглаживает различия изображений, а другой делает их ярче. Вы также можете настроить количество кадров между генерациями и опции для объединения масок, аналогично ретушированию и удалению объектов.
![Параметры Параметры](https://habrastorage.org/getpro/habr/upload_files/56b/352/bea/56b352beab305d9daaf14d4c91c213b7.png)
Также есть опция ControlNet. Это важно, потому что изменение объектов не означает, что они будут соответствовать окружающему контексту. Например, при генерации человека мы хотим, чтобы его голова не поворачивалась в разные стороны, а была фиксирована как в оригинальных кадрах. Для достижения этой цели используется ControlNet с одним из двух анататоров: Canny и Hed.
Перерисовка каждого кадра занимает много времени, и между кадрами может наблюдаться разница, как, например, если вы генерируете видео в Deforum. Поэтому генерируются кадры с определенным интервалом, а затем они налагаются на основное видео при помощи стилизации (style transfer) с использованием Ebsynth. Это позволяет сделать изменения более плавными и незаметными. Посмотрим на процесс генерации:
![Первым шагом получаются маски для каждого объекта Первым шагом получаются маски для каждого объекта](https://habrastorage.org/getpro/habr/upload_files/e0f/719/a91/e0f719a91ae0974123bc6036bd7e1b07.png)
![Вторым шагом работает генерация изображений с интервалом и ControlNet Вторым шагом работает генерация изображений с интервалом и ControlNet](https://habrastorage.org/getpro/habr/upload_files/58b/9b3/c35/58b9b3c35545ac027a94d88c45226381.png)
![Конечный результат в разрешение 512х512 Конечный результат в разрешение 512х512](https://habrastorage.org/getpro/habr/upload_files/0bc/cf6/8d2/0bccf68d266f8a22d8a38e55f98ccaaa.gif)
Важно отметить, что этот процесс требователен к ресурсам, работает только на GPU и потребляет много VRAM. Максимальное разрешение зависит от доступной VRAM на вашем устройстве, и ограничивается следующим образом:
Ресурсы VRAM и лимиты на разрешение видео:
24 GB VRAM: 1280x1280
18 GB VRAM: 1024x1024
14 GB VRAM: 768x768
10 GB VRAM: 640x640
8 GB VRAM: 576x576
7 GB VRAM: 512x512
Если вы использовали Stable Diffusion вы заметили, что качество картинки зависит не только от модели, но и от размера генерируемого изображения. Например у меня всего 8 GB VRAM на домашней машине, и генерируемое мною видео не может быть в размерах больше чем 512х512 (соотношение сторон может быть любое) - это накладывает свой отпечаток на качество результата.
Вы можете интегрировать модели Stable Diffusion из Hugging Face или CivitAI, добавив их в вашу среду Wunjo AI. Это позволяет более гибко настраивать процесс генерации.
Для того, чтобы модель добавить в приложение, вам нужно положить вашу модель в директорию.wunjo/deepfake/diffusion
, открыть .wunjo/deepfake/custom_diffusion.json
и добавить название вашей модели, и так как вы хотите, чтобы она отображалась в Wunjo AI, например:
{
"revAnimated_v11.safetensors": "revAnimated_v11.safetensors"
}
Давайте попробуем эту модель в действии. Предположим, что вы хотите изменить весь кадр, кроме одного объекта. В этом случае вы можете выбрать соответствующую модель, установить маску и включить опцию «pass» в поле prompt, чтобы исключить объект из генерации. Затем выберите опцию «Изменить фон» и введите новый текстовый запрос и отрицательный запрос. Учтите, что параметр «seed» позволяет повторить результаты, если вам нужно внести коррективы только в часть изображения, используя один и тот же seed вы сможете получить один и тот же результат для компонентов видео, генерация которых вас устраивает, а изменять только, то что вам кажется не достаточно хорошим.
![Панель преобразования видео текстовыми запросами Панель преобразования видео текстовыми запросами](https://habrastorage.org/getpro/habr/upload_files/37a/242/2fa/37a2422fabc389d27245607292d374e4.png)
![Применение своей модели Stable Diffusion Применение своей модели Stable Diffusion](https://habrastorage.org/getpro/habr/upload_files/599/c60/073/599c60073b53d44f9f7013e5fc1724b3.gif)
Важно отметить, что файлы для генерации видео могут быть довольно большими, и при проблемах с интернет-соединением загрузка моделей из Hugging Face может быть нестабильной. Например, у меня наблюдаются проблемы скачивания с Hugging Face больших моделей без использования VPN. Чтобы избежать этого, вы можете загрузить модели вручную. Таблица с моделями также предоставлена в тексте. После скачивания, модели необходимо положить .wunjo/deepfake/diffusion
, либо модели скачаются автоматически, при первом запуске.
Изначально приложение распространяется для Windows версии для CPU по нескольким причинам. Одной из них было отсутствие у автора доступа к Windows-платформе. Также стоит учитывать ограничения на размер создаваемого установочного файла в 2 Гб и другие технические ограничения. Однако в документации, предоставлены инструкции о том, как можно запустить приложение на Windows на графическим процессоре (GPU).
Кроме того, для удобства пользователей предоставляется возможность создания портативной версии приложения с помощью briefcase build
. Портативная версия уже содержит все необходимые библиотеки и интерпретатор Python, что позволяет пользователям делиться приложением без необходимости установки дополнительных компонентов.
В этом обновлении также была улучшена оптимизация замены лица на видео по фотографии и удаления объектов с видео, что позволяет снизить требования к памяти и улучшить производительность.
Это все нововведения в Wunjo AI, которыми я хотел поделиться с вами. Расскажите о вашем мнении нужно ли развивать генерацию видео в Wunjo AI, несмотря на требовательность к ресурсам, и хотел бы узнать, хотели бы вы видеть в приложении возможность генерации музыки и звуков по текстовым запросам. Оставьте свои комментарии!
И чуть не забыл, ссылка на открытый код проекта и сайт с которого можно скачать установщики, чтобы установить одним кликом и видео об этом.
Если вы никогда раньше не слышали об этом проекте, видео про весь функционал Wunjo AI.
Наслаждайтесь и до новых встреч!