AI加持的竖屏沉浸播放新体验
本文由愛奇藝劉小輝在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能力在端上做一個落地應用;同時在長短視頻、橫豎播放有了一個有機的結合;在內容創作的時候,創作者不再需要提供兩版視頻(橫、豎版)就可以在愛奇藝獲得一個很好的播放效果。
LiveVideoStackCon 2020?北京
2020年10月31日-11月1日
點擊【閱讀原文】了解更多詳細信息
總結
以上是生活随笔為你收集整理的AI加持的竖屏沉浸播放新体验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 当AI成为基础资源,360OS 发力在线
- 下一篇: 【线上直播】Xilinx U30 视频转