機器之心原創,做者:邱陸陸。html
做爲(僞)AI 行業從業者,之心編輯部裏的小夥伴們自認都可以以不錯的置信度人工識別「人工智能與人工智障」。可是,當我把下面這張愛奇藝 app 的截圖放在你們面前時,編輯部的「識別器」們紛紛表示,此次置信度不高。算法
熱門視頻裏,「彈幕蓋臉」幾乎是必然事件,然而這個視頻裏,密密麻麻的彈幕都彷彿被李健老師的氣場所折服,很是準確地「繞開」了他英俊的臉。偶爾還會有一些小失誤,但這樣的失誤反而顯得更像是算法而不是人工作出來的。併發
在學界,一個衆所周知的事實是,儘管在目標檢測任務裏,數家巨頭研究團隊都在論文中報告出了「超越人類」的結果,圖像分割任務彷佛仍然給研究者們留下了不小的進步空間。谷歌今年 2 月發表的 DeepLabv3+,在利用 3 億張內部數據作預訓練的前提下,在 PASCAL VOC 2012 數據分割數據集上拿到了當前的最佳效果(state-of-the-art),IOU 89%。在 Cityscapes 數據集上,這個數字僅僅是 82.1%。app
給定這樣的研究水平,圖像分割技術已經能夠用於業界了嗎?愛奇藝應用裏看起來很是可觀的「人臉與背景分割」,到底是基於人工智能仍是基於人工?帶着全編輯部的一籮筐問題,咱們一路展轉,聯繫到了愛奇藝技術產品中心,而且捉到了這項名爲「AI 彈幕蒙版」項目的算法負責人,愛奇藝技術產品中心研究員,馮巍。他給了咱們很是詳盡的答案。學習
問題一:是否是分割?是什麼分割?測試
首先是咱們最關心的問題仍是:這個「彈幕蒙版」到底是人工智能仍是人工:優化
是否是圖像分割?是!是哪種圖像分割?語義分割(semantic segmentation)!人工智能
更確切地說,是一個有兩個類別的語義分割:圖像裏每個像素都會被分配到「前景」類別或者「背景」類別,而後系統會基於分割結果生成對應的蒙版文件。設計
算法正是基於谷歌 DeepLabv3 模型,技術團隊也嘗試過 FCN 等其餘分割模型,可是 DeepLab 的模型效果確實有突破。orm
馮巍也向咱們展現了一些在綜藝和影視劇場景下的分類結果。
v.qq.com/x/page/z135…(中國新說唱彈幕蒙版效果)
爲何會想要用圖像分割作「彈幕蒙版」?
愛奇藝團隊的圖像分割技術做爲技術儲備已經儲備了至關長時間了,初衷是想用於短視頻的背景替換。
所謂背景替換,就是把用戶錄製的短視頻裏的人像摳出來,換到另外一個不一樣的背景裏。可是從技術角度來說,單張圖像分割效果合格不等於視頻分割效果合格:分割結果在視頻先後幾幀圖像中稍有不連續,就會形成幀間分割邊緣不停地抖動,而這樣的分割不連貫是很是影響用戶體驗的。
那麼有沒有要求比背景替換低一點的場景?有,好比那就是保留原始背景,在原始背景和分割出來的人像層中間插入動態背景。這樣分割邊緣和原始背景仍然在一塊兒,偏差就不那麼明顯。這也是彈幕蒙版的來源了。
「技術 ready 了以後咱們就一直在不一樣業務部門 demo 本身的各類能力,這樣產品的同窗就能想出不少好的點子。」馮巍說。
實際上,彈幕蒙版裏用到的深度學習模型不僅是分割,還有識別。在對視頻進行分割前,「景別識別模型」會先對每一幀圖像進行一次識別,判斷當前幀屬於近景仍是遠景。
這個景別識別任務,目的是判斷圖像是不是特寫或近景鏡頭畫面,這樣的圖像纔會進入到分割模型中生成蒙版,而遠景畫面則不會生成蒙版,彈幕會像原來同樣覆蓋整個畫面。這樣一來,幀間蒙版抖動的問題就獲得了很好的解決。
值得一提的是,這個景別識別分類器也是一個已有技術積累換了個場景再利用的例子:以前這個分類器主要用於愛奇藝的智能輔助後期製做等功能。
分割結束以後,系統會進一步利用「腐蝕」和「膨脹」等圖像形態學處理算法對分割模塊輸出的前景區域進行精細的剪裁,並根據應用場景的須要刪掉畫面佔比小的前景區域。
通過這一系列的處理以後,才進入到蒙版文件的生成、壓縮等生產流程。
問題二:需不須要本身標數據?標了多少數據?
答案是須要!標了數萬張。
通用的分割模型都是用 MS COCO 等通用數據集進行的訓練,直接用在綜藝場景上效果就很是通常了。
「場景切換和舞臺光是兩個通用分割模型很難處理好的問題。因此咱們本身挑了數萬張典型場景的圖像,標註團隊先後花了三週時間。」馮巍說。
訓練集和測試集的分佈一致性也獲得了很好的保證:「咱們第一個上線彈幕蒙版功能的節目是《中國新說唱第二季》,因此咱們就用《中國新說唱第一季》以及同一個拍攝團隊創做的《熱血街舞團》作了訓練集。」
值得一提的是,由於系統最終並不須要蒙版的分割「精細到頭髮絲」,因此標註工做也相對於通常的語義分割標註也更爲容易一些,馮巍展現了一些補充訓練集裏的樣例,「並不須要精細到像素,用直線把人物部分框出來就好了」。
通用語義分割模型使用專用數據集作了全盤精調以後,IOU 從 87.6% 提高到 93.6%。
問題三:效率怎麼樣?快嗎?貴嗎?
推理階段,一臺 GPU 分割 1 分鐘的視頻,大約須要數分鐘,仍然在 O(1) 時間以內。
實際生產中,系統也常常遇到比較嚴苛的時間需求。「《中國新說唱》的製做團隊有必定的保密要求,好比節目週六八點要上線,咱們可能四點鐘才能拿到片子。因此咱們經過視頻分片數來控制生產服務的併發,並在全部分片完成後再經過消息隊列通知業務層,每一個分片的生產有單獨的狀態監控和重試機制。最終系統同時使用了 多臺 GPU,處理一段 90 分鐘的視頻大概須要 40 分鐘。」
團隊也在測試將彈幕蒙版用於晚會直播等實時場景中了。
問題四:有什麼「升級」打算?除了防止「彈幕蓋臉」以外還能作什麼?
首先,防止「彈幕蓋臉」也存在升級版,好比從語義分割升級到實例分割,把「全部人的防擋彈幕」變成「你愛豆的專屬防擋光環」。
圖像分割任務也分爲好幾種,語義分割只要求系統把全部圖像裏的「人」都分到「類別人」裏就好。除此以外,還有須要將不一樣人物分入不一樣類別的「實例分割」(instance segmentation)以及連背景都不放過的「全景分割」(panoptic segmentation)。
愛奇藝的技術團隊也在研究基於 MaskRCNN 的實例分割,輔以愛奇藝的長項:明星人臉識別,嘗試作「粉絲專屬彈幕蒙版」。
「舉個例子,若是你喜歡吳亦凡,那麼其餘明星出來的時候,彈幕仍是會把他們擋住,只有吳亦凡出來的時候,彈幕會繞過他。」聽起來是很是符合粉絲心理學的設計了。
還有一種是拓展一下語義分割裏類別的邊界。好比,能不能分出鏡頭焦距內的像素和焦距外的像素。
這個想法也來自於實際需求:「《延禧攻略》裏,分割模型不光會識別出佔了鏡頭主要位置的主角,和主角一塊兒出現的、角落裏一個在焦外的、徹底虛化了的小太監的背影也會被分割出來。而其實後面這部分是不須要的,分出來反而影響用戶體驗。」換言之,系統真正想要分割的是鏡頭的「焦內」和「焦外」,可是由於如今並無進行這一類特定分割任務的模型,因此就用「有人物出現的部分」做爲「焦內」的指代了。那些指代得沒那麼好的狀況,也仍然是一個須要解決的問題,開發一些新的分割門類,或許是一個解決方案,可是這就不是數萬張精調數據可以就解決的問題了。
而就算是語義分割自己,也還能拓展出不少不同的應用場景,例如,商品的識別,也大有用處。
「好比一個手機廠商贊助了某一個節目,可是它並非咱們平臺的贊助商,咱們就須要把商標打碼,或者把商品抽取出來替換掉。這個工做如今仍是編輯手工完成的。」
除此以外,還有跟蹤算法和分割算法的結合、用於移動端的模型加速與模型壓縮等等……聽起來,技術產品中心的研究員們的工做排期已經排到 8102 年了!
回到編輯部和小夥伴們交流完愛奇藝的作法,一點共同的體會是:彈幕蒙版的最終產品效果很是好,一言以蔽之,能夠說是擺正對模型效果的指望,「量力而行」。
儘管分割模型還只是個正確率 80% 左右的「寶寶」,可是若是不刻意「刁難」它,而是選擇一些不精細分割到頭髮絲也不影響使用的簡單場景,再輔以一系列工程化的作法(例如用識別模型排除場景裏困難的狀況、經過圖形學方法進一步優化分割效果),最終系統仍然能有上佳的成品效果。
雖然深度學習的思想是端到端的,可是須要正視的問題是,現實永遠比訓練集更復雜,在「一步登天」的模型出現以前,把「登天」的過程像「把大象放進冰箱」同樣分紅三步,拿到一個可用的版本後再用迭代的方法解決新問題,是否是也是一個不錯的選擇?