?

人像自動提取與處理軟件設計與實現*

2022-11-04 02:22劉清雨
北京電子科技學院學報 2022年2期
關鍵詞:美顏濾鏡語義

劉清雨 蔣 翔 金 鑫

北京電子科技學院,北京市 100070

引言

圖像提取是將照片中的目標前景部分從背景圖像中分割出來的一種技術,在圖像融合、圖像增強復原等圖像編輯技術中具有重要地位。

20 世紀90 年代,學者首次提出了圖像背景移除的數學定義,引入透明(alpha)通道的概念,用于控制前景和背景融合時的線性插值比例。隨著數字圖像領域逐漸走向成熟,圖像提取技術在日常生活已經普遍適用,尤其在媒體制作領域[1]。 傳統圖像提取算法通常根據顏色、紋理等低級特征從已知確定像素部分推測不確定像素部分,而沒有利用高級語義信息,此類方法并不適用于前景顏色相似或者紋理復雜的圖片;傳統圖像提取算法利用逐像素的處理方式扣取前景,耗時較長,此類方法并不適用于實際應用中對前景高質量和高速度處理的需求。 隨著深度學習被多方關注研究,其理論不斷完善,李飛飛等人建立了ImageNet[2]大型數據集,依賴于大數據集的卷積神經網絡在計算機視覺、自然語言處理等領域爆發了強大生命力,圖像提取與深度學習的結合也順理成章,通過深度卷積神經網絡的強大擬合能力,能有效提取前景與背景之間的結構信息、語義信息,因而不完全依賴于簡單的顏色信息實現摳圖效果。 基于深度學習的人像自動提取和處理算法相比于傳統算法在生成圖質量上有了很大的提升,使得最終網絡輸出的圖在細節上有更好的預測結果。

目前市面上已經存在多款集成摳圖功能的APP 應用[3],主流的有:Photoshop、美圖秀秀、美顏相機、輕顏相機等,但它們用到的原理大多都不涉及深度學習。 Photoshop 軟件用的是通道摳圖,它的本質是利用通道保存顏色這一特性,通過亮度差異來確定選區;美圖秀秀等美顏相機用的是grabcut[4]等傳統算法,它需要用戶進行一些交互式操作,手動將要提取的部分畫出來,才能進行摳圖。

本文針對人像,實現了自動化提取并處理人像,提取的人像部分邊緣分割清晰,信噪比高,有效地優化了人像提取的準確度。 主要貢獻如下:

(1)提出了BiSeGAN 網絡,以GAN 網絡框架為基礎,采用BiSeNet 結構作為生成器網絡進行訓練,可以很好地分離人像和背景,提高了模型的識別速度和精度。

(2)分配混合損失函數以不同的權重,共同優化網絡參數,有助于模型快速收斂,使生成器生成更真實的目標圖像。

(3)利用百度飛漿這一深度學習平臺將訓練好的BiSeGAN 模型部署到Andriod 手機上,并基于OpenCV 研發出一款能夠實現背景替換和美顏濾鏡功能的APP,致力于移動端的AI 化,以滿足人們制作證件照和趣味圖片等實際需求。

1 人像提取與處理實現方法

1.1 實現方法概述

人像提取領域的關鍵問題就是求解以下公式[5]:

其中,I(Image)是當前用戶輸入的圖像,α是透明度,F(Foreground) 是照片的前景,B(Background)是照片的背景。 由于,從一張輸入圖片不能較好地區分前景像素和背景像素,所以α、F、B這三個變量是未知的[6]。

這個公式提供了一種思路,它提出原始圖像是由若干個不同對象組合形成的圖片,系數α控制著這些對象的歸屬,決定對象屬于前景還是背景。 當α=1,說明它是不透明的,屬于圖像中的前景;當α=0 時,說明它是透明的,屬于圖像中的背景。 但在實際情況里,我們不能完全確認哪個像素歸屬于前景,哪個像素歸屬于背景,它們沒有明確的界限,α不僅僅是0 和1 這兩個數值,而是在0 ~1 區間的任意一個數[7]。 由此看來,研究改進人像提取算法就是考慮如何能讓計算機更好的分辨像素歸屬,從而更加快速的得到更準確地人像提取結果。 在得到每個對象的α值后,就會生成一張蒙版圖,從圖1 可以看到它將原圖像的前景與背景劃分出來,黑色部分是前景,白色部分是背景。 最后,結合蒙版圖和原圖,就能實現人像提取。

圖1 人像提取的蒙版圖

