Google开源框架AutoFlip 实现视频智能剪裁

Stella981
• 阅读 508

Google开源框架AutoFlip 实现视频智能剪裁

Photo by Kyle Loftus from Pexels

Google宣布开源视频剪裁框架AutoFlip,实现智能化自动裁剪视频。

编译:郑云飞 & Coco Liang

技术审校:郑云飞

原文链接:https://ai.googleblog.com/2020/02/autoflip-open-source-framework-for.html

随着移动设备的进一步普及,越来越多的消费者选择在移动设备上观看视频。据eMarketer2019年的数据,美国消费者每天平均在移动设备上花费3小时43分钟,比花在看电视上的时间还多了8分钟,这也是人们第一次被发现花费在移动设备上的时间多于看电视的时间。

然而,传统的内容生产设备制作的视频大多数是横屏(landscape)的,而移动显示设备默认是竖屏的(portrait),这就导致横屏内容在竖屏设备上的播放体验并不是很好。

视频裁剪是解决这个问题的方法之一。然而,人工的视频裁剪是一件非常枯燥、耗时且精细的工作,普通人很难胜任。因此,诞生了许多智能视频裁剪的算法,期望通过算法可以自动、快速地完成优质的视频裁剪。Google AI 13日在官博宣布开源框架AutoFlip,就是实现影片智能化自动剪裁的一个解决方案。

AutoFlip是一个基于MediaPipe框架的智能视频剪裁工具。它可以根据指定的宽高比,对影片内容进行分析,制定最佳裁剪策略,并自动输出相同时长的新视频。

Google开源框架AutoFlip 实现视频智能剪裁

左:原始视频(16:9)。中:使用静态的居中裁剪(9:16)重新构图。右:使用AutoFlip(9:16)重新构图。通过检测感兴趣的目标物,AutoFlip可以避免裁剪掉重要的内容。

其中,MediaPipe是一款由Google Research 开发并开源的多媒体机器学习模型应用框架。目前,YouTube、ARCore、Google Home 以及Nest等,都已经与MediaPipe深度整合。

我们也很幸运地联系到了MediaPipe 团队,对有关AutoFlip移动端的适用性提出了一些疑问,其中,软件工程师**@jiuqiant**表示,根据自己的经验,由于MediaPipe本身是跨平台框架,因此AutoFlip可以轻松移植到Android和iOS。AutoFlip演示依赖于MediaPipe的对象检测和面部跟踪子图,它们都是Android和iOS上MediaPipe的实时应用程序。因此,AutoFlip在移动平台上也应具有类似的性能。

AutoFlip为智能视频剪裁提供了一套全自动的解决方案,它利用先进的目标检测与追踪技术理解视频内容,同时会检测视频中的场景变化以便分场景进行处理。在每一个场景中,视频分析会先分析场景中的显著性内容,然后通过选择不同的相机模式以及对这些显著性内容在视频中连成的路径进行优化,从而达到场景的裁剪与重构。

Google开源框架AutoFlip 实现视频智能剪裁

如图所示,AutoFlip剪裁影片有三个重要的步骤:镜头边界检测、影片内容分析以及重新取景。

1)镜头边界检测

场景或者镜头是连续的影像序列,不存在任何剪辑。为了侦测镜头变化的发生,AutoFlip会计算每一帧颜色的直方图,并与前一帧进行比较。当直方图在一个历史的窗口中以明显不同于以往的速率变化时,则表示镜头切换。为了对整个场景进行优化,AutoFlip会在得出剪辑策略前缓存整个视频。

2)镜头内容分析

Google利用基于深度学习技术的检测模型在视频帧中找出有趣、突出的内容,这些内容通常包括人和动物。但根据应用程序不同,其他元素也会被检测出来,包括文本和广告 logo、运动中的球和动作等。

Google开源框架AutoFlip 实现视频智能剪裁

左:体育录像中的人物检测。右:两个脸部框(“核心”和“所有”脸部标识)

人脸和物体检测模型通过MediaPipe整合到AutoFlip中,这是在CPU上使用了TensorFlow Lite 。这个架构使得AutoFlip的可扩展性更大,开发者们也因此可以便捷地为不同的使用场景和视频内容添加新的检测算法。

3)重新取景

在确定每一帧上感兴趣的目标物之后,就可以做出如何重新剪裁视频内容的逻辑决策了。AutoFlip会根据物体在镜头中的行为,自动选择静止、平移或追踪等最佳取景策略。其中,追踪模式可以在目标对象在画面内移动时对其进行连续和稳定的跟踪。

Google开源框架AutoFlip 实现视频智能剪裁

如上图所示,第一行是 AutoFlip 根据帧级的边界框追踪到的相机路径,第二行是平滑后的相机路径。左侧是目标对象在画面中移动的场景,需要一个追踪相机路径;右侧是目标物体停留在近乎相同位置的场景,一个固定摄像机即可拍摄在整个场景中全部时长的内容。

AutoFlip 有一个属性图,可以提供最佳效果或自定义需求的剪辑。如果发现剪辑出来的镜头无法覆盖整个影片区域的情况时(例如目标在某一帧视频中显得太大),AutoFlip会自动切换到相对不那么激进的策略上。它会使用信箱效应,在保持原始视频尺寸的同时用黑边模式填充影片,使画面看起来更自然。

Google开源框架AutoFlip 实现视频智能剪裁

随着人们用来观看视频的设备越来越多样化,让任何视频格式都能快速适应不同屏幕比例的能力也显得越发重要。而AutoFlip能够快速地自动剪辑影像,适合在各种设备上播放。

和其它机器学习算法一样,AutoFlip 的性能会随着目标检测等能力的提升而大大加强,尤其是衍生出来的能力,例如采访镜头中的说话人检测或动漫中的动物脸检测等等。

Google称接下来会继续改进AutoFlip,尤其是针对影片前景文字或图标因为重新取景而被裁掉的情况。同时,Google也希望 AutoFlip 能进一步融合自然语言处理等技术,从而实现更合理的视频智能剪裁。

References:

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这