AI 加持實時互動|ZegoAvatar 面部表情隨動技術解析

ZEGO即構開發者發表於2022-06-10

01 AI"卷" 進實時互動

 

2021 年,元宇宙概念席捲全球,國內各大廠加速賽道佈局,通過元宇宙為不同的應用場景的相關內容生態進行賦能。針對 “身份”、“沉浸感”、“低延遲”、“隨時隨地” 這四個元宇宙核心基礎,ZEGO 即構科技基於互動智慧的業務邏輯,提出並落地了 ZegoAvatar 解決方案,將 AI 視覺技術應用至虛擬形象,完成了業務和技術的無縫銜接。

 

圖 1:Avatar 產品 AI 能力矩陣

 

ZegoAvatar 基礎能力包括:面部表情隨動、語音驅動表情、AI 人臉特徵識別(AI 捏臉)、骨骼捏臉等,涉及的 AI 技術點包括人臉檢測、人臉跟蹤、人臉關鍵點檢測、頭部姿態檢測、3D 人臉重建、AI 特徵識別等。

 

本文重點針對 ZegoAvatar 中面部表情隨動這一技術點進行解讀。

 

 

02 ZegoAvatar 面部表情隨動效果展示

 

在技術分享前首先讓我們通過一組具體的數字和視訊來看下 ZegoAvatar 的面部表情隨動效果,我們分別在配置從低到高四種不同安卓裝置上進行實際推理開銷測試,取 1000 次推理結果求平均:

 

圖 2:測試資料

 

從上述的資料中可以看到,ZegoAvatar 在不同機型上均以極低的延遲實現了實時推理的效果,在保證表情精準穩定的同時,為使用者帶來了流暢極致的使用體驗。可以看下下方的面部表情隨動效果:

 

ZegoAvatar 面部表情隨動效果展示

 

 

03 面部表情隨動技術方案解析

 

面部表情捕捉(Facial Expression Capture)技術被廣泛應用於電影、遊戲、動漫製作等領域,而目前的面部動作捕捉依託於相機或鐳射掃描器將人臉轉換為一系列引數資料,然後用於生成計算機圖形、電影、遊戲或實時化身的計算機動畫。

 

與捕捉由關節點構成、較為穩定的人體動作相比,面部表情更為細微複雜,因此對資料精度的要求也更高。現在主流的 3D 面部表情捕捉主要有基於相機陣列和基於結構光兩種方法,存在拍攝難度大,裝置成本高的問題。

 

圖 3:表情捕捉示意圖

 

圖 4:尤拉角示意圖

 

ZegoAvatar 技術方案中的移動端面部表情隨動是指通過移動端攝像頭進行人臉檢測以及跟蹤,通過人臉位置、關鍵點資訊定位出人臉在螢幕上的位置,並實時輸出包含面部、舌頭、眼球在內的 52 種基礎面部表情維度的線性組合以及頭部姿態的三個尤拉角,最後匯入虛擬形象進行實時渲染驅動。

 

目前 ZegoAvatar 面部表情隨動在不同效能的硬體裝置上均實現了低延遲的落地效果,通過實時的虛實互動,為使用者帶來沉浸式的體驗。本文將向大家詳細解讀 ZegoAvatar 的面部表情隨動的演算法整體架構以及如何在落地過程中做到面部表情隨動效果的精確與自然。

 

ZegoAvatar 的移動端面部表情隨動的技術方案分為模型訓練部署推理兩部分。

 

在訓練過程,我們設計了一個輕量化的全卷積神經網路,包括網路骨幹(Backbone)和三個不同的任務分支(如圖 5)。其中 Backbone 是由標準卷積 + MobileNetV2 Block + MobileViT Block 組成(如圖 6),多個輸出分支為:3D 面部特徵點定位、面部表情識別、頭部尤拉角姿態估計,其中不同的分支負責不同的任務。我們通過多工學習的思想和遷移學習的技巧,給模型送入人臉特徵和表情以及尤拉角標籤,輸出穩定的相關的對映關係。

 

圖 5:網路結構示意圖

 

