Привет всем увлеченным генеративными нейронными сетями, генерацией изображений и видео из prompt! В этой статье я хочу поделиться новостями о последнем обновлении моего проекта с открытым исходным кодом, Wunjo AI, в котором я переосмысляю возможности создания дипфейков с использованием Stable Diffusion. Давайте рассмотрим, какие изменения вносит версия 1.6 и как теперь Wunjo AI позволяет вам легко изменять видео с помощью текстовых запросов и создавать маски для движущихся объектов одним кликом. Помимо этого, я также представлю новый инструмент, который позволяет извлекать объекты из видео с прозрачным фоном, что делает их более универсальными для дальнейшего использования, например в дизайне.

Получение масок объектов одним кликом

Давайте начнем с небольших нововведений к новым инструментам. В версии 1.6 появилась возможность извлекать объекты из видео в разных моментах времени с прозрачным фоном. Вот как это делается:

  1. Откройте панель удаления объектов и ретуши и загрузите свой медиа-контент.

  2. Нажмите на объект, который вы хотите извлечь. После того как вы получите объект, если он соответствует вашим ожиданиям, добавьте его для дальнейшей обработки.

  3. Используйте правый клик мыши, чтобы включить область, и левый клик, чтобы исключить. Например, вы можете попробовать получить две разные маски для двух маленьких быстро движущихся объектов с разными временными характеристиками. Вы можете выбрать кадр заранее или указать нужное время начала и окончания для извлечения объекта.

    Панель удаления объектов и ретуши
    Панель удаления объектов и ретуши
  4. В параметрах можно выбрать, сохранить ли маску, задать цвет или сделать ее прозрачной. Также есть опция для настройки схожести масок, так как движущиеся объекты могут немного отличаться в разных кадрах. Стоит также отметить, что при первом клике на объект, если вы не загрузили модель для сегментации заранее, она будет автоматически загружена. Модель имеет размер от 1 Гб до 2 Гб в зависимости от вашего выбора CPU или GPU. Это важно учитывать при планировании использования ресурсов.

    Панель параметров для получения маски
    Панель параметров для получения маски
  5. Обратите внимание, что на сложных объектах в некоторых кадрах могут возникать артефакты, но вы можете исправить их на следующей итерации обработки, так как процесс извлечения масок также работает на отдельных изображениях. И вот наш результат:

    Получаем результат
    Получаем результат

Улучшенная ретушь объектов

В версии 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. Это позволяет сделать изменения более плавными и незаметными. Посмотрим на процесс генерации:

Первым шагом получаются маски для каждого объекта
Первым шагом получаются маски для каждого объекта
Вторым шагом работает генерация изображений с интервалом и ControlNet
Вторым шагом работает генерация изображений с интервалом и ControlNet
Конечный результат в разрешение 512х512
Конечный результат в разрешение 512х512

Важно отметить, что этот процесс требователен к ресурсам, работает только на 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 вы сможете получить один и тот же результат для компонентов видео, генерация которых вас устраивает, а изменять только, то что вам кажется не достаточно хорошим.

Панель преобразования видео текстовыми запросами
Панель преобразования видео текстовыми запросами
Применение своей модели Stable Diffusion
Применение своей модели Stable Diffusion

Важно отметить, что файлы для генерации видео могут быть довольно большими, и при проблемах с интернет-соединением загрузка моделей из Hugging Face может быть нестабильной. Например, у меня наблюдаются проблемы скачивания с Hugging Face больших моделей без использования VPN. Чтобы избежать этого, вы можете загрузить модели вручную. Таблица с моделями также предоставлена в тексте. После скачивания, модели необходимо положить .wunjo/deepfake/diffusion, либо модели скачаются автоматически, при первом запуске.

Изначально приложение распространяется для Windows версии для CPU по нескольким причинам. Одной из них было отсутствие у автора доступа к Windows-платформе. Также стоит учитывать ограничения на размер создаваемого установочного файла в 2 Гб и другие технические ограничения. Однако в документации, предоставлены инструкции о том, как можно запустить приложение на Windows на графическим процессоре (GPU).

Кроме того, для удобства пользователей предоставляется возможность создания портативной версии приложения с помощью briefcase build. Портативная версия уже содержит все необходимые библиотеки и интерпретатор Python, что позволяет пользователям делиться приложением без необходимости установки дополнительных компонентов.

В этом обновлении также была улучшена оптимизация замены лица на видео по фотографии и удаления объектов с видео, что позволяет снизить требования к памяти и улучшить производительность.

Это все нововведения в Wunjo AI, которыми я хотел поделиться с вами. Расскажите о вашем мнении нужно ли развивать генерацию видео в Wunjo AI, несмотря на требовательность к ресурсам, и хотел бы узнать, хотели бы вы видеть в приложении возможность генерации музыки и звуков по текстовым запросам. Оставьте свои комментарии!

И чуть не забыл, ссылка на открытый код проекта и сайт с которого можно скачать установщики, чтобы установить одним кликом и видео об этом.

Если вы никогда раньше не слышали об этом проекте, видео про весь функционал Wunjo AI.

Наслаждайтесь и до новых встреч!

Комментарии (7)


  1. Wladradchenko Автор
    19.10.2023 12:54

    Сделал портативную версию на GPU для Windows. Доступна на сайте. Сделана на Win10, отпишитесь как работает. Для ее работы потребуется CUDA 11.8. Проверить, что у вас включена правильная версия CUDA nvcc --version.

    Сделал tg канал, под все приложения, чтобы удобно было узнать об обновлениях, и получать фидбэк об возникающих ошибках в приложении, если не удобно открывать issue на GitHub.

    Спасибо за предоставленных доступ к Windows с GPU пользователю @Rahim-Akad


  1. axe_chita
    19.10.2023 12:54
    +1

    Очень интересно, ждем продолжения удивительных историй WunjoAI


    1. Wladradchenko Автор
      19.10.2023 12:54
      +1

      Спасибо. Как вы думаете, хотели бы вы видеть в следующем обновлении приложения генерацию музыки и звуков? Либо это излишний функционал, который сделает приложение перенасыщенным и вообще генерация звуков для контента не будет востребована?


      1. Jianke
        19.10.2023 12:54
        +2

        Да, было бы интересно получить музыку и звуки незащищённые копирайтом.


  1. Rahim-Akad
    19.10.2023 12:54

    Следовал инструкции на Вики проекта для windows, выбор гпу так и не появился. В питоне выдает ошибку о том что не видит модуль torch. Кто-нибудь скиньте инструкцию для хлебушка, если ставили на Винду и у вас заработало?


    1. Wladradchenko Автор
      19.10.2023 12:54

      Привет. Откройте issue на GitHub, попробуем решить вашу проблему и сделать инструкцию понятнее для других пользователей.


    1. Wladradchenko Автор
      19.10.2023 12:54
      +1

      Помощь в установке версии GPU. Как проверить, что установлено CUDA, как установить зависимости для GPU, какую версию Python необходимо использовать Issue 28.


  1. Wladradchenko Автор
    19.10.2023 12:54

    Сделал портативную версию на GPU для Windows. Доступна на сайте. Сделана на Win10, отпишитесь как работает. Для ее работы потребуется CUDA 11.8. Проверить, что у вас включена правильная версия CUDA nvcc --version.

    Сделал tg канал, под все приложения, чтобы удобно было узнать об обновлениях, и получать фидбэк об возникающих ошибках в приложении, если не удобно открывать issue на GitHub.

    Спасибо за предоставленных доступ к Windows с GPU пользователю @Rahim-Akad