本系統基于深度學習的深度卷積神經網絡,建立一種全自動人像及其各部分的精細分割技術算法,捕捉圖像的高層次特征,并根據肖像的特定特征,生成高質量的蒙版圖,更加快速、準確地提取出人像及其各部分,減少用戶后期修正與圖像處理時間,提升圖像處理效率與質量。 本軟件通過PaddlePaddle 將深度學習的模型部署到Andriod 手機上,完成Andriod APP 的制作。

1.2 BiSeGAN 網絡架構

本文提出了一種BiSeGAN 的網絡結構,包括兩個模塊:生成器和判別器。 本方法以生成對抗網絡(GAN)框架為基礎,采用BiSeNet 結構作為生成器網絡以更好地實現語義分割,如圖2 所示。 生成器的輸入是真實人像數據集,經過生成器后得到人像提取解析圖。 將標簽人像圖和人像提取解析圖作為判別器的輸入,由判別器辨別輸入的數據是一個真實數據還是來自生成器生成的虛假數據,如果判別器判定輸入的圖像為虛假數據,生成器和判別器則會交替訓練,兩者在競爭中學習優化網絡參數,直至達到納什均衡狀態,此時生成器生成的數據接近真實數據的樣本分布,判別器也無法區分樣本是否來自生成器。

圖2 BiSeGAN 網絡結構圖

實際應用中,對語義分割的速度和精度有著很高的要求。 從已有的實時性語義分割算法來看,實施模型加速方法都是以犧牲一定圖像精度的基礎上來實現推理速度的增加。 針對上述問題,生成器網絡采用BiSeNet 結構,此結構是一個實時、快速的語義分割框架,能夠在確保圖片質量的情況下保證提取速度,很好地平衡了精度與速度,同時它也是一個輕量級語義分割架構,便于部署到本地手機上。 BiSeNet 網絡結構擁有兩個部分:空間路徑和上下文路徑。 空間路徑(SP)用來處理空間信息缺失,以保留更多豐富的空間信息,上下文路徑(CP)用來針對感受野縮小的問題,以保證有更大的感受野。 同時,為了在保持良好的速度的情況下,擁有更高的精度,本軟件提出將空間路徑和上下文路徑相融合,得到特征融合模塊(FFM)和精細化后的注意力優化模塊(ARM)。

對于語義分割來講,空間分辨率和感受野大小這兩個關鍵因素不能兼得。 針對于此,本軟件的SP 保留了原始輸入圖像的空間尺寸并編碼豐富的空間信息。 如圖3 所示,空間分支主要包含三層,每一層包括一個步長為2 的3*3 卷積、bn 層和relu 激活層。 最終空間路徑得到的特征圖是原圖的1/8,包含了豐富的位置信息。 語義分割性能的好壞是由感受野來決定的。 為了兼顧感受野的大小和實時性兩個因素,上下文路徑采用輕量級模型和全局平均池化去提供更大的感受野。 輕量級模型可以快速的下采樣特征圖從而獲得更大的感受野,來編碼高層語義語境信息(特征的上下文信息),接著,在輕量級模型末端使用全局平均池化提供一個具有全局上下文信息的最大感受野。 最后將全局池化上采樣輸出的特征圖和輕量級模型的輸出特征圖相融合。

圖3 BiSeNet 網絡結構

上下文路徑(CP)中,使用注意力優化模塊來調整我們所采集的特征,使其更加精細。 通過應用全局平均池化(global pool)來捕獲全局語境并計算出注意力向量,從而讓其指導特征學習。通過這個過程操作,上下文路徑中各個階段采集到的特征可以被進一步優化,使特征圖更加精細。 此外整個過程無需任何其他操作,簡單快捷。 因此,由其造成的額外計算成本微乎其微,基本可以忽略不計。 注意力優化模塊結構圖如圖4 所示。

圖4 注意力優化模塊結構圖

特征融合模塊是用以融合空間和上下文這兩種路徑輸出的特征。 由SP 捕獲的空間信息編碼了絕大多數的豐富細節信息,所輸出的特征是低層級的(8x down)。 而CP 的輸出特征主要編碼語境信息,所輸出的特征是高層級的(32x down)。 由于這兩種路徑所形成的特征級別并不相同,所以不能將它們直接進行疊加,它首先連接(concatenate)兩條路徑的特征,然后通過Batch Normalization(bn)層進行批量歸一化來平衡特征,接著通過global pool 進行池化從而得到一個特征向量,同時計算出一個權重向量,這個權重向量可以調整特征的權重,起到特征選擇和融合的作用。 特征融合模塊結構圖如圖5 所示。

圖5 特征融合模塊結構圖

