重磅幹貨,第一時間送達

作者 | 阿裡文娛算法專家彰三
背景
随着移動裝置的發展,美顔已成為多媒體内容生成鍊路中不可缺少的一種基本能力,尤其是在來瘋直播秀場業務的場景下,主播的顔值就意味着生産力,直接影響主播及平台的收入。美顔的目的就是要讓人看起來更美,包括皮膚細膩、白皙、光滑,臉部各個器官及臉型可以進行細緻的調整,通過美妝調節可以達到快速上妝的效果。為達成上述人臉美顔效果的訴求,我們從技術上主要通過如下四個關鍵步驟來實作:
技術實作
1. 擷取人臉關鍵點資訊美顔處理依賴于人臉關鍵點,基于這些關鍵點,我們可以精準的知道臉部各個器官的位置資訊,進而進行美化處理:首先,我們基于AliFace實作人臉關鍵點基本資訊的擷取,主要包括眉毛、眼睛、鼻子、嘴巴、臉部外輪廓這106個關鍵點;其次,基于檢測出的106個關鍵點,我們需要對臉部關鍵點進行稠密化處理,插入額外的關鍵點,如額頭區域和臉部外圍限制區域,使其能夠覆寫整個臉部區域;最後,基于稠密化以後的人臉關鍵點,對其建構整張臉的三角網格,實作對整個臉部區域的三角剖分(Delaunay Triangulation),三角剖分将人臉切分成多個無重疊的三角區域,進而可以使用openGL或者D3D進行繪制渲染處理,進而實作對臉部器官的各種美化處理。基礎人臉關鍵點、稠密後人臉關鍵點、三角網格圖檔分别見下圖:
2. 皮膚美化處理皮膚美化處理主要包括磨皮和美白,磨皮需要把臉部皮膚區域處理得細膩、光滑,美白則需要将皮膚區域處理得白皙、紅潤。具體的處理子產品見下圖:
其主要包含如下幾個關鍵步驟:1)圖像平滑磨皮主要是通過使用保邊濾波器對臉部非器官區域進行平滑,達到臉部皮膚區域光滑的效果。一般來說常用的保邊濾波器主要有雙邊濾波、導向濾波、表面模糊濾波、局部均值濾波等,考慮到性能和效果的平衡,一般都采用雙邊濾波或者導向濾波。雙邊濾波考慮了視窗區域内像素的歐式距離和像素強度差異這兩個次元,使得其在進行平滑時具有保護邊緣的特性。其優點是在GPU側計算量小,資源消耗低,其缺點是無法去除色差較大的孤立點,如痘痘、黑痣等,且磨皮後的效果較為生硬。而導向濾波則是根據視窗區域内紋理的複雜程度來進行平滑程度的調節,在平坦區域趨近于均值濾波,在紋理複雜的區域則趨近于原圖,視窗區域内紋理的複雜程度跟均值和方差強相關,既能夠很好地處理平坦區域的各種噪點,又能較完整的儲存好輪廓區域的資訊,且在GPU側的計算并不複雜,是以結合我們的業務需求,我們采用了引導濾波作為磨皮處理的保邊濾波器。導向濾波(Guide Filter)的算法如下圖所示:
在磨皮這種場景下,導向濾波的引導圖即為原圖本身,并且其均值濾波的中間結果可用于後續的銳化處理以提升性能。2)人臉ROI(Region of interest)處理為了解決磨皮效果的精度和品質,我們标定了一個人臉美顔的遮罩圖檔,該圖檔的rgb三個通道分别對應臉部器官(眼睛、眉毛、鼻子、嘴等)區域的Mask1,法令紋區域和眼袋區域的遮罩Mask2,臉部高、低光區域的遮罩Mask3,高、低光遮罩的Mask3如下圖所示
通過人臉關鍵點資訊結合該遮罩圖檔,利用三角剖分的方法實時生成與目前人臉所對應的臉部遮罩Mask,對經過平滑後的圖像和原圖進行融合處理。Mask1會保護臉部各個器官不被平滑,保證了臉部磨皮區域的精準性,Mask2增強了法令紋區域和眼袋區域的磨皮程度,達到去除法令紋和眼袋的目的,Mask3則通過高、低光的處理使得磨皮後的五官更為立體。之是以将上述三個遮罩mask合并成一張圖檔,是為了降低在GPU側擷取像素值的頻次以達到提升性能的目的。與此同時,在非臉部區域通過膚色檢測實作對膚色區域磨皮,不是膚色的區域則拒絕被平滑,進而實作對整圖的磨皮處理。3)紋理增強及膚色映射磨皮後的圖像在整體上被模糊化處理,使得整個圖像不夠通徹透亮,是以需要再對其進行銳化處理。為提升性能,我們結合導向濾波過程中的均值濾波結果和人臉ROI區域mask,采用近似USM銳化的方式對圖像進行增強,進而實作對紋理細節的凸顯。為實作膚色美白,我們通過采用顔色查找表的方式來将膚色映射到理想的顔色範圍。顔色查找表基本原理如下所示:
其本質上相當于一個離散函數,給定任意的rgb顔色值,都可以在顔色查找表圖檔中找到對應的顔色值内插出相應的轉換結果。美白顔色查找表的生成需要設計師根據膚色所處的大緻顔色範圍,基于基準顔色查找表經過一系列的色彩調整後生成一張新的顔色查找表的圖檔,如下圖所示左邊為基準顔色查找表,右邊為調色後的膚色美白顔色查找表。
上述就是皮膚美化的幾個重要步驟,經過皮膚美化後的效果對比圖如下:
3. 臉部器官美型處理臉部美型處理主要包括臉型調整和臉部器官調整,實作上述功能的核心步驟是基于人臉關鍵點通過圖像形變的形式來實作臉部各個器官的形狀調整。我們所采用的圖像形變算法主要是局部扭曲算法和三角剖分,局部扭曲算法一般包括局部縮放、局部平移、局部旋轉等,如大眼功能即可通過局部縮放來實作。三角剖分的方法則是通過對三角網頂點進行平移,再将平移後的頂點更新到對應的紋理坐标,通過openGL或者D3D進行繪制渲染,進而實作整個關聯三角網的變形。具體的臉部美型效果如下圖所示:
4. 美妝處理美妝效果的好壞強依賴于素材模闆精準的标定資料和準确的人臉關鍵點資料,具體的實作流程主要包括如下幾個步驟:1)妝容素材的管理及解析。結合各種妝容及貼紙素材,我們建構了一套完整的繪制機制,根據對妝容效果描述檔案(Json)的解析,結合頂點繪制規則對各個類型的素材進行繪制處理及融合。2)素材模闆和目前人臉器官進行對齊。素材的描述檔案中存有相應的标定資訊,結合目前圖像的人臉關鍵點,采用三角剖分的方式實作對素材模闆的變形,達到與目前人臉器官對齊的目的。3)不同器官的定制化處理。由于不同器官的處理流程不一樣,需要針對不同的器官采用不同的處理方式。如美齒時需要結合牙齒區域的mask模闆通過美齒顔色查找表實作牙齒區域顔色的調整;眉毛的處理則需先将目前圖像的眉毛結合目前眉毛模闆的素材進行眉毛區域的形變調整,同時将目前圖像的眉毛部分進行減弱,再和對齊後的眉毛模闆進行融合。4)圖像融合。由于素材模闆和臉部器官的差異性,我們需要采取不同的融合方式來實作圖層的融合處理。如腮紅我們可以直接基于素材的半透明通道進行融合,修容處理則需采用高反差算法進行融合處理。當然,上述美妝處理的流程也适用于人臉2D貼紙。
結果及落地
性能方面,在iphone6p等中低端機型上,可實作720p 24fps 實時人臉美顔;效果方面,通過對皮膚的處理,可使人臉皮膚達到白皙細膩的效果,同時主播可按照自己的喜好對臉部的任意器官進行調整。目前人臉美顔功能已在來瘋直播(移動端和PC端)、優來播移動端及淘寶直播PC端落地,來瘋移動端主播日均開播人數實作一倍增長。具體的人臉美顔效果如下圖所示:
一些思考
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 【end】
加群交流
歡迎小夥伴加群交流,目前已有交流群的方向包括:AI學習交流群,目标檢測,秋招互助,資料下載下傳等等;加群可掃描并回複感興趣方向即可(注明:地區+學校/企業+研究方向+昵稱)