Найти в Дзене
Жизнь в IT

Программа - нейросеть EbSynth, с помощью которой можно стилизовать, изменять изображения и видео.

Статья о программе EbSynth- это программе, созданной на основе нейросети. Данная программа позволяет изменять изображения, видео (как набор кадров), а точнее стилизовать их.
Оглавление

О чем эта статья

В этой статье я расскажу о программе EbSynth и приведу простой пример её использования. EbSynth - это программа, созданная на основе нейросети. Данная программа позволяет изменять изображения, а точнее стилизовать их.

Под стилизацией здесь понимается замена отдельных элементов изображения, цвета (была синяя рубашка на фото, стала красная) или стилизация изображения целиком.

С учетом того, что любое видео может быть разбито на кадры (картинки, изображения), а потом собрано из кадров - программа может изменять/стилизовать видео. Не на прямую, но всё же. О том как разбивать видео на кадры и собирать его из кадров я уже писал ранее.

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

Зачем это надо

Это творчество и искусство. EbSynth можно использовать по разному и для разных задач. Тут всё будет зависеть от пользователя, его навыков и его целей.

Принцип работы программы

У программы всего одно окно. Вот оно.

Основное окно программы.
Основное окно программы.

Основными полями тут являются:

  • Keyframes и Video
  • Stop << Keyframe >> Stop

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

Пусть у пользователя есть видео, которое он хочет изменить. Пользователь разбивает видео на кадры и копирует кадры в папку. Эту папку он указывает в программе, как Video. Логично? Вполне.

Далее пользователь изменяет отдельные кадры. Например открывает их в фотошопе, меняет цвет, что то дорисовывает, что то удаляет - вообщем простор для творчества и экспериментов. Эти кадры он копирует в другую папку, которую указывает в программе как Keyframes . Так называемые ключевые кадры.

После этого пользователь создает пустую папку, которую указывает в программе как Output. Там будет сохранен результат работы программы.

Итого у нас есть исходные кадры - папка Video, пара измененных кадров - папка Keyframes и папка где будет сохранен результат - Output.

Осталось совсем немного - указать программе на основе какого кадра из папки Keyframes следует изменять кадры в папке Video. Проще говоря - смотри на картинку в папке Keyframes и "как то так" изменяй картинку в папке Video. За это отвечают поля Stop << Keyframe >> Stop.

То есть, Начальный кадр в папке Video << Ключевой кадр в папке Keyframes >> Конечный кадр в папке Video.

Например 1<< 1>>10. И далее 1<< 14>>20 и т.д.

Пример кадров и кейфреймов.
Пример кадров и кейфреймов.

Таким образом, мы как бы говорим программе - кадры (картинки) с 1 по 10 в папке Video изменяй смотря на кадр 1 в папке Keyframe. А кадры с 11 по 20 изменяй смотря на кадр 14 в папке Keyframe.

Сколько нужно таких последовательностей, сколько ключевых кадров - зависит от видео. Дело в том, что на кадрах с 1 по 10 может быть, например, синяя рубашка. Мы изменим первый кадр в фотошопе и сделаем рубашку красной. Сохраним результат в папке Keyframe как кадр 1. И укажем это программе.

Программа, наблюдая на кадрах Video синюю рубашку и видя в папке Keyframe кадр с красной, начнет заменять синий цвет на красный. Стилизация в действии! Мы получим в папке Output 10 кадров с красной рубашкой.

Но вот если на кадре 11, рубашка исчезнет - например человек в этой рубашке ушел из кадра, а появились брюки, то программа не поймет что нужно делать и результат будет непредсказуемый. Поэтому как только произошли серьезные изменения - новый объект, сильное изменение позиции объекта (человек в рубашке ушел очень далеко), изменение форму объекта (человек снял и начал гладить рубашку) - нужно изменять этот кадр. Собственно по этому они и называются ключевые.

Пример

Вырежем 5 секунд из мультфильма Мистер Бин. Давайте изменим форму рестлера с красной на синюю.

Разобьем видео на кадры.

Кадры с 1 по 65 нам не интересны. Тут нет рестлера. Ничего менять не нужно.

-4

На кадре 66 (Video\000066.png) появляется рестлер. Вот он то нам и нужен.

-5

Изменим кадр, отредактируем в фотошопе. И сохраним это изображение в папку Keyframes (Keyframes\000066.png). Теперь у нас есть один ключевой кадр.

-6

Смотрим кадры далее. На кадре 90 он начинает падение. То есть происходит какое то значительное изменение положения объекта.

-7

На кадре 103 он уже лежит. Ещё одно изменение.

-8

На кадре 126 он тоже будет лежать, не буду сюда его вставлять.

Загрузим всё в программу. И укажем следующие настройки.

-9

Я указал одну последовательность. То есть говорю программе - начинай изменения с 66 кадра, ориентируйся на ключевой кадр 66 и остановись на 126 кадре.

Да, я видел, что рестлер изменяет положение, падает. Но всё же, я надеюсь что нейросеть поймет это движение. Я не хочу много работать и изменять ещё пару кадров (а иногда это нужно). Посмотрим, что из этого выйдет.

Итак, в папке Output я получил следующие кадры. Кадр 67 - нейросеть поняла что нужно делать и раскрасила форму в синий цвет. И это не удивительно - отличий от кадра 66 почти нет.

-10

Далее, до 78 кадра всё в порядке. И вот кадр 78.

-11

Посмотрите на ботинок справа. Он темно красный. А должен быть синий. Дело в том, что рестлер быстро передвинул ногу - изменил позицию и нейросеть не смогла отследить, связать это изменение с ключевым кадром.

Кадр 79. Ботинок снова синий. Нейросеть смогла понять что ботинок должен быть синий.

-12

Кадр 98. нейросеть понимает, что нужно делать, хотя объект изменил положение и даже форму.

-13

Кадр 126. Форма синяя, ботинок красный.

-14

Интересный результат. То есть, мы решили задачу на 90%. Изменив всего один кадр, мы изменили 126! Но есть нюансы - ботинок.

Нейросеть то меняет его цвет, то нет. А вот цвет формы всегда синий, хотя рестлер летит на пол, изменяя и позицию и форму. Скажу прямо - с чем это связано сложно понять, нейросеть так обучена. Но как я и сказал - важна форма и позиция объекта. Возможно, размер, положение, цвет сыграл роль - хотя и тут тоже всё индивидуально.

Решается эта проблема - добавлением нового ключевого кадра. То есть нужно просто изменить кадр 78, раскрасив ботинок в синий цвет. И далее наблюдать, где нейросеть снова ошибется. Можно и изменить другие настройки (Weight, Mapping..), описание функций которых выходит за рамки данной статьи.

Да, исправлять ошибки нейросети не очень приятно. Но EbSynth пока в альфа версии и я считаю что это достойный результат. В этой статье я показал базовый и простой пример использования EbSynth. Нейросеть очень интересная и спектр её применения достаточно велик от простого изменения видео, до анимации старинных картин.

Пример

Программа EbSynth

-15