人人皆可變身黃金圣斗士:微視用AI一鍵燃燒小宇宙,還有不同星座可選
那些年關于變身圣斗士的夢想,如今能在騰訊微視 App 就能實現。
「年輕的青銅圣斗士少年們啊,為了大地上的愛與和平,我們將逝去,獻上全部的生命和靈魂,融為一體。就在此刻,燃燒吧,黃金的小宇宙!雅典娜啊,請賜予這黑暗的世界一線光明!」

就是這段話,沒錯,是我們小時候倒背如流的十二黃金圣斗士語錄了。很多人也曾暗中想象,自己能成為這群黃金圣斗士的成員之一。現在,「變身」的機會來了!
在騰訊微視 App,黃金圣斗士鎧甲的特效掛件已經正式上線。這是靜態照片變身后的樣子:

變身的操作方法也非常簡單:用戶只需要在騰訊微視 App 的拍攝頁面選擇「全身換裝圣斗士」特效,再提供一張無遮擋正面照,即可進行黃金圣斗士鎧甲換裝。也可以點擊本文末的「閱讀原文」,一鍵體驗黃金圣斗士變身!

或者在拍攝頁面選擇圣斗士相關特效,按照指示做出相應動作,也能召喚出多個星座的圣斗士:

除了黃金射手座,還有雙子座撒加、處女座沙加、白羊座穆、天秤座童虎…… 哪個是你心目中最厲害的圣斗士?

雙子座圣斗士。

處女座圣斗士。
也許會有人思考:「在動態視頻背景下,如何給畫面主體披上全身的黃金鎧甲呢?」其實,在這一酷炫特效的背后,隱藏著一套復雜的技術方案。微視團隊又是如何解決種種挑戰并將這一技術落地的呢?
第一步:運動捕捉
聽到「運動捕捉」這四個字,很多人也許不太熟悉,但這項技術已經廣泛應用于人們熟悉的領域,比如好萊塢大片制作中的那些驚艷特效,比如體育賽事中的運動員動作分析,再比如身體損傷患者的康復評估等,都有這項技術的幫助。
目前,依賴于慣性、光學傳感器的動作捕捉技術已經比較成熟,可以重建出非常精確的人體三維模型信息。但這種動作捕捉解決方案的成本較高,除了需要在捕捉對象的身體上安裝造價不菲的傳感器,還需要高性能的計算設備對采集到的數據在定制的軟件中進行處理,才能得到最終的結果。
在智能手機早已普及的今天,使用手機端特效增強拍攝效果是短視頻應用中的常見玩法。按照應用類型劃分,這些靠手機 RGB 單目攝像頭進行動作捕捉相關技術可分為:人臉 2D 關鍵點檢測(人臉美顏 / 平面貼紙)、人體 2D 關鍵點檢測(大長腿 / 瘦腰)、人臉 / 頭 3D Mesh 重建(人臉立體貼紙 / 頭套)、人體 3D 關鍵點檢測等。但在「人體 3D Mesh 重建」這方面,業界此前少有成熟的手機端應用,原因主要歸于幾個難點:
缺少大規模高質量的 3D 數據。人體 3D Mesh 數據的采集成本非常高,同時由于設備的限制,很難采集到大規模貼合用戶手機拍攝場景的數據。
人臉近似于「剛體」,有固定的尺寸,不需要考慮形變等因素。而人體屬于「非剛體」,不同的姿態會引起很大的形變,這對視覺技術來說是很大的挑戰。
人臉有相對固定的「特征點」,如眉梢、嘴角等部位,但人體缺乏這樣穩定的特征點,并且拍攝時衣著的變化很大。
人體的深度信息會因為姿態不同發生很大的變化,從二維圖像恢復出三維空間信息本身有很多組解,很大程度上依賴于「先驗信息」才能推測出合理的解,而更多的變化就意味著更難去得到有效的「先驗信息」。
不同人的體型變化很大,加上穿著不同厚度和材質的衣服,又讓體型估計增加了難度。
重建出人體 Mesh 需要同時實現人體檢測、人體 2D/3D 關節點檢測、人體體型檢測、人體姿態和關節旋轉檢測以及相機投影矩陣回歸等多個任務。在手機端計算資源極其有限的情況下,同時完成上述多個任務比較困難。
但得益于近年來手機處理能力的提升,再加上短視頻領域的火爆,這些都大大推動了相關技術的進步,特別是手機端的特效推理引擎技術,輕量化模型技術、移動端的渲染技術等。作為國內頂尖的短視頻平臺,人體檢測技術也是微視團隊一直以來深耕的方向。
相比于其他更簡單玩法的掛件,黃金圣斗士在特效復雜程度、效果質量方面都有著更高的要求,微視團隊所投入的研發精力也更多。盡管短視頻應用中也出現過全身特效的掛件,但一般是貼合度要求較低的蓬松服裝或盔甲,而黃金圣斗士鎧甲需要更修身、更貼合。
為了打造黃金圣斗士鎧甲特效,騰訊微視發布器技術團隊探索出了一套成熟的解決方案。不僅可以打造完美貼合人體的「換裝」,還能在手機上實時運行。在中高端手機上,人體 3D 重建部分可以達到~90 FPS 的處理速度。
制作高質量的 3D 人體 Mesh 數據集
變身黃金圣斗士,首先需要獲取到高質量的 3D 人體 Mesh 重建數據,微視團隊搭建了一套動作捕捉系統,并基于這套系統開發了相應的 Mesh 重建算法。
在硬件層面,微視團隊采用了一種相對較低成本的搭建方案:3 臺 AzureKinect 傳感器,3 個三腳架,再加上數據同步線、USB 延長線和一臺 Windows 電腦即可。

