技術詳解:基於人臉識別的AI彈幕

有時候,彈幕比劇情還精彩,那些腦洞大開、觀點鮮明的彈幕,可以讓千萬用戶參與到“劇情創作”中,因此很多人都喜歡邊看劇邊發彈幕。在AI算法的加持下,彈幕的呈現形式也花樣翻新。優酷的很多劇都上線了基於AI人臉識別的跟隨彈幕,與劇情更貼合,可玩性也更高。這類彈幕是如何實現的?有哪些核心技術?

在GMIC智慧文娛技術專場上,阿里文娛高級無線開發專家少廷分享了在優酷播放場景中,如何讓互動結合算法的識別能力,實現新的AI彈幕形態。同時也介紹了優酷在互動遊戲化領域的探索,以及讓互動與內容相結合的應用實踐。

播放中的互動場景

爲什麼要在播放場景中加入互動環節?歸納起來有四個價值:一是讓用戶更好地融入劇情,參與到劇情之中;二是互動能夠對用戶做實時反饋,體感非常好;三是很多用戶在看劇時,精力不是那麼集中,我們通過互動去抓住用戶的剩餘注意力;四是增加社區屬性,讓用戶盡情表達,產生歸屬感。

上圖是優酷重要播放互動的場景,包括在畫面中彈出提示,對相關情節信息做科普介紹;雙流播放形態,通過子母屏爲播放場景提供第三人稱視角;在劇中加入猜劇情、投票、小遊戲等,彈幕是最核心的形態。

無論從用戶規模還是用戶效率看,彈幕都是效率最高的互動形式,是互動最頭部的場景。AI互動彈幕的出發點很簡單,就是希望用戶的互動與內容能更緊密地結合,讓互動的展示形態更年輕和二次元。之前我們在彈幕中做過角色扮演的彈幕,指的是用戶可以選擇劇中角色,以他的口吻和頭像來發彈幕。

角色扮演彈幕的轉化率非常高。我們進一步思考,用戶能不能直接在角色上,通過類似漫畫配圖的方式發彈幕,與內容融合到一起。這就是AI互動彈幕的由來。

基於機器視覺的互動彈幕的技術挑戰

1、技術面臨的問題:識別放到端側還是雲端?

一是識別劇中人物,人像識別本身已經有成熟的算法,既可以放到端側,也可以放到雲端,那麼應該把識別能力放在哪?

核心的識別能力如果放到客戶端上,識別的功耗和性能開銷是很大的。如果是針對某些垂類場景,僅需在短時間內識別,放在客戶端完全沒有問題;但如果是長視頻,從頭到尾都有一個客戶端的識別引擎在跑,端側設備的性能、耗電就難以接受了。

二是客戶端識別的精準度,因爲算法識別直接輸出結果,很難達到產品化的要求。在這一過程中,還要對識別結果進行二次加工和處理,包括平滑處理、降噪。這些處理都需要更多的工作時長,如果都放到客戶端,難以保證實時性。所以我們將整個識別引擎都放到雲端,通過雲端識別輸出數據,經過優化處理再將這些數據打包下發到端側,實現投放和互動。

2、算法和工程如何對接?

工程和算法如何對接、工程如何解決算法輸出後的各類問題?包括識別精度、數據抖動、視頻文件變更之後導致的數據不一致的問題;另外,端側要解決核心的體驗問題。在播放過程中,鏡頭頻繁切換時,這些人像在鏡頭中變化的問題,手機界面橫豎屏的適應;還有氣泡樣式的彈幕,在不同劇中和內容的氛圍如何融合等。

上圖是我們的技術鏈路,由下到上,依次是算法層、服務端、客戶端。在算法層,我們通過模型訓練進行抽幀,對每一幀的畫面進行識別,通過人臉檢測和跟蹤來抓取每一幀的人臉數據,再傳輸到服務端進行預加工,包括數據合併和降噪,最後將人臉數據打包,通過互動投放引擎投放到端側,實現核心交互和基礎體驗。

