11

AutoFlip:智能化视频剪裁的开源框架(附链接)

 4 years ago
source link: https://www.jiqizhixin.com/articles/2020-03-24
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言

为电视和显示器拍摄制作的视频常常使用横向16:9或者4:3比例。然而越来越多的用户开始在移动设备上制作和观看视频,传统的画面比例并不能完美兼容。为此需要对视频画面进行剪裁,传统的做法涉及到静态剪裁,例如,选定好可视区域,然后把区域外的内容全部剪掉。不幸的是,由于构图种类和相机运动模式繁多,这种静态剪裁经常产出无法让人满意的结果。而其他特殊的做法,常常要求拍摄者手动确定每个画面的目标,并追踪他们在每帧间的转变,然后相应的剪裁掉多余的画面。这个过程是非常耗时、乏味且容易出错的。

用户:

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

为了解决这个问题,我们很开心向大家介绍智能化视频剪裁的开源框架:AutoFlip。基于MediaPipe框架,该框架支持开发用于处理时间序列多模态数据的管道。把一个视频文件(业余级拍摄或专业级剪辑)和一个目标比例(横向、正方形、人像等等)作为输入,AutoFlip会分析视频内容,逐步得出最佳的追踪和剪裁策略,然后输出一个同样时长但剪裁至目标画面比例的视频文件。

AutoFlip:

https://github.com/google/mediapipe/blob/master/mediapipe/docs/autoflip.md

MediaPipe:

https://github.com/google/mediapipe/blob/master/mediapipe/docs/face_detection_desktop.md

ua2yieA.gif

左图:原视频(16:9)。中间:使用常规居中剪裁(9:16)。右边:使用AutoFlip剪裁(9:16)。AutoFlip通过追踪目标内容,避免了把重要内容剪掉的问题。

AutoFlip简介

得益于应用行业领先的机器学习目标检测和追踪技术,AutoFlip能够轻易理解视频内容,进而为智能视频剪裁提供了一个全自动的解决方案。通过探测能够表明场景变化的差异,AutoFlip能够在处理过程中把每个场景分离开来。在每段场景被选定的相机模式和轨迹优化剪裁之前,通过视频分析确定主要目标。

eIzyAzF.jpg!web

画面(场景)探测

一个场景或画面是一个无删减(或跳跃)的连续视频。为了探测出场景变化,AutoFlip计算每帧的颜色直方图并和之前的帧做对比。如果该帧的色彩分布和之前一连串画面不同的话,就说明该帧的场景发生了改变。为了优化整个场景的剪裁,AutoFlip在剪裁前会缓存整段视频直到该场景结束。

视频内容分析

我们利用基于深度学习的目标检测模型来寻找每帧画面里有趣的、重要的内容。这类内容常常包含人物和动物,但出于应用角度考虑,其他物体也可能会被考虑在内,包括文字覆盖和商业logo,或者体育运动中运动和球的探测。

面部和目标检测模型通过MediaPipe整合到了AutoFlip当中,这一功能可以通过在CPU上运行TensorFlowLite实现。这种结构让AutoFlip具有扩展性,开发者能很方便地为不同场景和视频内容增添新的探测算法。当然,每类物体都有相应的比重,也就是该类物体的相对重要程度 – 比重越高,该类物体在计算摄像轨迹中就更有影响力。

面部:

https://github.com/google/mediapipe/blob/master/mediapipe/docs/face_detection_desktop.md

目标检测模型:

https://github.com/google/mediapipe/blob/master/mediapipe/docs/object_detection_desktop.md

TensorFlowLite:

https://www.tensorflow.org/lite

7niyAje.gif

2q2aIvf.gif

上图:运动中的人物检测。下图:两个面部探测方块(“核心面部”和“全面部”)。在较窄的人像比例剪裁案例中,经常只有核心面部能够显示(全面部尺寸太大)。

剪裁

