王榕榕 徐樹公 黃劍波
(1. 上海大學(xué)上海電影學(xué)院, 上海 200072; 2. 上海大學(xué)上海先進(jìn)通信與數(shù)據(jù)科學(xué)研究院, 上海 200444;3. 上海大學(xué)上海電影特效工程技術(shù)研究中心, 上海 200072)
圖像摳圖是將圖像中的目標(biāo)前景物體從背景圖像中分割出來的技術(shù), 是圖像融合、圖像增強(qiáng)復(fù)原等圖像編輯技術(shù)的基礎(chǔ). 隨著數(shù)字圖像領(lǐng)域的不斷發(fā)展與成熟, 圖像摳圖技術(shù)已經(jīng)廣泛應(yīng)用于日常生活、影視制作、廣告宣傳等領(lǐng)域[1]. 手機(jī)、平板等移動(dòng)端設(shè)備也推出了一些集成摳圖功能的APP 應(yīng)用[2], 以滿足人們的日常需求.
傳統(tǒng)的摳圖算法通常根據(jù)顏色、紋理等低級(jí)特征從已知確定像素部分推測(cè)出不確定像素部分, 而沒有利用高級(jí)語義信息, 這些方法并不適用于前背景顏色相似或者紋理復(fù)雜的圖像,逐像素的處理方式也需較長時(shí)間, 而在日常應(yīng)用場(chǎng)景中, 往往對(duì)摳取前景有高質(zhì)量要求和快速處理大量圖像的要求, 傳統(tǒng)圖像摳圖方法難以滿足實(shí)際應(yīng)用需求.
近年來, 隨著深度學(xué)習(xí)理論不斷完善和網(wǎng)絡(luò)大數(shù)據(jù)爆發(fā)時(shí)代的到來, Russakovsky 等[3]建立了ImageNet大型數(shù)據(jù)集, 該數(shù)據(jù)集依賴于大數(shù)據(jù)集的卷積神經(jīng)網(wǎng)絡(luò), 在計(jì)算機(jī)視覺、自然語言處理等領(lǐng)域顯示了強(qiáng)大生命力. 圖像摳圖與深度學(xué)習(xí)的結(jié)合也受到了廣泛關(guān)注, 深度卷積神經(jīng)網(wǎng)絡(luò)的強(qiáng)大擬合能力, 能有效提取前景與背景之間的結(jié)構(gòu)信息、語義信息, 因而不完全依賴于簡單的顏色信息, 從而獲得更好的摳圖效果.
基于深度學(xué)習(xí)的摳圖算法相比于傳統(tǒng)算法在生成α圖的質(zhì)量上有了很大的提升, 本工作在原有深度學(xué)習(xí)摳圖算法基礎(chǔ)上, 根據(jù)摳圖任務(wù)的特點(diǎn)做了相應(yīng)的改進(jìn), 使得最終網(wǎng)絡(luò)輸出的α圖在細(xì)節(jié)上有更好的預(yù)測(cè)結(jié)果.
圖像摳圖的核心在于將圖像中的前景物體和背景部分分離, 一張圖像可以看作是前景圖像和背景圖像中的顏色按照一定權(quán)重(α透明度)結(jié)合[4]:
式中:Ii為像素塊i的RGB 色彩值;Fi和Bi為前景圖像和背景圖像.
于是, 摳圖任務(wù)就可以轉(zhuǎn)換為求解上述方程中的α值, 即由Porter 等[4]首次提出的α通道, 表示前景與背景的混合比例. 但從像素層面來說, 前景圖像和背景圖像都包含R、G、B這3 個(gè)未知量, 則式(1)中有3 個(gè)已知量(原圖的R、G、B值)和7 個(gè)未知量(前景圖像和背景圖像的R、G、B值以及α值), 由于一個(gè)約束方程顯然是無法解出α值的, 故需要添加額外的輔助信息, 如三元圖(trimap)和草圖(scribble)(見圖1). 其中使用最為廣泛的是三元圖, 包含有確定的前景像素值部分(如圖1(b)中白色部分)、確定的背景部分(如圖1(b)中黑色部分)和前背景結(jié)合的不確定部分(如圖1(b)中灰色部分).
圖1 輔助信息Fig.1 Auxiliary information
目前, 圖像摳圖方法主要有3 類: 基于采樣、基于傳播和基于深度學(xué)習(xí).
(1) 基于采樣. 在三元圖標(biāo)記的前景背景區(qū)域中為每個(gè)未標(biāo)記像素選取候選樣本集合, 再在其中選擇合適的前景背景樣本點(diǎn)對(duì). 例如, Robust matting 法[5]會(huì)構(gòu)建一個(gè)較大的候選樣本集合, 在計(jì)算未知像素點(diǎn)的α值時(shí), 從樣本集合中選出相似度較高的幾對(duì)樣本點(diǎn)對(duì), 計(jì)算其α值來作為該未知像素的α值.
(2) 基于傳播. 在未知像素點(diǎn)周圍局部小范圍像素內(nèi), 通過具有相似性的已知像素點(diǎn)的α值的加權(quán)來估計(jì)該未知像素點(diǎn)的α值. 例如, KNN matting 法[6]選取未知像素高維特征空間中的前K個(gè)近鄰來計(jì)算α值, 相似性的確定依賴于顏色、距離和紋理特性; Closed-form matting法[7]假設(shè)局部顏色分布遵循線性模型, 在此基礎(chǔ)上構(gòu)建了摳圖拉普拉斯矩陣, 證明了前景圖像的α值可以以封閉的形式進(jìn)行求解.
(3) 基于深度學(xué)習(xí). Learning based matting 法[8]中將摳圖問題看作一個(gè)半監(jiān)督學(xué)習(xí)問題,用更通用的學(xué)習(xí)方法擬合顏色模型來求解α值. 不同于Closed-form matting 法中的局部顏色滿足線性模型的假設(shè), 該方法引入核函數(shù), 使預(yù)測(cè)α值更具有線性表達(dá)能力. 通過卷積神經(jīng)網(wǎng)絡(luò)擬合能力來估計(jì)α值, 如DCNN matting 法[9]是第一個(gè)將摳圖任務(wù)和深度卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合的方法, 該方法將KNN matting 法[6]和Closed-form matting 法[7]計(jì)算輸出的α預(yù)測(cè)圖和RGB 圖像一起作為神經(jīng)網(wǎng)絡(luò)的輸入, 以此融合局部與非局部的特征, 但整個(gè)網(wǎng)絡(luò)只包含6個(gè)卷積層, 無法獲得較好的擬合效果; 而Deep image matting (DIM)法[10]首次構(gòu)建了可用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的摳圖數(shù)據(jù)集, 在VGG16 網(wǎng)絡(luò)基礎(chǔ)上搭建了2 階段深度卷積神經(jīng)網(wǎng)絡(luò), 學(xué)習(xí)圖像中的結(jié)構(gòu)、顏色信息和語義信息等, 對(duì)α圖從粗到細(xì)進(jìn)行估計(jì)以達(dá)到最優(yōu)值.
本工作在DIM 法的網(wǎng)絡(luò)結(jié)構(gòu)基礎(chǔ)上根據(jù)摳圖任務(wù)的特點(diǎn)進(jìn)行了如下2 個(gè)部分的改進(jìn).
(1) 由于摳圖訓(xùn)練集個(gè)體圖像之間差異較大, 易導(dǎo)致訓(xùn)練網(wǎng)絡(luò)時(shí)的損失值產(chǎn)生較大振蕩, 并且存在收斂速度慢的問題, 因此在DIM 原網(wǎng)絡(luò)結(jié)構(gòu)中的每層卷積層后面加上標(biāo)準(zhǔn)批量化(batch normalization, BN)層[11], 將網(wǎng)絡(luò)中的批訓(xùn)練數(shù)據(jù)歸一化可有效防止過擬合, 加快模型收斂速度; 設(shè)置訓(xùn)練時(shí)批量大小(batch size)為16, 代替DIM 訓(xùn)練時(shí)的1, 此時(shí)反向傳播更新參數(shù)更符合數(shù)據(jù)集特性, 減少訓(xùn)練時(shí)損失振蕩, 有更加穩(wěn)定的回傳梯度.
(2) 由于預(yù)測(cè)的未知區(qū)域一般集中于前景物體邊緣部分, 故根據(jù)摳圖任務(wù)的特點(diǎn), 將原網(wǎng)絡(luò)結(jié)構(gòu)中的部分普通卷積層替換為可變形卷積(deformable convolution)層[12], 這樣可有效擴(kuò)大感受野范圍, 卷積采樣點(diǎn)更集中于物體邊緣, 以獲得更好的細(xì)節(jié)處理效果.
整個(gè)摳圖網(wǎng)絡(luò)的具體結(jié)構(gòu)如圖2 所示, 由原圖和與其對(duì)應(yīng)的三元圖組成四通道輸入, 經(jīng)過下、上采樣, 輸出為一通道α圖. 下采樣的特征提取網(wǎng)絡(luò)與VGG16 網(wǎng)絡(luò)類似, 可按特征圖大小變換分為5 個(gè)階段, 將VGG16 網(wǎng)絡(luò)中的最后一層全連接層替換為卷積層, 每個(gè)卷積結(jié)構(gòu)都由卷積層、BN 層和Relu 激活函數(shù)組成. 針對(duì)摳圖任務(wù)的特點(diǎn), 將第3~5 階段的2 個(gè)普通卷積層替換為可變形卷積層. 在下采樣的卷積層和可變形卷積層中, 卷積核大小均為3×3, 卷積時(shí)步長為2, padding 為1, 即在卷積前后不改變特征圖大小. 另外, 下采樣時(shí)使用最大值池化操作來丟棄冗余信息, 并保留最大值池化映射; 在上采樣時(shí)根據(jù)該映射進(jìn)行反池化, 從而一步步擴(kuò)大特征圖, 以此更好地保留和恢復(fù)邊緣信息; 在反池化層后接5×5 卷積核的卷積層, 將反池化后的稀疏特征圖通過卷積計(jì)算得到更為稠密的特征圖.
圖2 摳圖網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Matting network structure
2.1.1 BN 層
神經(jīng)網(wǎng)0絡(luò)的訓(xùn)練主要是學(xué)習(xí)數(shù)據(jù)的分布. 在基于深度學(xué)習(xí)完成圖像摳圖任務(wù)時(shí), 由于摳圖訓(xùn)練集中各圖像差異較大, 又常設(shè)置batch size 為1 來進(jìn)行訓(xùn)練, 因此每次輸入網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)的分布千差萬別, 網(wǎng)絡(luò)在每次迭代時(shí)需要進(jìn)行大范圍的參數(shù)更新以適應(yīng)不同分布的數(shù)據(jù), 整個(gè)網(wǎng)絡(luò)在訓(xùn)練時(shí)不穩(wěn)定, 且收斂慢. 如果在卷積層之間加入BN 層, 對(duì)輸入卷積層的數(shù)據(jù)進(jìn)行歸一化處理, 則可有效改善訓(xùn)練過程中出現(xiàn)的不穩(wěn)定、收斂慢等問題. 加入BN 層的具體公式為[11]
式中:m為批量輸入網(wǎng)絡(luò)的數(shù)據(jù)個(gè)數(shù), 即batch size;xi為輸入數(shù)據(jù);μB和σ2B分別為輸入數(shù)據(jù)的均值和方差; ^xi為歸一化后數(shù)據(jù);γ和β為2 個(gè)可學(xué)習(xí)參數(shù);yi為經(jīng)過BN 層后的輸出數(shù)據(jù).
由上述公式可以看出, BN 層的加入不僅使輸入數(shù)據(jù)進(jìn)行了歸一化操作, 并且還引入了2 個(gè)可學(xué)習(xí)參數(shù), 不影響網(wǎng)絡(luò)的非線性表達(dá)能力. 因此, 在摳圖網(wǎng)絡(luò)的每層卷積后都加入了BN層, 并且設(shè)置batch size 為16 進(jìn)行訓(xùn)練, 網(wǎng)絡(luò)是在小批量數(shù)據(jù)的基礎(chǔ)上進(jìn)行參數(shù)更新, 更有利于網(wǎng)絡(luò)進(jìn)行有效的學(xué)習(xí)數(shù)據(jù)分布, 同時(shí)也加快了網(wǎng)絡(luò)訓(xùn)練速度和收斂速度, 穩(wěn)定網(wǎng)絡(luò)訓(xùn)練過程, 防止過擬合.
2.1.2 可變形卷積
普通卷積層一般采用1×1、3×3 或5×5 等大小不一的正方形卷積核, 對(duì)于不同的輸入數(shù)據(jù)都采用相同幾何結(jié)構(gòu)和尺寸的卷積核進(jìn)行卷積計(jì)算, 因?yàn)橛泄潭ù笮〉母惺芤? 網(wǎng)絡(luò)就無法根據(jù)輸入數(shù)據(jù)的不同, 自適應(yīng)地迎合物體尺寸、形狀變換. 在原始卷積核的基礎(chǔ)上, 添加學(xué)習(xí)的2 維偏移量, 根據(jù)物體形狀進(jìn)行調(diào)整, 偏移后的卷積核不再是固定形狀, 更符合實(shí)際輸入.以3×3 普通卷積核ω為例, 對(duì)于輸入圖像x在p0處的像素點(diǎn), 卷積后得到y(tǒng)(p0)的具體公式[12]:
式中:R={(-1,-1),(-1,0),··· ,(0,1),(1,1)}, 即pn為p0處周圍3×3 范圍內(nèi)的像素點(diǎn)位置. 而可變形卷積層在此基礎(chǔ)上加入網(wǎng)絡(luò)單獨(dú)分支學(xué)習(xí)到的卷積核偏移量, 則上述p0處卷積操作可變?yōu)?/p>
式中: Δpn為偏移值.
摳圖任務(wù)主要是預(yù)測(cè)三元圖中未知區(qū)域的α值, 而未知區(qū)域部分往往位于物體的邊緣部分, 因此卷積核形狀多變的可變形卷積層比普通卷積層更適合于進(jìn)行摳圖任務(wù). 通過迭代學(xué)習(xí), 可變性卷積層使網(wǎng)絡(luò)能根據(jù)圖像前背景特性來自適應(yīng)學(xué)習(xí)卷積核, 卷積區(qū)域也會(huì)始終覆蓋在物體形狀的相關(guān)區(qū)域, 從而有效地?cái)U(kuò)大感受野范圍, 更好地結(jié)合語義信息進(jìn)行α圖的估計(jì).
2.2.1 數(shù)據(jù)集合成
訓(xùn)練使用的是DIM[10]構(gòu)建的數(shù)據(jù)集, 其中包含訓(xùn)練集的431 幅前景圖像、測(cè)試集的50 幅前景圖像.訓(xùn)練集中的每幅前景圖像與100 幅不同的背景圖像通過α圖合成, 組成一個(gè)共43 100 幅圖像的合成訓(xùn)練數(shù)據(jù)集, 測(cè)試集中的每幅前景圖像與20 幅不同的背景圖像進(jìn)行合成,組成一個(gè)共1 000 幅圖像的合成測(cè)試數(shù)據(jù)集Composition-1k, 其中背景圖像來自目標(biāo)檢測(cè)數(shù)據(jù)集COCO 2014 和VOC 2007, 具體合成流程如圖3 所示.
圖3 數(shù)據(jù)集的合成Fig.3 Process of compositing dataset
2.2.2 三元圖的生成
在摳圖算法中, 三元圖的輔助信息必不可少, 三元圖的輔助信息越精確則最后的摳圖結(jié)果越好. 訓(xùn)練網(wǎng)絡(luò)所需的三元圖是通過α圖的腐蝕膨脹獲得, 三元圖生成過程如圖4 所示. 圖中,對(duì)α圖白色區(qū)域進(jìn)行腐蝕操作得到腐蝕圖; 再對(duì)α圖白色區(qū)域進(jìn)行膨脹操作得到膨脹圖; 將膨脹圖與腐蝕圖相減, 得到灰色未知區(qū)域; 將灰色未知區(qū)域與腐蝕后的白色區(qū)域相結(jié)合得到最終的三元圖. 通過設(shè)置不同腐蝕膨脹率, 可以獲得大小不同未知區(qū)域的三元圖. 本工作中腐蝕膨脹核為1~5 之間的隨機(jī)值, 迭代次數(shù)為1~20 之間的隨機(jī)值, 可有效提高摳圖網(wǎng)絡(luò)的魯棒性.
圖4 三元圖的生成過程Fig.4 Generation of trimap
2.2.3 模型訓(xùn)練
訓(xùn)練時(shí)使用如式(8)所示的損失函數(shù), 計(jì)算預(yù)測(cè)的α圖和Groundtruth 圖(公開數(shù)據(jù)集提供的標(biāo)準(zhǔn)圖, 即α真實(shí)值)之間的差異:
式中:αp為預(yù)測(cè)的α圖;αg為Groundtruth;ε=1.0×10-6.
數(shù)據(jù)增廣是深度學(xué)習(xí)模型訓(xùn)練時(shí)常用的技巧之一, 能在數(shù)據(jù)集數(shù)量有限的情況下增加訓(xùn)練數(shù)據(jù)的多樣性, 提高模型的泛化性能. 在訓(xùn)練摳圖網(wǎng)絡(luò)時(shí)采用的數(shù)據(jù)增廣方式有水平翻轉(zhuǎn)、平移、裁剪、色彩變換, 其中裁剪是以三元圖中的未知區(qū)域?yàn)橹行? 進(jìn)行一定大小的裁剪, 裁剪出像素為320×320、640×640 大小的圖像, 送入網(wǎng)絡(luò)進(jìn)行訓(xùn)練.
訓(xùn)練時(shí), 下采樣網(wǎng)絡(luò)采用經(jīng)ImageNet 預(yù)訓(xùn)練的VGG16 網(wǎng)絡(luò)參數(shù)進(jìn)行初始化, 其中輸入卷積層的第4 通道采用全0 初始化, 可變形卷積層和上采樣網(wǎng)絡(luò)卷積層中的參數(shù)使用Xavier初始化, 設(shè)置batch size 為16, 迭代30 次, 學(xué)習(xí)率設(shè)置為0.000 01, 在第20 次迭代時(shí)減小學(xué)習(xí)率為0.000 001, 采用Adam 優(yōu)化器進(jìn)行梯度下降優(yōu)化參數(shù).
為了比較各方法優(yōu)劣性, 本工作將幾種傳統(tǒng)方法和基于深度學(xué)習(xí)的摳圖方法在Compsition-1k 上進(jìn)行了測(cè)試. 評(píng)測(cè)是基于Rhemann 等[13]提出的4 個(gè)常用指標(biāo), 即絕對(duì)誤差之和(sum of absolute difference, SAD)、均方誤差(mean squared error, MSE)、Gradient 和Connectivity, 其中SAD 是計(jì)算預(yù)測(cè)α圖和Groundtruth 各像素值之間的絕對(duì)誤差和; MSE計(jì)算預(yù)測(cè)的α圖和Groundtruth 各像素值之間的平均平方誤差. 單純比較二者之間的數(shù)值差異并不能全面衡量最終估計(jì)的α圖質(zhì)量, 因此本工作另外加入了2 個(gè)評(píng)價(jià)指標(biāo)Gradient 和Connectivity 來評(píng)估整體誤差, Gradient 指標(biāo)主要計(jì)算二者的歸一化梯度差異, 預(yù)測(cè)的α圖和Groundtruth 越相似, 則該指標(biāo)值越小; Connectivity 主要計(jì)算二者像素的連通性差異, 該指標(biāo)值越小連通性越好,α圖上的斷點(diǎn)越少圖像質(zhì)量越好. 具體數(shù)值結(jié)果如表1 所示.
從表1 數(shù)據(jù)可以看出: DCNN matting 是基于深度學(xué)習(xí)的方法, 但由于缺少大型的訓(xùn)練數(shù)據(jù)集, 沒有發(fā)揮出卷積神經(jīng)網(wǎng)絡(luò)的作用, 沒有在KNN matting、Learning based matting 和Closed-form matting 傳統(tǒng)方法的基礎(chǔ)上有較大提升; DIM 構(gòu)建了摳圖數(shù)據(jù)集, 在摳圖評(píng)測(cè)結(jié)果上有了大幅度的提升; 在DIM 網(wǎng)絡(luò)基礎(chǔ)上加入BN 結(jié)構(gòu), 雖然在SAD 指標(biāo)上略微有性能下降, 但在MSE 和Gradient 2 個(gè)指標(biāo)上均有提升, 并且在實(shí)驗(yàn)中網(wǎng)絡(luò)的收斂速度明顯加快; 用可變形卷積層替換普通卷積層在細(xì)節(jié)方面也獲得了更好的效果, 在4 個(gè)評(píng)測(cè)指標(biāo)上均有提升,其中Gradient 指標(biāo)從36.7 提升至29.6.
表1 幾種方法在Compsition-1k 測(cè)試集上的結(jié)果比較Table 1 Comparison results of several methods on Compsition-1k test set
幾種方法在Compsition-1k 測(cè)試集上的結(jié)果圖如圖5 所示. 從圖中可以看出,傳統(tǒng)方法幾乎不能在大片未知區(qū)域部分預(yù)測(cè)出圖像前景的α值, 如燈泡的球體部分以及蒲公英的觸須部分; DCNN matting 是基于深度學(xué)習(xí)的方法, 但從可視化結(jié)果圖中也可以看出, 預(yù)測(cè)結(jié)果仍不理想, 在圖像透明燈泡中的背景部分仍清稀可見; DIM 算法相比于傳統(tǒng)算法有較好的預(yù)測(cè)結(jié)果, 但細(xì)節(jié)部分仍有缺失, 如燈泡的燈芯部分. 從實(shí)驗(yàn)結(jié)果可以看出, 在DIM 結(jié)構(gòu)基礎(chǔ)上加入了BN 層和可變形卷積層, 細(xì)節(jié)部分有了更精確的預(yù)測(cè), 生成的α圖也有更高的質(zhì)量.
圖5 幾種方法Composition-1k 測(cè)試集上的部分結(jié)果Fig.5 Partial results of several methods on Composition-1k test set
表2 為幾種方法在相同圖像上的平均行計(jì)算時(shí)間, 其中DIM 和本方法是在GPU 2080 Ti 上計(jì)算所得. 由表2 可見, 基于深度學(xué)習(xí)的方法對(duì)于相同圖像的計(jì)算遠(yuǎn)快于如KNN matting 等傳統(tǒng)算法. 由于DCNN matting 輸入包含KNN matting 和Closed-form matting 的結(jié)果, 故此處未進(jìn)行運(yùn)行時(shí)間的比較, 因?yàn)楸痉椒ㄓ每勺冃尉矸e層替換普通卷積層引入了更多參數(shù), 從而在運(yùn)行時(shí)間上略慢于DIM, 但本方法在摳圖結(jié)果上有更高的質(zhì)量.
表2 幾種方法運(yùn)行時(shí)間比較Table 2 Comparison of running time of several methods
本工作提出了一種基于深度學(xué)習(xí)的摳圖方法, 根據(jù)摳圖任務(wù)的特點(diǎn), 在原有下、上采樣結(jié)構(gòu)中的每層卷積層后加入了BN 層, 并且用可變形卷積層替換普通卷積層, 網(wǎng)絡(luò)能根據(jù)不同的輸入數(shù)據(jù)自適應(yīng)學(xué)習(xí)卷積核的偏移量, 有效擴(kuò)大圖像的感受野. 實(shí)驗(yàn)表明, 這種改進(jìn)使得摳圖網(wǎng)絡(luò)在Composition-1k 數(shù)據(jù)集上的4 個(gè)性能指標(biāo)都有一定提升, 在生成的α圖的細(xì)節(jié)部分也有更好的效果.
雖然本方法在測(cè)試數(shù)據(jù)集上獲得了較好的結(jié)果, 但在實(shí)際應(yīng)用過程中仍存在依賴GPU 硬件加速以及計(jì)算量大、速度慢的問題, 在以后的研究中仍要著重于減少網(wǎng)絡(luò)參數(shù), 用更輕量的結(jié)構(gòu)來獲得更優(yōu)的效果. 另外在實(shí)際應(yīng)用過程中, 對(duì)全新的任務(wù)來說三元圖的獲取也需要人工標(biāo)注, 故在之后的研究中高質(zhì)量三元圖的自動(dòng)生成也是一個(gè)重要的課題.