1. 算法側具體的技術細節如下:

1)視頻抽幀與識別

抽幀現在按每秒25幀來抽取,這也是一個視頻的基礎幀率,對於高幀率的視頻當然可以抽更多,但這與機器開銷和耗時是成正比的。另外在算法側,人臉的識別引擎有幾部分,一是標準的人臉識別,能夠識別大多數人臉的場景;二是優酷還針對明星和人物角色做了單獨優化,我們會抽取一些劇中的明星和角色數據,作爲數據集去訓練,提升劇中主角和明星的識別率。

2)人臉跟蹤

算法會識別出視頻中每一幀的人臉和對應座標,座標用來標註人臉對應的位置,每個人臉幀也對應有人臉的特徵值,相同特徵值能夠識別爲同一個人。這樣通過座標和特徵值,我們就能識別出一個鏡頭從入場到出場的序列幀裏同一個人的人臉運動軌跡。

3)平滑處理,防抖動

我們知道算法是基於單幀對人臉做識別的,人臉的位置和大小的識別結果是有像素級的誤差的,同一個人臉哪怕運動很輕微,上一幀和下一幀的識別結果的方框是不會嚴絲合縫對齊的。這樣把連續的每一幀的識別結果像放動畫片一樣串起來,這種像方框一樣的識別結果在播放場景中就會看到明顯的抖動。

我們在工程側對抖動做了檢測和計算,將抖動限定在一個範圍之內,讓整個人臉的軌跡更平滑。

視頻2

視頻3

視頻2是算法直接輸出的人臉軌跡的識別結果,大家可以看到人臉的識別結果是伴隨人物運動在抖動的,既有位置的抖動,也有大小的抖動。視頻3是經過平滑處理後的結果,人物在整個鏡頭中走動,我們的識別結果輸出是穩定平滑的,抖動效果已經被平滑消除掉。

2. 服務端對算法層輸出的人臉原數據要做一系列的處理:

圖片

1)降噪,過濾掉鏡頭中不重要的人臉雜音。所謂不重要,是因爲鏡頭中有大量的路人鏡頭,很多是一閃而過的,這些鏡頭的人臉對於用戶交互來說不具備太大價值。所以我們要把路人、一晃而過的鏡頭中的人臉都過濾掉;

2)防抖。我們會對原數據進行平滑處理;

3)合併,就是合併一組連續幀中相同一個人臉的位置,打包輸出。比如一個鏡頭中,一個人從左邊走到右邊,我們通過特徵值識別出來這是相同一個人的連續鏡頭,那就把這一個鏡頭的人臉數據打包。這種包含了相同人臉和對應軌跡的數據,合併到一起之後,就成了一個數據包。然後將用戶發的彈幕數據跟人臉的軌跡數據包綁定,投放到端側,端側負責展示。

3. 在端側的技術細節

藉助優酷互動投放引擎,將人臉識別結果的軌跡數據包和彈幕一起投放,在端側完成數據解析和展示。端側有一個輪訓引擎來輪訓互動投放的數據,當播放進度到某個位置時有人臉軌跡的數據和彈幕數據時,端側會把人臉位置的彈幕氣泡顯示到播放場景中。

另外,客戶端還要解決技術體驗問題,包括鏡頭切換,雖然是細節問題,但是其實費了很多功夫。 例如,用戶想發彈幕,在發送的一瞬間,鏡頭切換了。在用戶側看到的是彈幕閃一下就消失了,這個體感是非常不好的。

所以,在技術上我們要保證人臉彈幕發送後,會在同一個位置顯示一定的時長。現在是1秒左右;投放彈幕的時候同樣如此,如果用戶在鏡頭的最後幾百毫秒發送氣泡彈幕,我們會把它做時間前置偏移,讓彈幕稍微往前,在鏡頭中完整展示出來。