在确定了每帧的目标后,就可以决定如何把内容剪裁到新的画面中。取决于物体在场景中的移动轨迹(例如物体是跑来跑去还是静止不动),AutoFlip会自动选择最佳剪裁策略 – 静态的、移动的或是追踪的。在静态模式中,剪裁后的相机视角是固定在某一位置,从这个位置可以在大部分场景中看到目标。这个模式能高效地模拟专业静态电影拍摄,例如使用静态三脚架的相机或者后期的稳定处理。而在其他场景中,以恒定速率移动相机视角相比于静态模式会有更好的效果。而追踪模式能够在场景中提供连续稳定的目标物体追踪。

在算法决定使用以上哪种剪裁策略后,AutoFlip对每帧确定一个最佳剪裁窗口,同时确保目标出现在该窗口中。当追踪框追踪场景里的目标时经常会在每帧画面之间跳来跳去,导致了不能很好的确定剪裁窗口。因此我们在欧式范数优化过程中,通过降低平滑(低阶多项式)相机轨迹和追踪框间的残差来调整每帧的窗口视角。

欧式范数:

https://zh.wikipedia.org/wiki/%E8%8C%83%E6%95%B0

低阶多项式:

https://en.wikipedia.org/wiki/Degree_of_a_polynomial

buQJruf.gif

MB3MbyB.gif

上图:跟踪每帧的追踪框得出的相机轨迹。下图:使用欧式范数得出的平滑相机轨迹。

左图:目标物体在场景中来回移动,需要追踪相机轨迹。右图:目标物体和场景保持相对静止;静态相机视角能够涵括该场景目标物体的移动轨迹。

AutoFlip的图像构造提供非填充和填充剪裁两种设置。当窗口不能包含所有指定区域时(例如目标分散在整个画面),通过自动切换到较为缓和的剪裁策略,例如填充黑边使图像充满整个画面。对于图像背景颜色是单色调时,黑边颜色会自动转成相同色调,来达到无缝填充效果;在其他情况下,AutoFlip会采取虚化的方式来达到相同效果。

黑边:

https://zh.wikipedia.org/wiki/%E9%BB%91%E9%82%8A

iaeQbeu.gif

AutoFlip使用场景

能够直接让开发者和电影制作人使用这款工具、减少他们创造中的阻碍、以及实现视频剪辑自动化让我们感到非常激动。处理各种视频类型和高宽比的功能愈发重要,尤其现在出现越来越多的各种比例的视频内容消费设备。不管你的应用场景是人像转横向、横向转人像、还是改动极小的4:3转16:9比例,AutoFlip都能提供一个智能、自动化和自适应的剪裁方案。

vi2a2qm.gif

展望未来?

和机器学习算法相似,AutoFlip也能够从不断提升的视频内容相关物体探测能力中受益,例如面试探测或者卡通片中人物面部捕捉。然而一个常见问题是当输入视频边缘有重要内容遮挡(例如文字或者标志),这些内容通常会被剪裁掉。通过整合文字、标志探测以及图像修补技术,我们希望AutoFlip在将来能够保证剪裁质量同时复位这些表层信息。最后,在需要填充的案例中,deep uncrop技术能够提供超越原可视区域的能力。

deep uncrop:

http://openaccess.thecvf.com/content_ICCV_2019/papers/Teterwak_Boundless_Generative_Adversarial_Networks_for_Image_Extension_ICCV_2019_paper.pdf

当我们在Google改进AutoFlip的同时,我们也鼓励开发者和电影制作人能够在开源社区为我们提供帮助。

鸣谢

我们想对AutoFlip的同事表示感谢,Alexander Panagopoulos, Jenny Jin, Brian Mulford, Yuan Zhang, Alex Chen, Xue Yang, Mickey Wang, Justin Parra, Hartwig Adam, Jingbin Wang, 以及Weilong Yang; 还有提供开源帮助的MediaPipe团队, Jiuqiang Tang, Tyler Mullen, Mogan Shieh, Ming Guang Yong, 以及Chuo-Ling Chang。

原文标题:

AutoFlip: An Open Source Framework for Intelligent Video Reframing

原文链接:

https://www.googblogs.com/autoflip-an-open-source-framework-for-intelligent-video-reframing-2/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK