前言
臨近 2022 年新春佳節,抖音正式啟動了溫暖中國年活動。
為了增加線上的虎年新春氛圍,一系列 AR 相機特效上線集成到抖音相機中,日常生活的景觀會在抖音的鏡頭下呈現出各種奇妙的效果。
在這些特效當中,「AR 中國年」特效憑借著獨特的科技感與氛圍感,獲得了大量用戶的關注與好評。
用戶隻需通過抖音拍攝界面使用「AR 中國年」道具,掃描所在畫面,就可以將場景轉換成酷炫的賽博朋克新年風格。
「AR 中國年」的效果源自於抖音產品團隊對於未來賽博朋克中國城場景的設想。
但要實現這樣的效果,需要整合 AI 算法、圖形渲染、特效設計等大量研發資源。
為此,抖音技術團隊專門研發了一套融合了深度學習、SLAM 與圖形渲染技術的 AR 特效鏈路,整體的鏈路如下圖所示。
「AR中國年」特效鏈路
系統首先通過對捕獲的視頻數據基於深度學習模型進行分析,獲取實時的深度圖、法向圖與場景分割 Mask 等語義與幾何信息,同時通過SLAM 技術獲取相機位姿等空間信息,並結合語義、幾何與空間信息,對不同種類的道具進行放置與跟蹤。
通過 SLAM,還可以進行算法結果的多幀匹配,從而幫助提升語義幾何分析的準確性和連續性,保證後續道具掛載的穩定性。
在接下來的章節中,文章將會對部分關鍵算法環節展開剖析。
道具掛載檢測
「AR 中國年」的一大亮點是能夠在場景中較為自然地貼合道具素材。
在 AR 場景中為了使素材的出現位置更加貼合場景,需要設計一套端上的自動道具掛載算法。
為了使得掛載結果更加自然,算法還需要輸出若幹個符合透視的不規則四邊形。
在算法設計之初,技術團隊考慮了一套基於三維表面檢測《3D Surface Detection》、二維形狀檢測《2D Shape Detection》與單幀 VP 檢測《Vanishing Point Detection》結合的方案,並研發了一套基於線段和角點檢測結合的 VP 檢測系統。
但由於該方案涉及的算法模塊和策略較為復雜,移植到移動端並達到實時的性能具有較大的技術難度,技術團隊便開始嘗試使用較為輕量的『目標檢測+回歸』的方案,試圖『蒸餾』學習出實時的道具掛載檢測模型。
在「AR 中國年」特效中,為了營造出新年的氣氛,需要同時掛載十幾個不同的素材,而且素材出現的位置也並不是往往出現在平面上,例如『燈籠』就需要被掛載到屋簷或者天花板上。
這就需要算法同時兼顧召回、透視以及場景分類。
為此,技術團隊設計了先通過檢測模塊進行召回,再通過回歸模塊進行篩選的二階段算法。
在檢測階段,檢測模塊去盡可能多的召回掛載區域,這些區域往往集中在建築物、墻壁和物體上。
在召回足夠多的候選區域後,回歸模塊負責解決透視以及分類問題。
為了降低坐標回歸難度,需要加入一定的規則先驗,將掛載框視作左上、左下、右上、右下四個點構成的凸四邊形進行回歸,最終模型的結果將經過排序、篩選、去重來保留高質量的掛載框。
為了滿足不同素材的特定要求,算法還會將掛載框進行分類來針對性地進行後處理,例如將比較長的區域進行切分來營造出比較工整的燈籠串效果。
值得一提的是,雖然由於性能原因,技術團隊在算法方案上最終選擇了『目標檢測+回歸』的方案,但基於 VP 檢測的方案具備更真實的掛載效果,因此也被應用在了剪映玩法上,服務於基於服務端的編輯特效「國潮賽博 2022」。
基於『檢測+回歸』的道具掛載檢測結果
法向估計
在完成道具掛載檢測後,在真實環境中插入虛擬物體還需要準確理解世界的三維法向信息。
在相機坐標系下直接使用 SLAM 輸出三維朝向會存在空缺以及由三維點朝向方向不準確的問題,所以還需要一個面向移動端的輕量級法向估計解決方案。
為此,技術團隊通過用帶有激光雷達的 iPhone 離線采集了大量的環境數據《包含室內外不同光照條件下的數據,以及渲染生成等方式獲取的場景法向數據》,訓練了魯棒的端上法向估計模型。
此外,團隊還進一步利用了手機 IMU 的重力方向對法向的角度進行矯正,從而保證掛載物始終能夠和重力方向吻合,更符合一般的建築規律,來規避深度學習網絡在法向預測不夠完全準確的情況。
從下圖的結果可以看到,在不同變換角度與光照環境條件下,虛擬的貼圖仍然可以很好的貼合圖像法向,從而能支持各種虛擬掛載的真實特性。
基於法向估計的貼圖效果
視覺 SLAM
為了將道具能夠持續跟蹤在建築上,技術團隊構建了一套大場景下的視覺 SLAM 系統,在大部分抖音用戶手機上均能進行實時魯棒地跟蹤。
該 SLAM 系統具備如下幾個特性:
- 用戶無感的快速初始化。
傳統的視覺 SLAM 算法依賴嚴格的初始化,需要用戶進行充分的運動之後才能使用 AR 特效,這大大提升了使用 AR 特效的門檻。
為了讓廣大抖音用戶都能更容易地玩起 AR 特效,該方案基於輕量化的多層級初始化設計研發,融合了場景結構先驗、多假設的濾波估計和小運動下的全局優化,實現了首幀即時的 AR 體驗。
- 覆蓋不同的移動端機型。
由於抖音用戶覆蓋面非常大,尤其是安卓用戶機型眾多,對算法的魯棒性提出了更高層面的要求。
視覺 SLAM 系統以視覺為主,同時輔助利用了系統的傳感器信息來對位姿進行約束。
由於不同手機的傳感器質量參差不齊,系統還結合離線標定和在線估計的策略,在離線標定通用參數的基礎上又實時進行參數優化,低成本地覆蓋更多的用戶機型。
- 大場景實時跟蹤。
在大場景下,純視覺的 SLAM 系統容易受到遠點和動態物體的幹擾,尤其在長時間直行的情況下相機的估計高度容易產生漂移。
基於多幀幾何分析與語義先驗,系統對視覺特征進行了分類處理,同時將實時全局信息壓縮後持續在系統中進行優化,減少了長時間運動下的漂移。
- 網格與平面估計。
基於 SLAM 系統輸出的稀疏點雲,系統結合 2D 圖像信息和 3D 平面估計信息,對點雲進行單幀的實時網格化息。
為了解決弱紋理和遠景區域幾何信息缺失的問題,系統還結合了上述的法向估計模型,保證了全區域的掛載可用性。
大場景軌跡跟蹤和場景三維估計
以SLAM 初始化為例,在用戶實際使用道具拍攝時,會經常發生由於相機僅有純旋轉或靜止不動無法初始化 SLAM 系統或 SLAM 初始化成功但重建的網格質量仍無法滿足特效需求的情況。
為了解決這個問題,系統引入了深度估計模型,對靜止的圖像進行相對深度估計並重建出三角網絡。
待 SLAM 初始化成功後,再對三角網格進行過渡融合。
通過這種方式,在 SLAM 無法初始化的情況下也可以輸出三角網格,並結合道具掛載檢測與法向估計進行素材掛載,在後續使用過程中也能過渡到真實深度場景。
用戶無感的純旋轉/靜止場景初始化
包體積優化
由於「AR 中國年」整個流程涉及到多個算法模塊,導致整體的算法包體積偏大,進而會影響特效下發到移動端的成功率。
為此,技術團隊還針對包體積進行了極致的性能優化。
在深度模型訓練流程中,遵循如下原則:首先通過 AutoML 算法,找到緊湊的模型結構;然後,再采用剪枝和非結構量化相結合的壓縮算法,在訓練中將網絡中的不重要權值剪枝為零值,使其達到一定的稀疏比例,再將剩下非零的權值進行非結構量化;最後結合低比特結構化量化算法,在保證算法精度的前提下,極致壓縮算法模型體積。
基於上述方案,所有算法模塊依賴的深度模型體積大小得到了有效控制,保證了最終特效下發的成功率。
智能創作團隊介紹
在抖音中,大量創新性的熱門特效均出自於字節跳動-智能創作團隊。
智能創作團隊是字節跳動音視頻創新技術和業務中臺,覆蓋了計算機視覺、圖形學、語音、拍攝編輯、特效、客戶端、服務端工程等技術領域,在部門內部實現了前沿算法-工程系統-產品全鏈路的閉環,旨在以多種形式向公司內部各業務線以及外部合作客戶提供業界最前沿的內容理解、內容創作、互動體驗與消費的能力和行業解決方案。
目前,智能創作團隊已通過字節跳動旗下的火山引擎向企業開放技術能力和服務。