隨后進行簡單的標定,只需要抱著一個棋盤格箱子,在場景中轉一圈,就可以計算出 3 臺相機之間的相對位置和姿態,僅耗時 1 分鐘。這一步的目的是便于后續的數據融合。
接下來開始原始數據的采集與處理。首先借助 AzureKinect 提供的協同(Collaboration)功能將三臺相機的視頻流做同步處理,然后采集 RGBD、深度人體 Mask、人體 3D 關鍵點信息并保存下來。

第三步是對每一臺深度攝像機生成對應的點云數據,根據相機標定的結果,將三臺相機的點云數據進行合成,最終得到統一坐標系下的 3D 點云數據。
最后,將獲取到的原始數據合成為訓練模型所需要的 Mesh 參數。這一步主要基于 Fitting 優化的方法,通過對人體的 Pose、Shape 等參數進行調整迭代,盡量降低重建后人體與 3D 點云數據之間的誤差。微視團隊采用 3D 點位之間的歐式距離(MPJPE)衡量重建效果,整體控制在 20mm 內。

最后,微視團隊共采集了上萬個貼近手機端用戶拍攝內容的視頻數據,從中抽取了幾十萬張視頻幀圖片。其中既有生活中的常見姿態,也包括高抬腿、彎腰、快速蹦跳等高難度動作,以保證數據的豐富性。
3D 人體 Mesh 如何重建?
數據準備階段結束后,微視團隊著手重建人體 3D Mesh。在將視頻拆分成一幀幀的圖片之后,從每張圖片中找到人體所在的區域,然后計算出人體的 2D 關鍵點信息,接著結合前后幀的時序信息估計出關鍵點的深度,即得到人體的 3D 關鍵點坐標,然后結合 2D/3D 以及圖像信息估計出人的體型和 3D 姿態,從而獲得人體在模型坐標系下的 3D Mesh 和相機的投影矩陣。
如下圖所示是 2D/3D 姿態檢測部分的效果:

獲得了 2D/3D 關鍵點信息后,如果要恢復出人體的 Mesh,還要估計兩個重要的信息:人的體型以及關節的 3D 旋轉。人的體型可以理解為人的高矮胖瘦,雖然關鍵點能提供一部分的身材信息,但僅依靠關鍵點很難準確恢復出身材,特別是胖瘦;3D 關鍵點雖然包含了部分的關節夾角信息,但關節還需要包含更多的自由度,特別是旋轉。
當前,人體 3DMesh 重建的方案主要分成 Fitting 和 Deep Learning 兩種。
基于 Fitting 的方法一般基于已有的人體模型,如 SMPL/MANO 等,通過最小化人體模型投影到圖像上的點與已知人體關鍵點的誤差,得到每張圖片的最優模型參數。這種方法的優勢在于能夠得到高精度的人體 Mesh,一些公開數據集(比如 3DPW)都采用這種方法構建數據。
但這種方法的弱點也很明顯:首先是速度太慢,每張圖片都需要迭代至少幾十到上百次,一張圖片的處理往往需要一分鐘到幾分鐘的時間。此外,考慮到體型問題,一些方案直接采用 3D 掃描儀事先掃描出人體,大大提升了數據采集的成本。
基于 Deep Learning 的多數方法同樣需要依賴于人體模型,通過神經網絡估計出人體模型的參數,代表性工作是 VIBE,這類算法通常稱為 model-based 的方法。
這類方法有兩方面的問題,首先可獲取到的數據很少而且拍攝環境局現于實驗室中,雖然一些工作如 Surreal,Human3.6 使用 CG 制作虛擬的 in wild 場景,但這樣的數據跟真實的數據仍然有比較大的差距。第二,前面提到關節的 3D 旋轉很難通過圖像去估計。
相比于 model-based 方案,model-free 方案提供了另外一種思路,這種方法是直接回歸人體 mesh 上的密集 3D 點坐標,并通過在 loss 中增加人體 shape、pose 等先驗信息進行約束。相關的工作主要依賴于圖神經網絡來建模人體不同關節點之間的拓撲結構,這方面的代表工作包括「Pose2Mesh」(https://arxiv.org/abs/2008.09047)。
最終,微視團隊使用 7000 多個頂點和 1.5 萬的面片重建出圖像坐標系下的人體 3D Mesh,從圖像中重建出的 Mesh 需要經過濾波處理去掉抖動,這樣就得到了視頻中的人體 Mesh。效果展示如下圖所示:

后續,渲染引擎將在此人體 Mesh 信息的基礎上給視頻中的人物「穿上」盔甲。
讓黃金鎧甲成為手機端特效
接下來,微視團隊在移動端運行了人體檢測 / 跟蹤、2D 關鍵點檢測、3D 姿態估計、相機投影矩陣估計、3D Mesh 重建整套技術的流程,但他們發現,實現單幀圖像 15ms 以內的處理速度非常困難。這意味著,在移動端的實現和優化上,還需要思考更好的解決方案。
微視團隊從三個方面進行了改進:
1. 網絡 Backbone 結構的設計與優化。結合 HRNet、MobileNet 系列網絡等不同結構的優勢,在大規模的數據上進行了不同結構設計的探索和調參,針對不同計算能力的手機做針對性的設計,保證對不同的機型在速度和效果上達到最佳的平衡。
2. 算法流程改進。對整個的算法串行的流程進行優化,整個人體檢測、2D 關鍵點、3D 關鍵點、人體 Mesh、相機姿態估計全部調整為并行實現,極大提升了算法整體的效率。
3. 移動端工程優化。基于騰訊優圖團隊提供的 TNN 移動端深度推理框架,實現了移動端模型的高效推理。對于特定的算子和矩陣運算,微視團隊與優圖 TNN 團隊合作進行了針對性的底層優化,保證算法的高效運行。同時,對于模型的后處理也進行了算法層面的優化,在保證不使用影響體驗的精度損失上獲得了更極致的運行效率。
針對不同的拍攝光照、人體的姿態、不同的體型、衣著、拍攝距離、拍攝角度以及不同拍攝背景中發現的 Bad Case,微視團隊從訓練方式、參數調整、Loss 函數設計、數據更新與優化等方面進行了更多深度的研究,解決了貼合度、檢測穩定性等多方面拍攝中的常見問題。同時,進一步壓縮了模型計算開銷,將單幀的總體處理時長從 15ms 優化到了當前的 11ms。
經過上述一系列的優化工作后,微視團隊基于重建的人體 3D Mesh ,為其量身定制了一套 AttachToBody 的渲染方案,目標有兩個:
能夠保證服裝模型在三維世界和二維圖像上位置和旋轉正確,貼合人體表面;
能夠提供 PBR(基于物理的渲染) 每個環節需要的正確信息,確保高質量的渲染效果。
同時為了項目需要,技術團隊在原有引擎基礎上開發了自定義材質系統,為玩法提供了更自由靈活的材質與光照解決方案。借助于強大的流程控制和腳本系統,技術團隊很好地將人體重建、服飾真實感渲染、骨骼動畫、轉場特效等要素串聯在一起,提供了完整流暢的視效表達。
此外,部分機型上啟用了 IBL、SSAO 等技術,以提升整體的光影效果。為了提升在低端機型上的整體效果覆蓋率,微視團隊采取了 Material Capture 材質捕捉技術方案,用較小的計算成本擬合出近似 PBR 的真實感效果。同時在一些高頻且量大的矩陣計算中啟用了 NEON 加速方案,整體降低了數學計算耗時。
基于上述所有工作,微視的設計團隊與技術團隊深入協作。首先明確直觀的預期效果,明確優化方向,給出優化建議;此外輔助優化引擎渲染能力,使最終效果更接近設計師預期。
在細節打磨和工具支持方面,依托 Light Studio 對 3D 場景強大的編輯和可視化能力,以編輯器組件的方式提供給設計同學完整的工具鏈支持,包括對衣服 SRT 數據的精準調整,對環境光 / 衣服材質主要參數的可視調整等。
黃金圣斗士鎧甲特效的研發歷時 10 個月,最初溝通的預期效果如下圖:

通過設計團隊、算法團隊和特效團隊多輪的效果打磨,衣服貼合度與跟隨性,身體比例協調性,衣服視效等方面均達到了理想水平。引擎實現效果如下圖:

未來,微視發布器技術團隊將持續圍繞三維人體重建來進行創意特效設計與研發。在算法方面會繼續在 3D 重建的精度上持續性的提升,解決更多拍攝場景的需求。業務方面,會結合相關圖形圖像技術,在人體形變,人體驅動虛擬角色等方面有進一步的突破,為用戶提供更酷炫好玩的特效新體驗。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。
LCD顯示屏相關文章:lcd顯示屏原理
lcd相關文章:lcd原理






