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

2023-05-16

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框架的智能视频剪裁工具。它可以根据指定的宽高比,对影片内容进行分析,制定最佳裁剪策略,并自动输出相同时长的新视频。

 

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

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

 

1)镜头边界检测

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

 

2)镜头内容分析

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

 

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

 

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

 

3)重新取景

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

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

 

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

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

 

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

 

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

References:

https://insights.digitalmediasolutions.com/articles/digital-mobile-dominate

https://github.com/google/mediapipe/issues/471

 

最后一个小小的tips,如果大家有针对文章内容的具体问题,欢迎在留言区互动,我们会努力将你的问题反馈给相应专业领域的技术专家,以便大家能够共同参与讨论。

LiveVideoStackCon 2020

上海/北京/旧金山 讲师招募

2020年LiveVideoStackCon将持续迭代,LiveVideoStackCon将分别在上海(6月13-14日),北京(9月11-12日)和旧金山(11月)举行。欢迎将你的技术实践、踩坑与填坑经历、技术与商业创业的思考分享出来,独乐不如众乐。请将个人资料和话题信息邮件到 speaker@livevideostack.com 或点击【阅读原文】了解成为LiveVideoStackCon讲师的权益与义务,我们会在48小时内回复。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google开源框架AutoFlip 实现视频智能剪裁 的相关文章

随机推荐

  • 转回CSDN了

    在BLOGSPOT上面挣扎了几个月 xff0c 还是放弃了 xff0c 毕竟看我的BLOG绝大多数肯定是中国人 xff0c 一个老被中国政府封的BLOG是没办法让别人接受的 xff0c 哎 xff0c 还是对BLOGSPOT恋恋不舍阿 xf
  • 最近在研究Mythtv

    mythtv是一个linux下的开源电视节目观看 录制和管理的软件 xff0c 如果装在普通PC上就可以变成一台电视PC xff0c 可以使用遥控器来看电视 xff0c 录节目 xff0c 如果装在一个嵌入式系统里就是一个机顶盒啦 xff0
  • arm linux 内核移植及驱动调试-网卡(1)

    最近在给一块ARM开发板 扬创的2440 移植新的kernel xff0c 原来的驱动都在 xff0c 不过还是碰到不少问题 xff0c 主要是对ARM LINUX的一些结构不甚了解 xff0c 这里作个笔记以便自己或他人查阅 前面没有什么
  • UBUNTU 下的IE6搞定

    可以上网上银行 支付宝 就是有点卡 不知道为什么 另外还有些小bug 不过我已经非常满意了 先装好wine 在ubuntu下面就是 sudo apt get install wine cabextract 然后直接下载安装ie4linux就
  • UBUNTU 下编译POKY

    记录一下我在UBUNTU下编译POKY的一些TIPS xff0c 防止以后再编的时候忘掉 xff0c 又要重新GOOGLE 1 解开pinky的包 2 进入pinky目录输入 source poky init build env 3 修改b
  • LLVM编译collect2: fatal error: ld terminated with signal 9

    报错 xff1a collect2 fatal error ld terminated with signal 9 查了一下这个报错 xff0c 可能是内存不足 xff0c 看到有前人的解决方法 xff0c 创建了20G的交换空间 xff1
  • Rust安装与编写第一个rust程序

    Rust 是 Mozilla 开发的注重安全 性能和并发性的编程语言 下边来演示一下如何安装rust xff0c 并尝试创建第一个rust项目 使用 rustup 脚本安装 xff1a 第一步 xff1a 执行 curl https sh
  • (C语言)栈应用简易计算器实现

    利用栈实现简易计算器 进行包含 43 间的计算 include lt stdio h gt include lt string h gt define MaxSize 100 typedef struct CharStack 字符栈 cha
  • 【实战原创】Centos7下Samba服务器配置(实战)

    这篇文章主要介绍了 Centos7 下 Samba 服务器配置 xff08 实战 xff09 xff0c 文中通过示例代码介绍的非常详细 xff0c 对大家的学习或者工作具有一定的参考学习价值 xff0c 需要的朋友们下面随着小编来一起学习
  • 批量修改word中的公式--mathtype

    1 用word打开一个需要编辑公式的文档 2 编辑公式的格式 xff0c 首先 xff0c 双击一个公式 xff0c 打开数学公式编辑器MathType xff0c 进入编辑状态 xff0c 点击大小菜单中的自定义选项 xff0c 修改字号
  • 免费使用office365和5TOneDrive空间

    免费使用office365和5TOneDrive空间 免费使用office365和OneDrive空间 免费使用office365和OneDrive空间 个人版本的office账号只可以拥有5G的存储空间 xff08 可以通过邀请的方式免费
  • UBUNTU 22.04 使用 SUNSHINE 和 MOONLIGHT 进行串流

    参考 ubuntu22 04 sunshine安装使用总结 xff0c 远程游戏 哔哩哔哩 bilibili sunshine README md at master loki 47 6F 64 sunshine GitHub GitHub
  • 学习LUA,使用IUP进行GUI程序设计

    原创 visualfc 在LUA中进行GUI程序设计 xff0c 可以选择的GUI库一般有wxLua和IupLua wxLua具备典型的面向对象风格 xff0c 功能相对强大 而IUP的LUA绑定则非常简洁易用 本文主要介绍IupLua I
  • poj 细菌实验分组

    include lt cstdio gt include lt cstdlib gt struct my int id double rate int cmp const void a const void b return my a ra
  • 在TreeATE的Python环境中: import paramiko出现问题 ModuleNotFoundError: No module named ‘paramiko‘

    在TreeATE的Python环境中解决import问题 一般在Python环境中没有出现问题 ModuleNotFoundError No module named paramiko xff0c 而在TreeATE的Python调试窗口中
  • 【仙女踩坑实录】Ubuntu20.04系统设置打开后闪退

    时隔数月 xff0c 我又踩坑了 今天打开设置想 我已经忘了当时想干啥了 xff0c 反正是想打开设置 xff0c 然后突然发现 xff0c 设置打不开了 xff0c 或者说打开后界面都看不到就闪退了 于是我看到有人在评论区中说是因为显示在
  • Nginx进程项说明

    说明 xff1a 在Windows中nginx服务每次点击启动之后 xff0c 都会生成2个进程项 注意事项 xff1a 在Windows中nginx只能启动一次 关于与启动2项说明 进程项1 xff1a nginx主要进程信息 进程项2
  • 如何设置go环境变量GOPATH?

    如何设置go环境变量GOPATH xff1f 安装 gin gonic gin 报错 cannot download GOPATH not set For more details see go help gopath go get u g
  • vs2022发生生成错误,但错误列表没有报错的一个解决办法

    如题 xff0c 事件的起因是我在编译程序时 xff0c 遇到了这个问题 我写的是最基本的c 43 43 控制台应用程序 然而观察错误列表 xff0c 没有错误 xff0c 也没有警告 进一步尝试后发现 xff0c 即使是原先可以正常运行的
  • Google开源框架AutoFlip 实现视频智能剪裁

    Photo by Kyle Loftus from Pexels Google宣布开源视频剪裁框架AutoFlip xff0c 实现智能化自动裁剪视频 编译 xff1a 郑云飞 amp Coco Liang 技术审校 xff1a 郑云飞 原