Найти в Дзене
КиберMamedov 💻🔥

Нейросеть оживляет вашу картинку через Python

Доставайте старые мемы настало их время. Прочитав эту статью вы научитесь оживлять любые изображения используя Python. Для начала нам необходимо установить библиотеку replicate, которая позволит нам работать с одноименной нейросетью. Для этого в командной строке выполните команду: pip install replicate Отлично! Первый шаг сделан, теперь необходимо установить значение для переменной среды REPLICATE_API_TOKEN, присваивая ей значение вашего токена API для библиотеки replicate. Это позволяет вашему приложению использовать этот токен для аутентификации и доступа к функциям, предоставляемым библиотекой replicate. Это делается выполнением вот такой команды в командной строке: export REPLICATE_API_TOKEN=<paste-your-token-here> Только не торопись выполнять. Видишь вот эту часть выражения? <paste-your-token-here> Здесь предполагается вставка твоего токена, а у тебя пока его нет. Чтобы его получить тебе необходимо авторизоваться на сервисе replicate через учетную запись github. Нажимаем на кнопку

Доставайте старые мемы настало их время. Прочитав эту статью вы научитесь оживлять любые изображения используя Python.

Оживим любую картинку
Оживим любую картинку

Для начала нам необходимо установить библиотеку replicate, которая позволит нам работать с одноименной нейросетью. Для этого в командной строке выполните команду:

pip install replicate

Успешная установка библиотеки replicate
Успешная установка библиотеки replicate

Отлично! Первый шаг сделан, теперь необходимо установить значение для переменной среды REPLICATE_API_TOKEN, присваивая ей значение вашего токена API для библиотеки replicate. Это позволяет вашему приложению использовать этот токен для аутентификации и доступа к функциям, предоставляемым библиотекой replicate.

Это делается выполнением вот такой команды в командной строке:

export REPLICATE_API_TOKEN=<paste-your-token-here>

Только не торопись выполнять. Видишь вот эту часть выражения? <paste-your-token-here> Здесь предполагается вставка твоего токена, а у тебя пока его нет. Чтобы его получить тебе необходимо авторизоваться на сервисе replicate через учетную запись github.

Страница авторизации на сервисе replicate
Страница авторизации на сервисе replicate

Нажимаем на кнопку, проходим авторизацию через свою учетную запись на github. Если учетной записи нет, то вначале там регистрируемся, а затем возвращаемся и проходим авторизацию.

После авторизации перед вами открывается вот такая страница.

Страница с токеном
Страница с токеном

Чтобы скопировать токен необходимо подвести к нему мышку, после чего появятся кнопки управления токеном. Нас интересует первая кнопка копирования, на скрине она серым цветом.

Копируем токен
Копируем токен

Теперь возвращаемся в командную строку, вставляем свой токен и нажимаем Enter.

export REPLICATE_API_TOKEN=r8_EvU*********************

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

Теперь открываем ваш текстовый редактор и создаем файл magic.py. Затем подключаем библиотеку.

Подключение библиотеки
Подключение библиотеки

Теперь напишем весь код целиком.

Полный код для оживления изображения
Полный код для оживления изображения

Выложу константу версии генератора видео текстом, т.к. она слишком длинная.

VERSION = "stability-ai/stable-video-diffusion:3f0457e4619daac51203dedb472816fd4af51f3149fa7a9e0b5ffcf1b8172438"

Данная константа определяет какую модель необходимо запускать нейронной сети. Следующая строка PATH_TO_IMAGE указывает путь к изображению, которое необходимо оживлять. В моем случае это:

Пушкин играет на гитаре
Пушкин играет на гитаре

Переходим в аргументу функции run. Первый аргумент - это версия модели, мы уже обсудили. Второй аргумент входные значения, которые мы передаем в нейросеть:

cond_aug - количество шума для добавления во входное изображение. Чем меньше, тем больше детализации у изображения в действии;

decoding_t - количество кадров для декодирования за раз. У нас не так много кадров, поэтому лучше ставить минимальное значение, которое равно 7;

input_image - изображение, которое необходимо оживить;

video_length - длина видео. На выбор есть два варианта 14 и 25 кадров. Конечно же лучше ставить 25 кадров, так видео будет чуточку длиннее;

frames_per_second - этот параметр указывает сколько кадров в секунду показывать. Если у нас всего 25 и поставить здесь значение 25, то видео будет длиться 1 секунду. Минимальное значение 6;

sizing_strategy - это соотношение сторон. Поддерживать соотношение сторон “maintain_aspect_ratio” самый удачный вариант;

motion_bucket_id - насколько увеличивать общее движение в сгенерированном видео. Я путем эксперимента подобрал для себя самое оптимальное значение 33.

Теперь запускаем и ждем.

Ссылка в командной строке на сгенерированное видео
Ссылка в командной строке на сгенерированное видео

Посмотрим на полученный результат:

Результат видео
Результат видео

Александр Сергеевич был сгенерирован одной нейросетью гитарой в руке, а другой неросетью был обучен на ней играть. В интересное время живем. 🙂

Подписывайся, чтобы получать всегда актуальную информацию и быть все время в потоке актуальных инструментов.