圖 6:網路骨幹(Backbone)示意圖

 

圖 7:訓練和推理流程示意圖

 

 

1、訓練模組

 

根據資料採集模組得到表情資料,並通過資料矯正和增強後訓練得到 AI 表情模型,具體分為以下幾個部分:

 

a、 資料採集:針對業務需求,我們開發了一套可用於捕捉人臉和動作的資料採集軟體,用於       獲取表情和尤拉角以及 3D 特徵點位置資料;

 

b、模型訓練:基於多工學習和遷移學習的思想,我們嘗試了多種輕量級的網路結構和訓練策略,設計不同的任務分支如特徵點定位和頭部姿態估計以及面部表情檢測,利用任務之間的相關性輔助目標任務學習。

 

c、資料增強:針對落地場景,設計了定製化的資料增強流程,豐富了訓練資料的模式;

 

d、資料矯正:對採集的圖片依次進行人臉檢測,面部特徵點對齊,通過仿射變換得到矯正後的圖片;

 

對模型進行訓練,模型分為三個分支,損失函式組成如下:

 

 

 

2、推理模組

 

推理模組根據輸入資料進行推理,具體分為以下幾個部分:

 

a、資料輸入和矯正:使用者使用時解析輸入視訊流,對圖片中的人臉進行檢測、跟蹤以及面部特徵點定位,然後計算出人臉位置與標準人臉之間的仿射矩陣,從而通過仿射變換得到矯正後的影像;

 

b、模型推理:對訓練好的 AI 模型,進行剪枝和量化,在 FP16 半精度下,在移動端進行推理加速部署,最後將矯正後的影像送入模型,推理得到表情向量和尤拉角向量;

 

c、表情驅動和渲染:將表情向量和尤拉角向量送入驅動渲染模組解析,實時驅動虛擬人物形象。

 

 

04 “精確而自然” 的效果難點攻克

 

本技術旨在解決互動智慧領域移動端虛擬人物表情實時驅動問題,在研發過程中需要解決以下問題:

 

  • 移動端推理的實時性

  • 面部表情和頭部姿態的穩定性

  • 不同使用者在不同使用場景的魯棒性

  • 各個表情的協調性

 

這四個維度層層遞進,而如何做到同時兼顧,是貫穿整個專案週期的重難點。

 

首先,受限於移動端的計算資源,不同裝置的使用者要正常體驗,必須要做到各種機型上的低延遲,因此落地需要做到極致的輕量化,這對模型設計和部署有較高要求。

 

其次,實際體驗過程中,使用者的使用方式、使用者場景光照、使用者鏡頭髒汙或遮擋都會影響模型的表現,如何在這些因素的綜合作用下,讓模型又快又穩的輸出面部表情和頭部姿態,是 ZegoAvatar 走向商業化不可迴避的難題。

 

最後,考慮到不同的表情之間既有獨立性又互相影響,如何讓虛擬形象的表情更加擬人化,讓使用者的使用更有沉浸感,既是一個有挑戰性的技術挑戰,也是一個有價值的業務問題。

 

基於以上想法,我們設計了以下技術方案:

 

1、推理的實時性

 

一方面設計模型時遵循輕量化的原則,比如使用深度可分離卷積(Depthwise separable convolution)以及更少的卷積層數和通道數,可以減少模型的引數量,從而降低推理的計算開銷。

 

這裡補充一下一般的卷積和深度可分離卷積的示意圖,並對計算量優化進行簡單分析:

 

 圖 8

 

深度可分離卷積將一般的卷積過程分為了 depthwise convolution(逐深度卷積)和 pointwise convolution(逐點卷積),略犧牲精度的情況下,計算量大幅下降,速度更快,模型更小。

 

 

由此可見,深度可分離卷積可以顯著減少一般卷積的計算量。

 

另一方面落地時,我們基於移動端推理引擎進行模型轉換和部署,主要分為運算元轉換和推理優化兩個部分。

 

 

a、運算元轉換:主要通過運算元融合、運算元替代、模型壓縮、佈局調整等方式對模型中的圖進行基本的優化操作;

 

