開發與維運

優酷直播實時美顏技術實踐

作者| 阿里文娛算法專家 彰三

一、背景

隨著移動設備的發展,美顏已成為多媒體內容生成鏈路中不可缺少的一種基本能力,尤其是在來瘋直播秀場業務的場景下,主播的顏值就意味著生產力,直接影響主播及平臺的收入。
美顏的目的就是要讓人看起來更美,包括皮膚細膩、白皙、光滑,臉部各個器官及臉型可 以進行細緻的調整,通過美妝調節可以達到快速上妝的效果。為達成上述人臉美顏效果的訴求, 我們從技術上主要通過如下四個關鍵步驟來實現:

image.png

二、技術實現

1.獲取人臉關鍵點信息

美顏處理依賴於人臉關鍵點,基於這些關鍵點,我們可以精準的知道臉部各個器官的位置 信息,從而進行美化處理:
首先,我們基於 AliFace 實現人臉關鍵點基本信息的獲取,主要包括眉毛、眼睛、鼻子、 嘴巴、臉部外輪廓這 106 個關鍵點;
其次,基於檢測出的 106 個關鍵點,我們需要對臉部關鍵點進行稠密化處理,插入額外的 關鍵點,如額頭區域和臉部外圍限制區域,使其能夠覆蓋整個臉部區域;
最後,基於稠密化以後的人臉關鍵點,對其構建整張臉的三角網格,實現對整個臉部區域 的三角剖分(Delaunay Triangulation),三角剖分將人臉切分成多個無重疊的三角區域,進而可以 使用 openGL 或者 D3D 進行繪製渲染處理,從而實現對臉部器官的各種美化處理。基礎人臉關鍵點、稠密後人臉關鍵點、三角網格圖片分別見下圖:

image.png

2. 皮膚美化處理

皮膚美化處理主要包括磨皮和美白,磨皮需要把臉部皮膚區域處理得細膩、光滑,美白則 需要將皮膚區域處理得白皙、紅潤。具體的處理模塊見下圖:

image.png

其主要包含如下幾個關鍵步驟:
1)圖像平滑 磨皮主要是通過使用保邊濾波器對臉部非器官區域進行平滑,達到臉部皮膚區域光滑的效果。一般來說常用的保邊濾波器主要有雙邊濾波、導向濾波、表面模糊濾波、局部均值濾波等,考慮到性能和效果的平衡,一般都採用雙邊濾波或者導向濾波。 雙邊濾波考慮了窗口區域內像素的歐式距離和像素強度差異這兩個維度,使得其在進行平滑時具有保護邊緣的特性。其優點是在 GPU 側計算量小,資源消耗低,其缺點是無法去除色差較大的孤立點,如痘痘、黑痣等,且磨皮後的效果較為生硬。 而導向濾波則是根據窗口區域內紋理的複雜程度來進行平滑程度的調節,在平坦區域趨近於均值濾波,在紋理複雜的區域則趨近於原圖,窗口區域內紋理的複雜程度跟均值和方差強相關,既能夠很好地處理平坦區域的各種噪點,又能較完整的保存好輪廓區域的信息,且在 GPU 側的計算並不複雜,所以結合我們的業務需求,我們採用了引導濾波作為磨皮處理的保邊濾波器。導向濾波(Guide Filter)的算法如下圖所示:

image.png

在磨皮這種場景下,導向濾波的引導圖即為原圖本身,並且其均值濾波的中間結果可用於 後續的銳化處理以提升性能。
2)人臉 ROI(Region of interest)處理 為了解決磨皮效果的精度和質量,我們標定了一個人臉美顏的遮罩圖片,該圖片的 rgb 三個通道分別對應臉部器官(眼睛、眉毛、鼻子、嘴等)區域的 Mask1,法令紋區域和眼袋區域的遮罩 Mask2,臉部高、低光區域的遮罩 Mask3,高、低光遮罩的 Mask3 如下圖所示:

image.png

通過人臉關鍵點信息結合該遮罩圖片,利用三角剖分的方法實時生成與當前人臉所對應的 臉部遮罩 Mask,對經過平滑後的圖像和原圖進行融合處理。Mask1 會保護臉部各個器官不被平 滑,保證了臉部磨皮區域的精準性,Mask2 增強了法令紋區域和眼袋區域的磨皮程度,達到去 除法令紋和眼袋的目的,Mask3 則通過高、低光的處理使得磨皮後的五官更為立體。
之所以將上述三個遮罩 mask 合併成一張圖片,是為了降低在 GPU 側獲取像素值的頻次以 達到提升性能的目的。與此同時,在非臉部區域通過膚色檢測實現對膚色區域磨皮,不是膚色 的區域則拒絕被平滑,從而實現對整圖的磨皮處理。
3)紋理增強及膚色映射 磨皮後的圖像在整體上被模糊化處理,使得整個圖像不夠通徹透亮,所以需要再對其進行銳化處理。為提升性能,我們結合導向濾波過程中的均值濾波結果和人臉 ROI 區域 mask,採用近似USM 銳化的方式對圖像進行增強,從而實現對紋理細節的凸顯。 為實現膚色美白,我們通過採用顏色查找表的方式來將膚色映射到理想的顏色範圍。顏色查找表基本原理如下所示:

