人人皆可變身黃金圣斗士:微視用AI一鍵燃燒小宇宙,還有不同星座可選
那些年關(guān)于變身圣斗士的夢(mèng)想,如今能在騰訊微視 App 就能實(shí)現(xiàn)。
「年輕的青銅圣斗士少年們啊,為了大地上的愛與和平,我們將逝去,獻(xiàn)上全部的生命和靈魂,融為一體。就在此刻,燃燒吧,黃金的小宇宙!雅典娜啊,請(qǐng)賜予這黑暗的世界一線光明!」
就是這段話,沒錯(cuò),是我們小時(shí)候倒背如流的十二黃金圣斗士語(yǔ)錄了。很多人也曾暗中想象,自己能成為這群黃金圣斗士的成員之一?,F(xiàn)在,「變身」的機(jī)會(huì)來(lái)了!
在騰訊微視 App,黃金圣斗士鎧甲的特效掛件已經(jīng)正式上線。這是靜態(tài)照片變身后的樣子:
變身的操作方法也非常簡(jiǎn)單:用戶只需要在騰訊微視 App 的拍攝頁(yè)面選擇「全身?yè)Q裝圣斗士」特效,再提供一張無(wú)遮擋正面照,即可進(jìn)行黃金圣斗士鎧甲換裝。也可以點(diǎn)擊本文末的「閱讀原文」,一鍵體驗(yàn)黃金圣斗士變身!
或者在拍攝頁(yè)面選擇圣斗士相關(guān)特效,按照指示做出相應(yīng)動(dòng)作,也能召喚出多個(gè)星座的圣斗士:
除了黃金射手座,還有雙子座撒加、處女座沙加、白羊座穆、天秤座童虎…… 哪個(gè)是你心目中最厲害的圣斗士?
雙子座圣斗士。
處女座圣斗士。
也許會(huì)有人思考:「在動(dòng)態(tài)視頻背景下,如何給畫面主體披上全身的黃金鎧甲呢?」其實(shí),在這一酷炫特效的背后,隱藏著一套復(fù)雜的技術(shù)方案。微視團(tuán)隊(duì)又是如何解決種種挑戰(zhàn)并將這一技術(shù)落地的呢?
第一步:運(yùn)動(dòng)捕捉
聽到「運(yùn)動(dòng)捕捉」這四個(gè)字,很多人也許不太熟悉,但這項(xiàng)技術(shù)已經(jīng)廣泛應(yīng)用于人們熟悉的領(lǐng)域,比如好萊塢大片制作中的那些驚艷特效,比如體育賽事中的運(yùn)動(dòng)員動(dòng)作分析,再比如身體損傷患者的康復(fù)評(píng)估等,都有這項(xiàng)技術(shù)的幫助。
目前,依賴于慣性、光學(xué)傳感器的動(dòng)作捕捉技術(shù)已經(jīng)比較成熟,可以重建出非常精確的人體三維模型信息。但這種動(dòng)作捕捉解決方案的成本較高,除了需要在捕捉對(duì)象的身體上安裝造價(jià)不菲的傳感器,還需要高性能的計(jì)算設(shè)備對(duì)采集到的數(shù)據(jù)在定制的軟件中進(jìn)行處理,才能得到最終的結(jié)果。
在智能手機(jī)早已普及的今天,使用手機(jī)端特效增強(qiáng)拍攝效果是短視頻應(yīng)用中的常見玩法。按照應(yīng)用類型劃分,這些靠手機(jī) RGB 單目攝像頭進(jìn)行動(dòng)作捕捉相關(guān)技術(shù)可分為:人臉 2D 關(guān)鍵點(diǎn)檢測(cè)(人臉美顏 / 平面貼紙)、人體 2D 關(guān)鍵點(diǎn)檢測(cè)(大長(zhǎng)腿 / 瘦腰)、人臉 / 頭 3D Mesh 重建(人臉立體貼紙 / 頭套)、人體 3D 關(guān)鍵點(diǎn)檢測(cè)等。但在「人體 3D Mesh 重建」這方面,業(yè)界此前少有成熟的手機(jī)端應(yīng)用,原因主要?dú)w于幾個(gè)難點(diǎn):
缺少大規(guī)模高質(zhì)量的 3D 數(shù)據(jù)。人體 3D Mesh 數(shù)據(jù)的采集成本非常高,同時(shí)由于設(shè)備的限制,很難采集到大規(guī)模貼合用戶手機(jī)拍攝場(chǎng)景的數(shù)據(jù)。
人臉近似于「剛體」,有固定的尺寸,不需要考慮形變等因素。而人體屬于「非剛體」,不同的姿態(tài)會(huì)引起很大的形變,這對(duì)視覺技術(shù)來(lái)說(shuō)是很大的挑戰(zhàn)。
人臉有相對(duì)固定的「特征點(diǎn)」,如眉梢、嘴角等部位,但人體缺乏這樣穩(wěn)定的特征點(diǎn),并且拍攝時(shí)衣著的變化很大。
人體的深度信息會(huì)因?yàn)樽藨B(tài)不同發(fā)生很大的變化,從二維圖像恢復(fù)出三維空間信息本身有很多組解,很大程度上依賴于「先驗(yàn)信息」才能推測(cè)出合理的解,而更多的變化就意味著更難去得到有效的「先驗(yàn)信息」。
不同人的體型變化很大,加上穿著不同厚度和材質(zhì)的衣服,又讓體型估計(jì)增加了難度。
重建出人體 Mesh 需要同時(shí)實(shí)現(xiàn)人體檢測(cè)、人體 2D/3D 關(guān)節(jié)點(diǎn)檢測(cè)、人體體型檢測(cè)、人體姿態(tài)和關(guān)節(jié)旋轉(zhuǎn)檢測(cè)以及相機(jī)投影矩陣回歸等多個(gè)任務(wù)。在手機(jī)端計(jì)算資源極其有限的情況下,同時(shí)完成上述多個(gè)任務(wù)比較困難。
但得益于近年來(lái)手機(jī)處理能力的提升,再加上短視頻領(lǐng)域的火爆,這些都大大推動(dòng)了相關(guān)技術(shù)的進(jìn)步,特別是手機(jī)端的特效推理引擎技術(shù),輕量化模型技術(shù)、移動(dòng)端的渲染技術(shù)等。作為國(guó)內(nèi)頂尖的短視頻平臺(tái),人體檢測(cè)技術(shù)也是微視團(tuán)隊(duì)一直以來(lái)深耕的方向。
相比于其他更簡(jiǎn)單玩法的掛件,黃金圣斗士在特效復(fù)雜程度、效果質(zhì)量方面都有著更高的要求,微視團(tuán)隊(duì)所投入的研發(fā)精力也更多。盡管短視頻應(yīng)用中也出現(xiàn)過(guò)全身特效的掛件,但一般是貼合度要求較低的蓬松服裝或盔甲,而黃金圣斗士鎧甲需要更修身、更貼合。
為了打造黃金圣斗士鎧甲特效,騰訊微視發(fā)布器技術(shù)團(tuán)隊(duì)探索出了一套成熟的解決方案。不僅可以打造完美貼合人體的「換裝」,還能在手機(jī)上實(shí)時(shí)運(yùn)行。在中高端手機(jī)上,人體 3D 重建部分可以達(dá)到~90 FPS 的處理速度。
制作高質(zhì)量的 3D 人體 Mesh 數(shù)據(jù)集
變身黃金圣斗士,首先需要獲取到高質(zhì)量的 3D 人體 Mesh 重建數(shù)據(jù),微視團(tuán)隊(duì)搭建了一套動(dòng)作捕捉系統(tǒng),并基于這套系統(tǒng)開發(fā)了相應(yīng)的 Mesh 重建算法。
在硬件層面,微視團(tuán)隊(duì)采用了一種相對(duì)較低成本的搭建方案:3 臺(tái) AzureKinect 傳感器,3 個(gè)三腳架,再加上數(shù)據(jù)同步線、USB 延長(zhǎng)線和一臺(tái) Windows 電腦即可。
隨后進(jìn)行簡(jiǎn)單的標(biāo)定,只需要抱著一個(gè)棋盤格箱子,在場(chǎng)景中轉(zhuǎn)一圈,就可以計(jì)算出 3 臺(tái)相機(jī)之間的相對(duì)位置和姿態(tài),僅耗時(shí) 1 分鐘。這一步的目的是便于后續(xù)的數(shù)據(jù)融合。
接下來(lái)開始原始數(shù)據(jù)的采集與處理。首先借助 AzureKinect 提供的協(xié)同(Collaboration)功能將三臺(tái)相機(jī)的視頻流做同步處理,然后采集 RGBD、深度人體 Mask、人體 3D 關(guān)鍵點(diǎn)信息并保存下來(lái)。
第三步是對(duì)每一臺(tái)深度攝像機(jī)生成對(duì)應(yīng)的點(diǎn)云數(shù)據(jù),根據(jù)相機(jī)標(biāo)定的結(jié)果,將三臺(tái)相機(jī)的點(diǎn)云數(shù)據(jù)進(jìn)行合成,最終得到統(tǒng)一坐標(biāo)系下的 3D 點(diǎn)云數(shù)據(jù)。
最后,將獲取到的原始數(shù)據(jù)合成為訓(xùn)練模型所需要的 Mesh 參數(shù)。這一步主要基于 Fitting 優(yōu)化的方法,通過(guò)對(duì)人體的 Pose、Shape 等參數(shù)進(jìn)行調(diào)整迭代,盡量降低重建后人體與 3D 點(diǎn)云數(shù)據(jù)之間的誤差。微視團(tuán)隊(duì)采用 3D 點(diǎn)位之間的歐式距離(MPJPE)衡量重建效果,整體控制在 20mm 內(nèi)。
最后,微視團(tuán)隊(duì)共采集了上萬(wàn)個(gè)貼近手機(jī)端用戶拍攝內(nèi)容的視頻數(shù)據(jù),從中抽取了幾十萬(wàn)張視頻幀圖片。其中既有生活中的常見姿態(tài),也包括高抬腿、彎腰、快速蹦跳等高難度動(dòng)作,以保證數(shù)據(jù)的豐富性。
3D 人體 Mesh 如何重建?
數(shù)據(jù)準(zhǔn)備階段結(jié)束后,微視團(tuán)隊(duì)著手重建人體 3D Mesh。在將視頻拆分成一幀幀的圖片之后,從每張圖片中找到人體所在的區(qū)域,然后計(jì)算出人體的 2D 關(guān)鍵點(diǎn)信息,接著結(jié)合前后幀的時(shí)序信息估計(jì)出關(guān)鍵點(diǎn)的深度,即得到人體的 3D 關(guān)鍵點(diǎn)坐標(biāo),然后結(jié)合 2D/3D 以及圖像信息估計(jì)出人的體型和 3D 姿態(tài),從而獲得人體在模型坐標(biāo)系下的 3D Mesh 和相機(jī)的投影矩陣。
如下圖所示是 2D/3D 姿態(tài)檢測(cè)部分的效果:
獲得了 2D/3D 關(guān)鍵點(diǎn)信息后,如果要恢復(fù)出人體的 Mesh,還要估計(jì)兩個(gè)重要的信息:人的體型以及關(guān)節(jié)的 3D 旋轉(zhuǎn)。人的體型可以理解為人的高矮胖瘦,雖然關(guān)鍵點(diǎn)能提供一部分的身材信息,但僅依靠關(guān)鍵點(diǎn)很難準(zhǔn)確恢復(fù)出身材,特別是胖瘦;3D 關(guān)鍵點(diǎn)雖然包含了部分的關(guān)節(jié)夾角信息,但關(guān)節(jié)還需要包含更多的自由度,特別是旋轉(zhuǎn)。
當(dāng)前,人體 3DMesh 重建的方案主要分成 Fitting 和 Deep Learning 兩種。
基于 Fitting 的方法一般基于已有的人體模型,如 SMPL/MANO 等,通過(guò)最小化人體模型投影到圖像上的點(diǎn)與已知人體關(guān)鍵點(diǎn)的誤差,得到每張圖片的最優(yōu)模型參數(shù)。這種方法的優(yōu)勢(shì)在于能夠得到高精度的人體 Mesh,一些公開數(shù)據(jù)集(比如 3DPW)都采用這種方法構(gòu)建數(shù)據(jù)。
但這種方法的弱點(diǎn)也很明顯:首先是速度太慢,每張圖片都需要迭代至少幾十到上百次,一張圖片的處理往往需要一分鐘到幾分鐘的時(shí)間。此外,考慮到體型問(wèn)題,一些方案直接采用 3D 掃描儀事先掃描出人體,大大提升了數(shù)據(jù)采集的成本。
基于 Deep Learning 的多數(shù)方法同樣需要依賴于人體模型,通過(guò)神經(jīng)網(wǎng)絡(luò)估計(jì)出人體模型的參數(shù),代表性工作是 VIBE,這類算法通常稱為 model-based 的方法。
這類方法有兩方面的問(wèn)題,首先可獲取到的數(shù)據(jù)很少而且拍攝環(huán)境局現(xiàn)于實(shí)驗(yàn)室中,雖然一些工作如 Surreal,Human3.6 使用 CG 制作虛擬的 in wild 場(chǎng)景,但這樣的數(shù)據(jù)跟真實(shí)的數(shù)據(jù)仍然有比較大的差距。第二,前面提到關(guān)節(jié)的 3D 旋轉(zhuǎn)很難通過(guò)圖像去估計(jì)。
相比于 model-based 方案,model-free 方案提供了另外一種思路,這種方法是直接回歸人體 mesh 上的密集 3D 點(diǎn)坐標(biāo),并通過(guò)在 loss 中增加人體 shape、pose 等先驗(yàn)信息進(jìn)行約束。相關(guān)的工作主要依賴于圖神經(jīng)網(wǎng)絡(luò)來(lái)建模人體不同關(guān)節(jié)點(diǎn)之間的拓?fù)浣Y(jié)構(gòu),這方面的代表工作包括「Pose2Mesh」(https://arxiv.org/abs/2008.09047)。
最終,微視團(tuán)隊(duì)使用 7000 多個(gè)頂點(diǎn)和 1.5 萬(wàn)的面片重建出圖像坐標(biāo)系下的人體 3D Mesh,從圖像中重建出的 Mesh 需要經(jīng)過(guò)濾波處理去掉抖動(dòng),這樣就得到了視頻中的人體 Mesh。效果展示如下圖所示:
后續(xù),渲染引擎將在此人體 Mesh 信息的基礎(chǔ)上給視頻中的人物「穿上」盔甲。
讓黃金鎧甲成為手機(jī)端特效
接下來(lái),微視團(tuán)隊(duì)在移動(dòng)端運(yùn)行了人體檢測(cè) / 跟蹤、2D 關(guān)鍵點(diǎn)檢測(cè)、3D 姿態(tài)估計(jì)、相機(jī)投影矩陣估計(jì)、3D Mesh 重建整套技術(shù)的流程,但他們發(fā)現(xiàn),實(shí)現(xiàn)單幀圖像 15ms 以內(nèi)的處理速度非常困難。這意味著,在移動(dòng)端的實(shí)現(xiàn)和優(yōu)化上,還需要思考更好的解決方案。
微視團(tuán)隊(duì)從三個(gè)方面進(jìn)行了改進(jìn):
1. 網(wǎng)絡(luò) Backbone 結(jié)構(gòu)的設(shè)計(jì)與優(yōu)化。結(jié)合 HRNet、MobileNet 系列網(wǎng)絡(luò)等不同結(jié)構(gòu)的優(yōu)勢(shì),在大規(guī)模的數(shù)據(jù)上進(jìn)行了不同結(jié)構(gòu)設(shè)計(jì)的探索和調(diào)參,針對(duì)不同計(jì)算能力的手機(jī)做針對(duì)性的設(shè)計(jì),保證對(duì)不同的機(jī)型在速度和效果上達(dá)到最佳的平衡。
2. 算法流程改進(jìn)。對(duì)整個(gè)的算法串行的流程進(jìn)行優(yōu)化,整個(gè)人體檢測(cè)、2D 關(guān)鍵點(diǎn)、3D 關(guān)鍵點(diǎn)、人體 Mesh、相機(jī)姿態(tài)估計(jì)全部調(diào)整為并行實(shí)現(xiàn),極大提升了算法整體的效率。
3. 移動(dòng)端工程優(yōu)化。基于騰訊優(yōu)圖團(tuán)隊(duì)提供的 TNN 移動(dòng)端深度推理框架,實(shí)現(xiàn)了移動(dòng)端模型的高效推理。對(duì)于特定的算子和矩陣運(yùn)算,微視團(tuán)隊(duì)與優(yōu)圖 TNN 團(tuán)隊(duì)合作進(jìn)行了針對(duì)性的底層優(yōu)化,保證算法的高效運(yùn)行。同時(shí),對(duì)于模型的后處理也進(jìn)行了算法層面的優(yōu)化,在保證不使用影響體驗(yàn)的精度損失上獲得了更極致的運(yùn)行效率。
針對(duì)不同的拍攝光照、人體的姿態(tài)、不同的體型、衣著、拍攝距離、拍攝角度以及不同拍攝背景中發(fā)現(xiàn)的 Bad Case,微視團(tuán)隊(duì)從訓(xùn)練方式、參數(shù)調(diào)整、Loss 函數(shù)設(shè)計(jì)、數(shù)據(jù)更新與優(yōu)化等方面進(jìn)行了更多深度的研究,解決了貼合度、檢測(cè)穩(wěn)定性等多方面拍攝中的常見問(wèn)題。同時(shí),進(jìn)一步壓縮了模型計(jì)算開銷,將單幀的總體處理時(shí)長(zhǎng)從 15ms 優(yōu)化到了當(dāng)前的 11ms。
經(jīng)過(guò)上述一系列的優(yōu)化工作后,微視團(tuán)隊(duì)基于重建的人體 3D Mesh ,為其量身定制了一套 AttachToBody 的渲染方案,目標(biāo)有兩個(gè):
能夠保證服裝模型在三維世界和二維圖像上位置和旋轉(zhuǎn)正確,貼合人體表面;
能夠提供 PBR(基于物理的渲染) 每個(gè)環(huán)節(jié)需要的正確信息,確保高質(zhì)量的渲染效果。
同時(shí)為了項(xiàng)目需要,技術(shù)團(tuán)隊(duì)在原有引擎基礎(chǔ)上開發(fā)了自定義材質(zhì)系統(tǒng),為玩法提供了更自由靈活的材質(zhì)與光照解決方案。借助于強(qiáng)大的流程控制和腳本系統(tǒng),技術(shù)團(tuán)隊(duì)很好地將人體重建、服飾真實(shí)感渲染、骨骼動(dòng)畫、轉(zhuǎn)場(chǎng)特效等要素串聯(lián)在一起,提供了完整流暢的視效表達(dá)。
此外,部分機(jī)型上啟用了 IBL、SSAO 等技術(shù),以提升整體的光影效果。為了提升在低端機(jī)型上的整體效果覆蓋率,微視團(tuán)隊(duì)采取了 Material Capture 材質(zhì)捕捉技術(shù)方案,用較小的計(jì)算成本擬合出近似 PBR 的真實(shí)感效果。同時(shí)在一些高頻且量大的矩陣計(jì)算中啟用了 NEON 加速方案,整體降低了數(shù)學(xué)計(jì)算耗時(shí)。
基于上述所有工作,微視的設(shè)計(jì)團(tuán)隊(duì)與技術(shù)團(tuán)隊(duì)深入?yún)f(xié)作。首先明確直觀的預(yù)期效果,明確優(yōu)化方向,給出優(yōu)化建議;此外輔助優(yōu)化引擎渲染能力,使最終效果更接近設(shè)計(jì)師預(yù)期。
在細(xì)節(jié)打磨和工具支持方面,依托 Light Studio 對(duì) 3D 場(chǎng)景強(qiáng)大的編輯和可視化能力,以編輯器組件的方式提供給設(shè)計(jì)同學(xué)完整的工具鏈支持,包括對(duì)衣服 SRT 數(shù)據(jù)的精準(zhǔn)調(diào)整,對(duì)環(huán)境光 / 衣服材質(zhì)主要參數(shù)的可視調(diào)整等。
黃金圣斗士鎧甲特效的研發(fā)歷時(shí) 10 個(gè)月,最初溝通的預(yù)期效果如下圖:
通過(guò)設(shè)計(jì)團(tuán)隊(duì)、算法團(tuán)隊(duì)和特效團(tuán)隊(duì)多輪的效果打磨,衣服貼合度與跟隨性,身體比例協(xié)調(diào)性,衣服視效等方面均達(dá)到了理想水平。引擎實(shí)現(xiàn)效果如下圖:
未來(lái),微視發(fā)布器技術(shù)團(tuán)隊(duì)將持續(xù)圍繞三維人體重建來(lái)進(jìn)行創(chuàng)意特效設(shè)計(jì)與研發(fā)。在算法方面會(huì)繼續(xù)在 3D 重建的精度上持續(xù)性的提升,解決更多拍攝場(chǎng)景的需求。業(yè)務(wù)方面,會(huì)結(jié)合相關(guān)圖形圖像技術(shù),在人體形變,人體驅(qū)動(dòng)虛擬角色等方面有進(jìn)一步的突破,為用戶提供更酷炫好玩的特效新體驗(yàn)。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。
LCD顯示屏相關(guān)文章:lcd顯示屏原理
lcd相關(guān)文章:lcd原理