b、優化推理:主要進行運算元級的優化包括:卷積和反摺積中應用 Winograd 演算法、在矩陣乘法中應用 Strassen 演算法、低精度計算、手寫彙編、多執行緒優化、記憶體複用等。

 

此外我們通過分析模型在不同網路層的的計算量分佈,對模型存在計算瓶頸的卷積層進一步剪枝,在 FP16 半浮點數精度下,進行模型轉換,在保證模型表現的同時,顯著的降低了推理開銷,並減少了模型的尺寸。

 

2、模型精確性和魯棒性

 

首先是資料採集階段,基於 ZEGO 自身業務,自主開發了一套資料採集軟體,並通過指令碼對每一批資料進行視覺化檢查,確保原始資料的正確性

 

在模型訓練階段,嘗試了多種模型結構和訓練策略,包括不同的輸入形式和分支組成。最後採用 3D 面部特徵點分支和麵部表情分支與頭部尤拉角分支結合的方式,利用多工學習思想和遷移學習的訓練技巧,通過特徵點資訊輔助表情和尤拉角輸出,得到精確的模型表現。

 

在最後落地時,由於使用者和場景的不同,我們遇到了模型泛化性(Generalization)問題,這也是幾乎所有計算機視覺任務落地時都會遇到的問題。

 

 

圖 9:泛化性、欠擬合(underfitting)、過擬合(overfitting)示意圖

 

泛化性指模型經過訓練後,應用到新資料並做出準確預測的能力。一個模型在訓練資料上如果被訓練得太好往往會導致過擬合,以致泛化性降低。

 

針對此問題,一方面從網路結構和訓練策略出發,增加必要的元件,比如一定強度的 DropOut,損失函式正則項,設計 EarlyStopping 機制,另一方面我們針對出現的場景問題,比如 “眼鏡反光”,“陰陽臉”,“鏡頭模糊髒汙” 等,進行多輪測試後去追溯和定位問題,然後設計了針對性的資料增強方案,通過完備性的消融實驗(ablation experiment),確定了最優的流程和相應超引數,在訓練過程中引入相應的資料模式,極大的提升了模型的精確性和魯棒性,從而解決了這一難題。

 

3、表情的協調性

 

如何讓虛擬形象不同的表情之間自然的聯動,這是整個團隊協作解決的問題。

 

一方面演算法在網路 Backbone 的設計考量上,我們引入了 MobileViT 模組,因為儘管 CNN 網路在視覺任務上具有引數少效果好以及空間感知的優勢,然而這種空間感知是區域性的,全域性感知可以通過注意力機制和 transformer 實現,然而普通的 transformer 無法部署在移動端,MobileViT 可以將 ViT 與 MobileNetV2 的結合起來,兼顧全域性資訊和輕量化的需求,讓模型的推理效果又快又準。

 

另一方面,開發和設計同學持續的解決虛擬形象的各種材質渲染難題,最後才有了現在 ZegoAvatar 精確而自然的隨動效果。

 

 

 ZEGO 

 

ZegoAvatar 面部表情隨動是 ZEGO 基於已有業務,通過 AI 結合元宇宙賽道的一次成功的嘗試和突破,我們從資料採集方案到模型架構設計再到訓練策略整個演算法閉環,以及虛擬形象和相關元件的開發實現了完全的自研,在實際的落地效果上,我們做到了行業領先水平。

 

對於落地遇到的各種問題,我們從本質出發,設計針對性的方案進行解決,整個專案用較少的資料,取得了很好的效果。基於 ZegoAvatar,不同業務切入點的新的演算法開發也在進行中,後續會有更多新的專案孵化,ZEGO 即構科技將進一步在互動智慧領域不斷實現技術革新與突破,在元宇宙浪潮中揚帆起航

 

獲取更多幫助
獲取 SDK 開發文件、demo,可訪問 即構文件中心
獲取更多商務活動熱門產品,可提交 資訊聯絡商務
註冊即構 ZEGO 開發者帳號,快速開始;

相關文章