另外,在氛圍方面,我們有古裝劇、有現代劇、有懸疑、有綜藝,劇的類型差異比較大。氣泡彈幕與播放結合比較緊密,我們還是希望它的效果、樣式、氛圍能夠跟劇本身貼合。我們在端側實現這類樣式的動態配置能力,對於不同的劇集能夠展示不同的風格。剛纔大家在案例中也看到了,有紅的、有藍的、有灰的,然後古裝劇會帶一些紋理小花之類。

另一個嚴重問題是,當視頻剪輯變更之後,數據如何快速更新?

首先爲什麼會有視頻變更?這是視頻行業中的普遍現象。例如一個大劇,一個熱綜,在整個播放週期內,會經常因爲一些原因被重新剪輯。重剪後就會引發一系列問題,比如,可能有一個橋段被剪掉了,原來識別出來的人臉數據結果和現在新的視頻對不齊。另外,運營同學或者剪輯同學,其實無法準確的告知在什麼時間點剪了什麼內容,這無法依靠人力來保障同步。

另外,假設我們知道視頻被剪輯了,全部重新識別一遍行不行?答案是不行,第一是耗時長,額外開銷高;第二,如果重新識別,相當於鏡頭中的人臉的數據全部都更新了一遍,用戶發送的存量彈幕和人臉相結合的部分無法還原。

所以我們的核心問題,就是要解決如何快速找到剪切點,並且只處理剪輯掉的部分。 技術解法如下:

首先工程側要自動識別變更,一旦視頻源變更,服務端就能收到相應的通知,並啓動去做重新識別。算法要識別剪輯之後出現差異的部分,找到中間差異的時間段。這樣處理的優勢是:1)可以實現無人值守;2)識別時間短,分鐘級處理完畢。

具體是如何實現的?我們會通過算法識別特徵值。例如,原視頻中a和b是兩個人臉,中間的時長是n秒,剪輯後算法再去識別新視頻源時,發現c和d對應的人臉特徵值和a和b不一致、時長對不上。通過取兩者(a和b,c和d)的差值,就知道那部分是被剪掉了,然後去處理差值的部分,一兩分鐘重新識別完,保證數據重新上線。

回到用戶體驗上,用戶對AI彈幕是評價是怎麼樣的?

左邊是用戶用AI互動彈幕發佈的內容,很多都是優秀的段子手,大家能夠玩起來。

右邊是用戶反饋,有表達不理解、不清楚是做什麼的,或者認爲彈幕干擾正常觀影。所以目前AI彈幕還是小範圍投放,並沒有全面鋪開,因爲我們也在思考用戶的接受度。 在長視頻中,並不是所有用戶都能接受。更好的方向是將這種互動性強、更有意思的模式,與短視頻和直播結合起來,因爲在短內容和碎片化內容中,用戶的接受度會更高,娛樂性會更強。

播放互動的相關嘗試和展望

1. 互動交互能夠和內容更緊密結合,交互方式更遊戲化

通過對視頻內容的識別,能夠識別到或者理解到劇中的人物或者劇中的演員,甚至劇中的物體。這樣我們對內容本身的場景和角色是能做到理解的。這樣就可以將互動投放跟內容做的更緊密,比如說能夠跟明星結合的更緊密,甚至能夠跟商業化結合的更緊密,讓商業化和內容本身結合,這也是一個方向。

2. 互動的效果更炫酷和驚豔

讓交互結果和交互的視覺更年輕化,更讓人有意外,讓用戶能有更進一步互動的慾望。

3. 用戶參與的數據沉澱能夠反過來指導內容的製作和生產

將用戶參與互動的數據沉澱下來,通過對數據的理解和二次加工,抽象出一些結論。包括用戶在互動上的高潮節點和用戶高反饋的點。另外,希望指導內容製作和生產。

4. 短視頻、直播這類碎片化的內容能夠發揮互動的新價值

在更碎片化的短視頻和直播內容中,探索一些新形態和新價值。

作者介紹:阿里文娛高級無線開發專家 少廷

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章