本文由爱奇艺刘小辉在LiveVideoStackCon 2020 线上峰会的演讲内容整理而成,内容主要讲述通过AI智能的视频画面主体识别能力和字幕识别能力,实现在手机端竖屏全屏观看横拍视频的新体验,给用户提供沉浸视界新体验。
文 / 刘小辉
整理 / LiveVideoStack
大家好,我是爱奇艺的刘小辉,本次我分享的题目是《AI加持的竖屏沉浸播放新体验》,我会从三个方面介绍竖屏沉浸播放是什么,为什么这么做,我们是如何做的。
竖屏沉浸播放是什么
竖屏沉浸播放,即当我们在竖屏握有手机的时候,期望展示内容是能全屏展示的,但当视频是横版视频的时候,如果按照常规的等比例显示,就会出现上下都是黑边的情况。但是我们以最舒适的竖版握有手机的时候,我们需要有一种方式可以显示画面中最感兴趣的部分,而横屏的时候又能展示出整个画面的内容,这样在播放的时候,竖横向转换的时候都比较平滑不至于被打断,这就是我们的最终诉求,如图中横版视频中居中的人物是我们想要展示的,在转动过程中也能够依然聚焦在主体人物之上,同时在横屏的时候也能够把整个内容展示出来。
最终的诉求目的是横版视频能够竖屏观看,同时做到竖屏横屏能够无缝切换。
我们在爱奇艺APP上的实现效果如图。打开视频后,会显示有沉浸播放按钮,点击进入后进入竖屏状态满屏播放,转动屏幕的过程中会展示整个视频的画面,再转回竖屏状态又会聚焦在当前画面的人物位置、焦点位置。这就是我们想做的竖屏沉浸播放的展示。
为什么做竖屏沉浸播放
我们为什么要这么做呢?因为在视频的发展历程上,从最早的长视频,主要集中在横屏视频,到近几年发展比较快的短视频,尤其是全屏播放的竖版视频,而后又出现长短视频结合的形式,这种形式下横竖屏结合就尤为重要。爱奇艺也是在做这样横竖视频播放的拓展,所以如何在竖屏状况下播放现有的存量视频,对内容提供者应该提供什么样的视频,都是需要解决的问题。
所以我们可以在图上看到,横轴是时间线,纵轴是长短视频的分类,比较早期大家都接受长视频,近些年短视频发展非常快,最近一两年集中在长短视频发展的边界。
现在常见的播放形式是长短视频结合的播放视频,同时对内容创作者来讲,以什么样的形式提供视频?能不能做到提供一个横版视频,在竖屏的时候也可以播?在短视频场景下也可以比较完美的播放出来,这都对我们提出了更高的要求。竖屏沉浸播放最终就是为了解决这两个问题,让长视频,短视频,竖屏和横屏有机结合在一起的播放,而且做到流畅平滑的切换,对于内容创作者来说只需要创作一个横版视频就可以了。
如何实现竖屏沉浸播放
下面我将从以上几个方面介绍一下我们是怎么实现竖屏沉浸播放的,首先介绍一下它的基本架构图,然后会介绍我们在云端和终端都做了哪些事情。
云端和终端之间交互其中有个重要的内容——AI焦点文件,它描述了当前视频每一帧画面的焦点位置,还包含了如字幕等其他信息。在云端有几个主要的工作点,如场景的分割、目标检测、显著性检测、人脸检测等,它们主要是做内容分析,分析当前画面的焦点位置。字幕检测和字幕识别主要为完善画面剪裁之后能够展示完整字幕,然后每个画面焦点位置计算完成之后会做一个剪裁优化,最后一个稳像平滑,以此规避相邻画面之间中心点微小的变化带来的画面抖动。
在终端主要是根据当前陀螺仪的姿态信息、当前画面的焦点区域信息、屏幕大小计算应该呈现画面中的哪块区域。随后就是图像的渲染,为支持用户可以手动改变聚焦位置,我们也做了一个缩略图渲染,以支持用户的手动调节。还有一个扩展功能就是字幕的擦除与渲染,由于字幕在局部区渲染的时候会被截断,需要把完整的字幕在竖屏状态下再渲染出来。
在云端我主要针对五个点做介绍,分别是:场景分割、内容分析、聚焦中心构建、字幕检测和识别、竞品对比。
场景分割的目的为了在减少计算耗时的同时提高准确性。因为在视频画面中场景是多个镜头构建在一起的,多数情况下,单一的镜头里图像的变化比较小,比如主人公说话只有唇部或者手部较小的变化。因此在单一镜头下,我们可以利用抽帧分析,不用计算每一帧,比如间隔若干帧来分析画面内容,这样可以显著减少计算耗时。如图是截取的一段两分钟视频,分成若干镜头,会发现每一个处理的时间也就几秒钟甚至更少,但是可以发现同一镜头中的画面变化是非常小的。
在内容分析这块主要利用的是几个点。运用的当前的深度学习,AI的一些算法去做的一些检测或者识别,最重要的就是目标检测、显著性检测、说话人检测、最后是人脸检测,每个步骤都配有一个权重来协助分析最终的画面点。下面我再对四个点进行展开的介绍。
目标检测,我们现在运用的算法对常见的80类物体敏感,检测当前画面中的物体之后,会做一个目标筛选,我们也对此制定了规则,如当前目标的物体位置信息是否居中;物体尺寸大小,我们会认为尺寸越大吸引人眼球的可能性就越大,这也是符合导演在拍摄这个镜头的创作意图;最后一个就是物体置信度,它最可能是一个什么样的物体,比如是人、动物、桌椅,但影视上我们当然对人物的赋予的权重会更高一点。
显著性检测。在拍摄过程中,主角位置或者说最吸引人眼的部分一定会出现在聚焦点上,这也是我们视频播放的时候期望的中心点。右上图是影视画面,可以看到只有主体人物在画面的中间,我们通过显著性检测,会发现人脸部分是整个画面最吸引人眼的部分,利用这种检测,亮度越高的区域就是人眼越感兴趣的地方,也是应该在竖屏状况下被显示的部分。
说话人检测主要是为了区分如果当前画面有两个人物且权重差不多,或者在交替讲话的时候,如何做区分?用到识别的方法,主要运用声纹特征和人脸特征做一个构建,声音辅助比对当前谁在说话,以此来调整权重。
人脸检测,是为了辅助分析当前图像中如果人脸占比较小,定位Y轴信息,集中想突出的人脸部分,准确定位人脸的中心点。图中做例的两张图,人脸检测时候可以准确的检测前景人物的面部位置,同时也做了一个排序。右图可以看到左边人脸位置与正脸位置都是被检测到的,同时左边人物的权重是较高的,但我们会在后面看到真正聚焦的位置点是在谁的身上。
检测到每一帧或者每一场景的焦点位置之后,我们会做一个聚焦中心的构建,会用到几个策略。稳像策略,就是平滑相邻帧微小的位移;第二个点就是连续变化,一直在平移的这种做了一个拟合,拟合的目的是为了减小AI焦点文件中的数据总量。
稳像策略我们可以看到上图右侧结果,多数场景下它都是平的线段,代表了当前人物的中心点是没有变化的,虽然可能有说话或者其他手部动作的,但不会影响整个人物中心的变化。如果说有连续的尖峰或者短的尖峰,结果就是画面出现频繁变化,就会出现抖动的问题。我们也举了一个例子,比如在箭头所指的区域是一个斜线,其中描述的拟合点,代表是逐步平移的中心点。
字幕识别的目的是为了展示完整的字幕,因为在竖屏沉浸播放的时候,字幕会被截断。字幕识别首先需要找到原始整个字幕的位置,文本的剧情内容和持续的时长,这里也会针对异常的数据进行剔除,异常数据来源主要是图像内容的广告牌或者其他内容中被误检的文字,根据字幕出现的位置点和时长的规则关系会剔除一部分噪声数据,比如字幕时长大于300ms或者底部居中,不符合的数据就会被剔除掉
在今年2月份,谷歌也开展了类似的工作,推出了一个叫Auto Flip的产品,我们用他们的算法做了一个检测的对比,上图为某一视频跑出的数据结果。我们可以发现在起始的部分蓝色的线在剧烈的抖动,说明镜头是在一直变化的,而爱奇艺的分析结果可以发现是比较平滑的。在其他的位置也可以看到很多不同的差异,这是由于两套算法对不同识别结果的分配权重不同而产生的结果差异。我们可以看到谷歌给出的样例小视频与我们爱奇艺处理后的对比分析结果。
左边1/2是原始视频,右边1/2是两份结果,结果中左侧是爱奇艺的沉浸播放结果,右侧是谷歌 Auto Flip结果。我们会发现很有意思的点,在有人物的地方都可以被正确的检测,尤其是单人的情况下,二者比较一致。但是在有些场景,比如双人场景下,爱奇艺会将焦点人物完整的展示出来,而谷歌的结果就会有一些偏差。并且在一些场面下,爱奇艺能够准确地识别到说话的人,而谷歌却选择聚焦距离镜头较近的两个人。
呈现的结果与算法的权重分配有一定关系,同时具有一定的主观性,所以我们不太容易评判谁优谁劣,但总体来看爱奇艺的结果还是比较符合我们的预期和人们的观看习惯的。
接下来我们介绍一下终端的相关内容。终端做的事情包括:窗口尺寸自适应、自动与手动的双模式切换、字幕回写、横屏竖屏自由的旋转切换。
窗口尺寸自适应有两个点需要介绍,第一是相同的影片相同的窗口尺寸,但分辨率不同该如何展示;第二个点是相同的影片分辨率、但不同的手机窗口尺寸该如何展示。
以当前视频为例,它的分辨率是一定的,我们来看一下两个不同的手机是如何展示的。左边的手机比例是3:4,我们会发现人物顶部的帽子与底部衣服领口是不可见的,而右边是9:16的常见手机屏幕比例,它从纵轴上截取了当前视频的整个画面,保证了视频的纵横比。
上图展现的是同样的手机尺寸,针对不同的视频分辨率是如何处理的。设备比例都是9:16,从像素高度上是比左侧视频要高要大的,我们可以发现在截取视频位置之后做一个缩放,保证了视频的纵横比,让画面内容在窗口上不出现拉伸。
如果屏幕尺寸比视频尺寸要小一些,在原图之间以聚焦中心点为中心,我们会发现在帽子和衣服是被截掉了一部分的。总体的原则是保证窗口的纵横比在原始图片中,以聚焦中心点为中心截取一块最大的区域,同时保证做到画面内容不拉伸。
以上是同一个视频在不同的窗口尺寸所作的对比,其中窗口的宽度是固定的,高度按照不同比例在原视频中做的截取。放大的窗口来源于从原视频中截取的一个9:16的小图片,渲染到一个9:16的大窗口,最终呈现的就是这样的效果。这是一个两分钟视频的结果对比,总结来看,不同的手机尺寸的效果都是可接受的,在观感上并不违和,都能找到画面的主体部分和聚焦中心,也比较契合影片中镜头的焦点区域。
在APP真正落地的时候,一定会出现的一种状况是,如果按照当前AI算法计算的焦点不一定是当前用户感兴趣的人物时,用户可以用手势在屏幕滑动,将聚焦位置切换成画面中的其他人物。
比如图中展示了我们在实践的过程中增加了一个缩略图,这个缩略图描述了当前聚焦人物,滑动时竖屏呈现结果会进行转换,即支持自动调焦又支持手动调焦。
为了实现完整字幕的显示,我们在被截断的字幕做了一个字幕擦除,然后再将完整的字幕回写出来。图中是一个被截断的图片,字幕的区域被放大擦除,我们将完整的原始字幕回写,同时对字体大小也进行了调整。
在横屏竖屏的切换部分,竖屏时,我们会展示框内内容;当旋转屏幕时,我们会依照画面中心点旋转作为画面的截取。当然,依据屏幕尺寸的大小,我们还会做一个放大处理,这样一直转到横屏时,整个画面的内容都可以被展示出来了。
总结以上内容,竖屏沉浸播放让我们的AI能力在端上做一个落地应用;同时在长短视频、横竖播放有了一个有机的结合;在内容创作的时候,创作者不再需要提供两版视频(横、竖版)就可以在爱奇艺获得一个很好的播放效果。