image.png

其本質上相當於一個離散函數 ,給定任意的rgb 顏色值 ,都可以在顏色查找表圖片中找到對應的顏色值內插出相應的轉換結果 。美白顏色查找表的生成需要設計師根 據膚色所處的大致顏色範圍 ,基於基準顏色查找表經過一系列的色彩調整後生成一張新的顏色查找表的圖片 ,如下圖所示左邊為基準顏色查找表 ,右邊為調色後的膚色美白顏色查找表

image.png

上述就是皮膚美化的幾個重要步 驟 ,經過皮膚美化後的 效果對比圖如下 :

image.png

3.臉部器官美型處理

臉部美型處理主要包括臉型調整和臉部器官調整,實現上述功能的核心步驟是基於人臉關 鍵點通過圖像形變的形式來實現臉部各個器官的形狀調整。我們所採用的圖像形變算法主要是 局部扭曲算法和三角剖分,局部扭曲算法一般包括局部縮放、局部平移、局部旋轉等,如大眼 功能即可通過局部縮放來實現。三角剖分的方法則是通過對三角網頂點進行平移,再將平移後 的頂點更新到對應的紋理座標,通過 openGL 或者 D3D 進行繪製渲染,從而實現整個關聯三角 網的變形。具體的臉部美型效果如下圖所示:

image.png

4.美妝處理

美妝效果的好壞強依賴於素材模板精準的標定數據和準確的人臉關鍵點數據,具體的實現 流程主要包括如下幾個步驟:
1)妝容素材的管理及解析。結合各種妝容及貼紙素材,我們構建了一套完整的繪製機制,根據對妝容效果描述文件(Json)的解析,結合頂點繪製規則對各個類型的素材進行繪製處理及融合。
2)素材模板和當前人臉器官進行對齊。素材的描述文件中存有相應的標定信息,結合當前 圖像的人臉關鍵點,採用三角剖分的方式實現對素材模板的變形,達到與當前人臉器官對齊的目的。
3)不同器官的定製化處理。由於不同器官的處理流程不一樣,需要針對不同的器官採用不 同的處理方式。如美齒時需要結合牙齒區域的 mask 模板通過美齒顏色查找表實現牙齒區域顏 色的調整;眉毛的處理則需先將當前圖像的眉毛結合當前眉毛模板的素材進行眉毛區域的形變 調整,同時將當前圖像的眉毛部分進行減弱,再和對齊後的眉毛模板進行融合。
4)圖像融合。由於素材模板和臉部器官的差異性,我們需要採取不同的融合方式來實現圖 層的融合處理。如腮紅我們可以直接基於素材的半透明通道進行融合,修容處理則需採用高反差算法進行融合處理。
當然,上述美妝處理的流程也適用於人臉 2D 貼紙。

三、結果及落地

性能方面,在 iphone6p 等中低端機型上,可實現 720p 24fps 實時人臉美顏;效果方面,通 過對皮膚的處理,可使人臉皮膚達到白皙細膩的效果,同時主播可按照自己的喜好對臉部的任意器官進行調整。目前人臉美顏功能已在來瘋直播(移動端和 PC 端)、優來播移動端及淘寶直 播 PC 端落地,來瘋移動端主播日均開播人數實現一倍增長。具體的人臉美顏效果如下圖所示:

image.png

四、一些思考

1)結合業務特性,建立“美”的標準。什麼是“美”,在人類的普世觀裡面是有個基礎標 準的,但針對不同的歷史時期、地域、場景會有所差別,例如,東方人的審美觀點集中在:“三 庭五眼”“四高三低”“中軸豐字佈局”等,而在表演類的秀場場景下,則更會突出:“大眼”“瘦 臉”“尖下巴”“膠質感皮膚”等,因此,結合我們的業務場景,用數學的方式定義“秀場”類 的“美學”標準客觀評價體系,一方面幫助我們的用戶更簡單、快捷的進行美化處理。另一方 面,為我們後續的迭代優化、完善研發工作提供數據支撐。
2)妝容遷移。目前的美妝都是基於多個素材來實現,其開發成本相對較高。而妝容遷移可 脫離對美妝素材的強依賴,降低開發成本。用戶只需選取一張好看的效果圖即可實現美妝,這 是我們後續努力的方向。

參考文獻
[1] https://www.ti.inf.ethz.ch/ew/Lehre/CG13/lecture/Chapter%206.pdf

[2] http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_ Filtering.html

[3] http://kaiminghe.com/eccv10/index.html

Leave a Reply

Your email address will not be published. Required fields are marked *