1.3 損失函數

損失函數包括三個部分:對抗損失函數、Softmax 損失函數以及感知損失函數。 對抗損失函數是生成對抗網絡框架下的基本損失函數,控制生成器和判別器對抗訓練。 BiSeNet 結構使用Softmax loss 作為損失函數,有助于快速收斂。感知損失函數可以幫助生成器生成更真實的目標圖像。

(1)對抗損失函數

網絡結構中包含一個生成器和一個判別器,將帶人像的圖像x輸入生成器G,得到人像提取解析圖G(x),判別器需要將人像提取解析圖G(x)作為負樣本,將標簽人像圖y作為正樣本。生成器和判別器交替訓練,該損失函數可表示為:

(2)Softmax 損失函數

在BiSeNet 結構Context Path 分支上添加了一個特殊輔助損失函數,如公式(3)所示,用來監督Context Path 的輸出,其與網絡輸出損失函數整合得到全局損失,見公式(4)。 其中,K=3;lp為主損失函數,用來監督整個BiSeNet 網絡的輸出;li為輔助損失函數,用來監督模型的訓練;借助參數來平衡主損失函數與輔助損失函數的權重。 兩個loss 同時傳播,輔助loss 有助于優化學習過程,主loss 仍是主要的優化方向,兩者使用不同的權重共同優化參數,有利于快速收斂。

(3)感知損失函數

使用VGG16 網絡對人像提取解析圖G(x)和標簽人像圖y 進行特征提取,經過卷積層得到特征圖,分別記為F和P,F和P的Gram 矩陣可以表示人像提取解析圖和標簽人像圖間的紋理差異,所以分別對F 和P 求Gram 矩陣差的Frobenius 范數,最終生成風格紋理較為相近的圖像。 感知損失函數表示如下:

總損失函數表示為:

1.4 模型部署

本軟件采用Paddle Lite 框架,將已訓練好的深度學習模型部署到手機上,Lite 架構完整實現了相應的能力:多硬件支持,高性能,量化支持,強大的圖分析和優化能力,輕量級部署,可支持任意硬件的混合調度。 Lite 框架為包括手機在內的端側場景的AI 應用提供高效輕量的推理能力,有效解決手機計算力和內存限制等問題,推動AI 應用更廣泛的落地。

2 總體框架設計

2.1 系統目標

本軟件以在移動設備上實現人像提取、背景替換和美顏濾鏡功能為目標,利用基于深度學習的BiSeGAN 網絡進行語義分割,實現人像提取和背景替換的功能[8],利用OpenCV 實現磨皮美白算法,利用百度飛漿深度學習平臺將訓練好的模型部署到移動端。 人像自動提取與處理軟件首先從手機本地存儲中讀取圖片,然后經過人像提取模塊或美顏濾鏡模塊處理圖片,最后將處理好的圖片返回給用戶。 由于移動端設備算力相對于PC 端較低,所以對于移動端設備而言,部署深度學習模型時,需要慎重地考慮模型的大小和運行速度這兩個因素。 模型的大小將直接影響APP 所占存儲的大小和APP 運行時所占內存的多少,模型的運行速度將直接關系到APP用戶體驗的好壞,模型推理速度快,相應的功能響應也會快,如此用戶在與APP 進行交互式才會有比較好的體驗。

2.2 系統框架結構

本軟件實現了基于深度學習的人像提取、背景替換和美顏濾鏡兩個功能,系統流程圖如圖6所示。 本軟件在主界面中聲明了人像提取和美顏濾鏡兩個控件,并對這兩個控件進行監聽。 當后臺獲取到人像提取控件的ID 時,會從當前的主界面跳轉到人像提取界面;當后臺獲取到美顏濾鏡控件的ID 時,會從當前的主界面跳轉到美顏濾鏡界面。

圖6 系統流程圖

在人像提取功能中,軟件首先從本地存儲中讀取人像圖片和背景圖片,然后采用目標檢測判斷人像圖片中是否含有人像,如果沒有,需要重新選擇人像圖片,如果確是人像圖,則需加載Bi-SeGAN 深度學習模型,利用此模型對圖像數據進行預測,獲取到語義分割的結果,實現人像和背景的分離,合并人像和背景圖,形成新圖,最后判斷是否保存新圖,如果不保存,需要從本地存儲中重新讀取圖片,如果保存,則完成本次背景替換[9]。

