Привет всем увлеченным генеративными нейронными сетями, генерацией изображений и видео из 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 Эти ограничения важно учитывать при работе с видео на вашем устройстве.  В обновлении 1.6.1, я планирую еще больше улучшить результаты, предоставив возможность отправлять промежуточные кадры в пачки по 50 кадров с уже обработанными кадрами, что сделает переходы более плавными и незаметными. В чем суть? Идея заключается в использовании предыдущего подхода к сегментации объектов для автоматического создания масок и последующей передаче каждого объекта в Stable Diffusion с соответствующими текстовыми подсказками. В этом процессе объекты или даже весь фон могут быть полностью перерисованы на основе текстовых указаний.  Давайте рассмотрим это на конкретном примере: предположим, у нас есть два объекта, двигающихся в одно и то же время, и мы хотим применить к ним текстовые подсказки «Блондин» и «Коричневый пиджак» соответственно. В данном примере используется модель по умолчанию, но вы можете легко заменить ее на свою собственную. Кроме того, доступны два разных предобработчика, один из которых более сглаживает различия изображений, а другой делает их ярче. Вы также можете настроить количество кадров между генерациями и опции для объединения масок, аналогично ретушированию и удалению объектов.  Также есть опция ControlNet. Это важно, потому что изменение объектов не означает, что они будут соответствовать окружающему контексту. Например, при генерации человека мы хотим, чтобы его голова не поворачивалась в разные стороны, а была фиксирована как в оригинальных кадрах. Для достижения этой цели используется ControlNet с одним из двух анататоров: Canny и Hed. Перерисовка каждого кадра занимает много времени, и между кадрами может наблюдаться разница, как, например, если вы генерируете видео в Deforum. Поэтому генерируются кадры с определенным интервалом, а затем они налагаются на основное видео при помощи стилизации (style transfer) с использованием Ebsynth. Это позволяет сделать изменения более плавными и незаметными. Посмотрим на процесс генерации: Важно отметить, что этот процесс требователен к ресурсам, работает только на 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, например: Давайте попробуем эту модель в действии. Предположим, что вы хотите изменить весь кадр, кроме одного объекта. В этом случае вы можете выбрать соответствующую модель, установить маску и включить опцию «pass» в поле prompt, чтобы исключить объект из генерации. Затем выберите опцию «Изменить фон» и введите новый текстовый запрос и отрицательный запрос. Учтите, что параметр «seed» позволяет повторить результаты, если вам нужно внести коррективы только в часть изображения, используя один и тот же seed вы сможете получить один и тот же результат для компонентов видео, генерация которых вас устраивает, а изменять только, то что вам кажется не достаточно хорошим. Важно отметить, что файлы для генерации видео могут быть довольно большими, и при проблемах с интернет-соединением загрузка моделей из Hugging Face может быть нестабильной. Например, у меня наблюдаются проблемы скачивания с Hugging Face больших моделей без использования VPN. Чтобы избежать этого, вы можете загрузить модели вручную. Таблица с моделями также предоставлена в тексте. После скачивания, модели необходимо положить .wunjo/deepfake/diffusion, либо модели скачаются автоматически, при первом запуске. ControlNet Canny GMFlow Hed Annotator ControlNet Hed VAE Stable Diffusion Model Изначально приложение распространяется для Windows версии для CPU по нескольким причинам. Одной из них было отсутствие у автора доступа к Windows-платформе. Также стоит учитывать ограничения на размер создаваемого установочного файла в 2 Гб и другие технические ограничения. Однако в документации, предоставлены инструкции о том, как можно запустить приложение на Windows на графическим процессоре (GPU). Кроме того, для удобства пользователей предоставляется возможность создания портативной версии приложения с помощью briefcase build. Портативная версия уже содержит все необходимые библиотеки и интерпретатор Python, что позволяет пользователям делиться приложением без необходимости установки дополнительных компонентов. В этом обновлении также была улучшена оптимизация замены лица на видео по фотографии и удаления объектов с видео, что позволяет снизить требования к памяти и улучшить производительность. Это все нововведения в Wunjo AI, которыми я хотел поделиться с вами. Расскажите о вашем мнении нужно ли развивать генерацию видео в Wunjo AI, несмотря на требовательность к ресурсам, и хотел бы узнать, хотели бы вы видеть в приложении возможность генерации музыки и звуков по текстовым запросам. Оставьте свои комментарии!  И чуть не забыл, ссылка на открытый код проекта и сайт с которого можно скачать установщики, чтобы установить одним кликом и видео об этом. Если вы никогда раньше не слышали об этом проекте, видео про весь функционал Wunjo AI. Наслаждайтесь и до новых встреч!  Senior Software Developer