Google представила открытый алгоритм автоматического кадрирования видео. Пользователь задает базовые параметры, такие как желаемое соотношение сторон, а алгоритм самостоятельно определяет наиболее важные объекты в кадре и обрезает видео так, чтобы они оставались на новом видео, рассказывают разработчики в блоге Google AI. Код и инструкции по запуску программы опубликованы на GitHub.
Исторически почти все оборудование для съемки и просмотра видеозаписей имело ширину кадра больше, чем высоту. Из-за этого фильмы и ролики почти всегда снимались в горизонтальном формате. Однако из-за массового распространения смартфонов и социальных сетей существенная часть видеозаписей теперь имеет вертикальный формат. Это привело к тому, что создателям видео зачастую приходится адаптировать ролики сразу для нескольких популярных соотношений экрана. Если при этом просто кадрировать видео по центру, то часть объектов по краям будет утеряна, особенно в случае с длинными роликами.
Поскольку уже существует много качественных алгоритмов отслеживания объектов в кадре, некоторые разработчики в последние годы пытаются применить их для кадрирования. Например, такую функцию недавно представила Adobe, однако она имеет ограничения, а кроме того, доступ к ней ограничен. Программисты из Google создали открытый алгоритм, способный обрезать видео под разные форматы, не теряя при этом важные части кадров.
В начале работы пользователь предоставляет алгоритму исходное видео и соотношение сторон для итогового видео, а также может указать, необходимо ли сохранять все объекты в кадре. После этого алгоритм размечает на исходном видео разные сцены с помощью гистограммы насыщенности: если гистограмма между кадрами резко поменялась, значит, скорее всего, произошла смена сцены.
Поскольку в разных сценах объекты в кадре обычно расположены разным образом, а некоторых из них вообще может и не быть, каждую сцену алгоритм обрабатывает отдельно. Для этого он размечает объекты в кадре и затем обрезает видео так, чтобы они были в центре, причем алгоритм сам выбирает метод кадрирования между статичной обрезкой, плавным движением зоны кадрирования от одной стороны к другой и динамическим кадрированием в соответствии с движениями объектов. Если пользователь указал в настройках, что необходимо сохранить все объекты, алгоритм может при необходимости расширить зону кадрирования и добавить полосы по бокам кадра, чтобы заполнить пустоты.
Алгоритм доступен на GitHub и реализован в виде MediaPipe-конвейера. Кстати, недавно MediaPipe перенесли в браузер, и любой желающий может запустить алгоритмы компьютерного зрения в браузере на компьютере или смартфоне. Разработчики в своем блоге рассказали, что планируют дальше работать над алгоритмом и приглашают присоединиться к проекту другие компании или отдельных разработчиков.
В качестве возможных будущих функций алгоритма программисты привели реалистичное нейросетевое дорисовывание граничных областей кадра и удаление наложенного текста или рисунков. Обе функции уже реализованы в виде отдельных алгоритмов разработчиками из Google, поэтому вполне возможно, что в обозримом будущем они действительно будут внедрены в новую программу.
Григорий Копиев