在美顏濾鏡功能中,軟件首先從本地存儲中讀取人像圖片,然后采用目標檢測判斷人像圖片中是否含有人像,如果沒有,需要重新選擇人像圖片,如果確是人像圖,則采用雙邊濾波和高斯模糊來進行圖片像素點的模糊處理,在圖像去噪的同時保留圖片細節,從而達到磨皮美白效果,并設置進度條控件選擇磨皮美白的程度,最后判斷是否保存新圖,如果不保存,需要從本地存儲中重新讀取圖片,如果保存,則完成本次美顏濾鏡。

3 系統設計與實現

3.1 人像提取

本軟件在人像摳圖界面中設置了三個按鈕,分別是選擇人物圖片、選擇背景以及保存圖片。當點擊選擇人物圖片的按鈕后,會跳轉進行訪問手機相冊,并讓用戶從中選擇想處理的圖片,點擊選擇背景也會跳轉訪問手機相冊進行背景圖片的選擇,但是,如果在沒有選擇人物圖片的情況下,就直接選擇背景按鈕時,會彈出一條提示,提示顯示“您需先進行人物圖片選擇”。 同樣的,如果沒有選擇任何圖片時,點擊保存圖片也會提示“圖片保存失敗”。

本軟件實現了人像提取功能。 將原模型部署到手機端后,選擇一張包含人像的圖片,對圖片進行預測。 首先,對輸入的數據進行預處理,目標輸入的數據是一個浮點數組,實際輸入的是一個Bitmap 的圖片,所以需要把Bitmap 轉換為浮點數組,在轉換過程中需要對圖像做相應的預處理,如:乘比例,減均值,除方差。 為了避免輸入的圖像過大,圖像預處理變慢,通常在元數據預處理之前,對圖像進行壓縮。 待到處理完成后,輸入預測圖像數據,通過本模型對輸入的數據進行預測并得到預測結果,最后通過解析獲取到語義分割的結果[10]。

本軟件實現了背景替換功能,將原模型部署到手機端后,選擇一張背景圖片,語義分割得到的前景圖為人像,將人像與背景圖片融合,實現自動換景功能,最后可以選擇是否保存圖片到相冊,背景替換功能流程圖如圖7 所示。

圖7 背景替換功能流程圖

3.2 美顏濾鏡

本軟件的美顏濾鏡有兩個界面,第一個界面就是提示用戶從相冊進行圖片選擇,點擊圖標后,選擇完圖片就跳轉到第二個界面,也就是圖片處理界面。 本軟件基于OpenCV 實現了一個磨皮美白功能,通過設置SeekBar,拖動進度條控件選擇磨皮美白的程度,讓用戶自行選擇滿意的美顏效果,效果圖可以通過ImageView 顯示,最后可以選擇是否保存圖片到相冊。

本軟件實現了磨皮美白功能,對于圖像來說,本質就是讓像素點模糊,提高亮度。 圖像去噪的方法很多,如:中值濾波,高斯濾波,維納濾波等,但使用這些方法進行圖像去噪容易使圖片的邊緣細節被模糊,從而導致圖片的一些高頻細節的保護效果并不明顯。 相比而言,雙邊濾波是一種非線性的濾波方法,是結合圖像的空間鄰近度和像素值相似度的一種折衷處理,它同時考慮空域信息和灰度相似性,可以很好對圖像邊緣細節進行保護,達到保邊去噪的目的。 因此,本軟件采用雙邊濾波和高斯模糊來進行圖片像素點的模糊處理,在圖像去噪的同時保留圖片細節,從而達到磨皮美白效果。

OpenCV 處理圖片數據的類型是Mat(矩陣),而Andriod Studio 處理圖片數據的類型是Bitmap,所以在通過Andriod Studio 將圖片交給OpenCV 處理之前,必須先將Bitmap 轉化成Mat。 圖片數據轉換為Mat 后就進行雙邊濾波處理,而后,進行高斯模糊處理,圖片數據經由雙邊濾波和高斯模糊的處理后,再將圖片從Mat 轉化為Bitmap,使得Andriod Studio 可以成功將圖片進行顯示。 美顏濾鏡功能流程圖如圖8 所示。

圖8 美顏濾鏡功能流程圖

4 系統運行與測試

4.1 軟件設計環境及工具

本軟件的移動終端開發環境為Andriod Studio,SDK 選用了API28:Andriod 9.0,手機機型:VKY-AL00。

4.2 人像提取模塊測試

用戶從手機相冊中選取人像圖片和背景圖片,實現從人像圖片中提取人像部分并實現背景替換,形成新的圖片效果,可以選擇是否保存新的效果圖。 本軟件與多款應用對比,比較各應用之間的性能優越性,各應用的背景替換效果對比圖如圖9 所示。 本軟件與Andriod AI 摳圖軟件做背景替換效果對比[11],如:AI 摳圖精靈、AI 修圖摳圖工具、Ai 智能摳圖軟件;與AI 摳圖小程序做背景替換效果對比,如:AI 摳圖換背景、AI自動摳圖、易飛AI 摳圖、摳圖AI。

