文 / 李曉波
整理 / LiveVideoStack
大家好,我是李曉波(籬悠),目前在淘寶任職進階算法專家。本次分享将從設計原則與整體架構、基礎算法和上層應用三個部分來介紹手淘視訊業務在用戶端上實時視覺算法領域的探索。

1. 設計原則與整體架構
1.1 手淘多媒體算法整體鍊路
手淘多媒體算法分為視訊生産和使用者消費兩部分,上圖左半部環更多是由廣告和搜尋團隊進行收集,算法團隊主要負責右半部環中視訊智能生産、内容感覺及内容了解部分,當算法能夠解決進階語義了解和結構化資訊時,就可以結合左半部環内容結合起來做視訊的個性化分發。
1.2 手淘多媒體算法面臨的挑戰
手淘多媒體算法目前面臨業務、技術和業界進展變化(環境)三方面的挑戰,應對這些挑戰手淘分别在效率、體驗和成本三個方面做出控制和改變。
1.3 手淘用戶端上實時視覺算法庫
1.3.1 模型設計與壓縮
在端上做算法面臨計算資源和記憶體受限的問題,移動端上存在很多實時互動的操作,例如視訊的幀率一般都是25FPS,如果算法對視訊處理的速度很慢,那麼使用者實時互動的體驗就無法得到保障。近幾年深度學習在伺服器上取得了很大的進展,但是由于計算資源和記憶體受限導緻性能上存在差距,無法照搬深度學習的模型來解決移動端遇到的問題。關于手淘用戶端上的實時視覺算法庫有幾個大的設計原則,第一個原則是模型的設計和壓縮,模型本身存在部分備援資訊,對備援資訊進行删減隻是減少了存儲和傳輸過程的成本,并沒有改變計算成本。在對模型進行量化、剪枝和哈弗曼編碼之後,壓縮率在10-20倍之間,但想要使得計算量減少,還需要采取一些特殊結構。比如最早的矩陣在分解時可以把二維矩陣拆成兩個一維矩陣進行分解,在深度學習裡存在一些3×3或5×5的濾波器深度可分離卷積,結合這部分技術加以運用。另外一部分,在設計整個用戶端的過程中不可避免要對stage進行減少,在層次更深的同時縮減寬度,使得非線性連接配接增多,這其中需要AutoML來替代人工手動實作高效的模型建構和超參數調整。
1.3.2 多任務學習
整個視訊處理過程中如果遇到多任務情況,算法模型均采用端到端來進行,計算資源會産生備援。比如在人臉識别計算中,關鍵點和表情計算時都會傳入人臉圖檔,這時就會産生資源浪費的現象。視訊處理多任務情況時一定會有多任務學習架構,基于多任務降低備援計算量。
1.3.3 小樣本學習
樣本對于深度學習和視訊處理過程是非常重要的,不論公司規模大小,在對标注樣本方面的經費都是有限的,或是受到成本限制和樣本擷取難度的影響,無法滿足充足的樣本條件。如果在樣本充足、标注預算有限的情況下,可以采用主動學習的方式對擷取難度較高的樣本進行标注,以此達到降低成本的目的。在樣本擷取難度較大的情況下,可以采用類似任務模型和小量任務相關樣本做進一步的關聯,像OCR或其他的字元識别軟體在對字型進行識别時,不可能對所有字型進行采集,通常采用GAN網絡或者其他技術去生成樣本,這些模型會在提升識别精度和準确度的同時降低計算成本。
1.4 PixelAI的整體架構
PixelAI與手淘業務域直接相關,架構由業務中抽象而成,所有在端上實時運作的算法一定要有一個實時運作的深度學習可推理架構,在阿裡内部叫AliNN,騰訊也有類似的開源架構叫做NCN。在3D渲染方面阿裡内部在使用T3D引擎,Unity 3D也是同樣的效果,同時阿裡對于OPENCY的依賴性也比較大。
1.4.1 PixelAI内涵與外延
基礎算法包括人臉檢測、人形分割、手勢識别、姿态識别、視覺跟蹤、場景分類(分類、定位網絡)和圖像處理(銳化、美顔)子產品,基于底層算法可以泛化出上層的内容。比如人臉檢測拿到的106/240個點,這些點的資料需要進一步抽象成面部表情和動作再輸出給上層做出反應。
1.4.1 PixelAI的資料體系
由于手淘的業務域是以直播和短視訊為主,手淘基于業務域建構了以人體為中心,手勢領域、人臉領域、人體姿态和人形分割四個分類的資料體系。
2. 基礎算法
2.1 AliH265
基礎算法的第一部分,阿裡做了一個在端上可以實時對720視訊進行處理的AliH65算法,應用深度學習來解決H.265中對于CPU的劃分問題,提升H.265的編碼效率。
2.2 畫質增強
使用者拍攝過程中出現模糊、光照條件不好、抖動情況都需要做實時的分層算法來實作畫質增強的效果。
2.3 人形分割
人形分割基本分為兩步,第一步是通過深度學習找到人形的邊界,基礎網絡FCN主要針對雲上大模型,通過量化裁剪、深度卷積可分類、AutoML搜尋超參設計出可以在端上實時運作的小模型。
在得到初步輪廓之後,就可以進行第二步對人形基于image matting的精細化摳圖。
在實作人形分割後對于業務層面能夠實作人像分割、頭發分割及染發應用、彈幕穿人和人臉分割等功能。
2.4 人體姿态估計
人體Pose模型加速有8個改進點,模型層面能夠減少Stage數量和卷積層參數,提供新的Loss函數和新的主幹網絡。資料層面能夠對資料進行預處理、縮小圖檔尺寸。工程層面能夠實作底層架構加速和背景處理代碼加速。
2.5 成像品質
美顔是成像品質中比較重要的功能,在拿到使用者輸入的2D視訊後首先進行人臉檢測和關鍵性檢測,人臉檢測和關鍵性檢測的資料會将使用者2D的資料重新映射成3D模型,在3D模型上進行人臉調整後再重新映射回2D關鍵點,新生成的關鍵點與初始關鍵點進行三角抛分,最後通過映射得到最終的美顔效果。
2.6 人臉檢測
人臉SDK可細分為人臉檢測、人臉關鍵點、人臉屬性和人臉動作四大類。
上圖主要展示人臉檢測功能中所用到的技術。檢測類的網絡模型并不多,人臉檢測是由經典Faster RCNN檢測網絡中根據之前提到的原則設計方案泛化到端上的小模型。人臉關鍵點最早是像SDM一類的技術,但在深度學習領域都是端到端的,先根據關鍵點檢測框的位置,在框中用小網絡去回歸關鍵點。做人臉檢測需要全圖像搜尋,關鍵點回歸隻是在小的圖像上進行回歸,是以檢測和關鍵點回歸在執行速度上是完全不同的。為了控制人臉檢測的耗時問題,阿裡在首幀檢測中使用全圖像搜尋,之後十幀通過跟蹤網絡進行關鍵點回歸,圖像在短時間内出現較大幅度變化時再使用全圖像搜尋,如此循環執行使檢索時間縮短到15ms以内。在跟蹤過程中涉及到單目标跟蹤和多目标跟蹤的問題,單目标跟蹤會有一些基于相關濾波的算法,比如KCF等高效實作,多目标跟蹤時會有一些基于深度學習的網絡模型對人像做出各種各樣的預測,根據不同場景來對模型進行不同的設計。
當人臉屬性、關鍵點、表情動作和姿态都能夠識别出來時,就可以對表情進行上層的3D拟合。
3. 上層應用
3.1 PixelAI應用
3.1.1 碼率優化
碼率優化是在畫質固定的情況下通過AI和視訊編解碼結合來降低碼流。要保證畫質不變就一定要做無源參考體系的評價系統,因為視訊生産和編碼過程中可以保證視訊品質不變,但無法預測使用者上傳到伺服器側的視訊品質。編碼過程中無法計算視訊的PSR碼,小資料集上的證明無法保證在泛化的大資料上有效,是以品質分布不變指的是全網視訊生産的無源視訊平均分布不變。
3.1.2 雙十一笑臉大作戰
在阿裡第一次做人臉識别子產品時,從開源大模型到滿足設計需求的小模型,開發周期是六個月左右,但在之後開發相同模型支援上層業務時,用時便大大縮短。在笑臉大作戰的功能開發過程中,網絡模型使用人臉檢測模型,唯一的改變是對識别笑臉通過L-Softmax Loss進行分類,L-Softmax Loss的主要功能是拉大類間距離和縮小類内距離,由此提高分類正确率,減少誤判。
3.1.3 3D照片探索項目
PixelAI在之前擷取的内容全部是2D的RGB資訊,随着雙攝以及多攝像頭技術在移動端上的普及,賦予圖像在深度方面越來越多的資訊,深度資訊的獲得、傳輸和渲染都是團隊目前需要解決的問題。所有的資料分為存量資料和增量資料,增量資料可以通過移動端或者其它裝置擷取深度圖。目前淘寶上有幾百億的存量資料,其中大部分商品資訊都是由單目裝置拍攝,如何恢複圖像的深度資訊也是手淘團隊一直在關注的方向。
上圖中标紅的問題還未進入開發階段,由于相機參數、角度、光照等因素不同,在内參外參都不得知的情況下想要對深度資訊進行恢複,這其中充滿了難點和挑戰。手淘團隊目前的解決方案是從增量資訊開始對深度圖檔和RGB圖檔進行有機的壓縮,這樣做面臨着兩個問題,第一,從H.264就開始出現一些對深度的壓縮标準,RGB的壓縮有另一套标準,兩種标準在同一檔案中如何進行更高效的有機壓縮。第二,獲得深度資訊之後,在應用如何對深度資訊進行渲染。在VR、AR技術受到很高關注度期間,采取多視訊模組化之後通過點雲恢複的方法完成3D模組化,但空洞無法避免的問題使得這個方法沒辦法達到規模化生産,形成規模化的前提是要有一套沒有人工介入的完全自動化的解決方案。在借鑒Facebook關于2.5D圖檔(有限視角下對3D模型的建構)的概念之後,手淘團隊也通過将具有簡單視角的深度圖和RGB圖結合的方式,建構出單視角下的3D模型,最後将模型與使用者相機姿态結合起來,做出在定點視角下移動的效果。
————————————————
版權聲明:本文為CSDN部落客「LiveVideoStack_」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:
https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/97333032「視訊雲技術」你最值得關注的音視訊技術公衆号,每周推送來自阿裡雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。