Навигация по сайту

Система на основе ML-модели для автоматического монтажа видео


Боль потребителя

Нужно быстро и качественно нарезать видео в различных тематиках.


Цель

Создать скрипт умного монтажа видео на основе контекста видео и заданных со стороны пользователя настройками.


Задачи


Описание

Бизнес-проект приложения в формате стартапа.

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

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

Таким образом происходит автоматизированный монтаж, после которого пользователь на итоговое видео может наложить музыку или звук, и загрузить в формате, например, youtube shorts


Решение

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

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

Далее на основе датасета минимальных единиц монтажа можно обучить модели нарезки и подбора.
Таким образом получается, что для создания модели не требуется датасета "до", и необходим только датасет "после".

Такой датасет создавался на основе выборки уже обработанных видео. В них проводился посекундный анализ видеоряда, выявление палитры кадра, и поиск процента смены палитры между кадрами.
Если изменения были больше чем определенный процент, то этот момент видео помечался как смена сцены.
Далее по списку этих переходов создавался рустер сцен, в котором хранились данные о палитре сцены во время перехода. Так был найден уровень разницы в кадрах, то есть их разнообразие при монтаже

Также это позволило выяснить наиболее популярные в сфере сочетания объектов при монтаже

Далее был написан скрипт для обработки длинных видео.
Сцены находятся при помощи локальных минимумов звука. Так мы можем понять, что в видео наступают моменты спокойствия, не интересные для монтажа активных коротких роликов.
Уровень интенсивности происходящего в сценах определяется через ранжирование количества локальных максимумов звука на всех сценах.

Из рустера этих сцен происходит склейка на основе их сочетабельности по палитре на основе предыдущей модели машинного обучения.
Преобразование и склейка происходит при помощи утилиты ffmpeg

Таким образом был создан конечный продукт, решающий задачу обработки видео

Далее технической частью команды он был размещен на проде и завернут в fast-api, на данный момент продукт на ранней стадии монетизации


По всем вопросам можно обращаться в Телеграм.