與Andriod 軟件比較:如果天天P 圖軟件提取沒有正臉的人物圖像,則無法自動識別人像區域,需要手動選擇,且圖像的邊緣手動調整很困難;如圖9 所示,當背景色和頭發顏色相近時,無法識別頭發。 AI 摳圖精靈可以較好地將人像與背景分離,但無法從本地自定義選擇背景圖片,只能選軟件中預設的幾張背景圖,且背景圖大小和原圖大小不一致;在人像提取時,人像的大小被改變,只能通過“縮放”功能放大人像,但也無法保證與原圖中的人像大小一致。 AI 修圖摳圖工具無法完整地分離人像和背景,原圖中的“出口”路標牌應歸屬于背景,卻被智能AI 識別成前景部分。 Ai 智能摳圖軟件只能提取人像部分,不能實現背景替換;人像提取時并未保留原圖大小,只截取了人像的最小矩形外邊框;可從圖9 中看出鞋子邊緣處的噪聲大。

與小程序比較:AI 摳圖換背景小程序在人像提取時,縮放了人像大小,放大人像框也極難操作,經常會出現翻轉等問題;在選擇背景圖時,多次出現已選擇好背景圖,但在可視化界面中無法看見的情況。 AI 自動摳圖的用戶體驗感差,響應時間非常長,且無法生成結果圖。 易飛AI摳圖在提取人像時遇見了同“AI 修圖摳圖工具”一致的問題,而且,無論選擇的背景圖是橫板還是豎版,都會被壓縮成橫板圖片,如圖9 所示。摳圖AI 小程序在提取人像時也遇見了同“AI 修圖摳圖工具”一致的問題,不過,此小程序可以實現背景替換,如圖9 所示。

圖9 各應用的背景替換效果對比圖

針對以上應用提到的問題,本軟件最大程度地滿足了用戶的實際需求,可做到操作簡單、使用方便、響應時間短、處理速度快。 人像提取的默認大小為原圖的人物大小,用戶也可以自行調整。 用戶不僅可以選擇軟件預設的背景圖,還可以從本地自定義選擇背景圖片,且本軟件在選擇背景圖時并不會改變長寬比。 本軟件可以很好地分離人像和背景,頭發與背景,不需要用戶手動分割。

4.3 美顏濾鏡模塊測試

用戶從手機相冊中選取圖片后,可以拖動進度條控件,用戶選擇自己滿意的美顏效果,測試磨皮美白效果,形成新的美顏效果圖。 選擇美圖秀秀、天天P 圖、輕顏相機等APP 與本軟件的美顏濾鏡效果作對比,各軟件的美顏效果對比圖如圖10 所示,可以看出,本軟件的美顏效果與主流軟件的美顏效果沒有明顯的區別。

5 結論

本文提出了一種BiSeGAN 網絡結構,在生成對抗網絡框架的基礎上,采用BiSeNet 結構作為生成器網絡,并加入了對抗損失函數、Softmax損失函數和感知損失函數,有助于優化學習過程,快速達到收斂狀態,較好地完成了語義分割。本軟件在Andriod Studio 的環境下開發并測試了該方案,通過功能測試完成了人像自動提取與處理軟件的設計與實現,研發一款能夠實現背景替換和美顏濾鏡功能Andriod App。 本軟件利用百度飛漿深度學習平臺將訓練好的深度學習模型進行移動端本地部署,通過本模型對圖像數據進行預測,通過解析獲取到語義分割的結果,通過語義分割分離前景和背景,提取人像,實現自動換景功能。 通過OpenCV 實現了一個簡單的磨皮美白算法,采用雙邊濾波和高斯模糊對圖片像素點進行模糊處理,在圖像去噪的同時保留圖片邊緣細節,從而達到磨皮美白的效果。

猜你喜歡
美顏濾鏡語義
“綠瓤西瓜”橫空出世 是濾鏡合成還是“確有其瓜”
人工“美顏”
高堅Nuances系列Extreme Full中灰密度鏡套裝
材料不能“美顏”——應當著筆干實事
這七種水果熟吃,美顏又養生
抖音:“濾鏡”下的戲劇性與自我缺失
Rollei濾鏡德國試用評測
盛世美顏,謎俠情巔
漢語依憑介詞的語義范疇
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合