侯玉寒,宋建輝,劉硯菊,劉曉陽
(沈陽理工大學(xué) 自動化與電氣工程學(xué)院,沈陽 110159)
圖像摳圖技術(shù)作為計算機視覺領(lǐng)域的研究內(nèi)容,在影視特效、視頻創(chuàng)作和平面設(shè)計等方面有著廣泛的應(yīng)用[1]。目前,大多數(shù)摳圖任務(wù)需要人工選擇區(qū)域完成,因為輸入的三分圖需要手動創(chuàng)建,導(dǎo)致工作量大且效率低下。因此,研究無需人工輸入三分圖且能確保精確度的人像自動摳圖算法具有重要意義。
圖像摳圖方法分為傳統(tǒng)方法和深度學(xué)習(xí)方法。傳統(tǒng)摳圖方法包括基于采樣、基于傳播及采樣傳播相結(jié)合三種[2]。Huang等[3]提出了像素級多目標(biāo)采樣算法,該算法雖然提高了采樣性能,但最優(yōu)像素對易丟失,無法保證其魯棒性。Chen等[4]提出了K近鄰(KNN)摳圖算法,在非局部區(qū)域使用K個最近鄰像素進行匹配,但對存在間斷(如孔洞等)的物體前景提取效果較差。隨著深度學(xué)習(xí)的快速發(fā)展,基于深度學(xué)習(xí)的摳圖算法占據(jù)了重要地位。Xu等[5]提出了深度圖像摳圖(DIM)算法,該算法由編解碼網(wǎng)絡(luò)與細化網(wǎng)絡(luò)組成,無需傳統(tǒng)方法輔助,但需要三分圖作為輸入,時效性較差。Chen等[6]提出了語義人像摳圖(SHM)算法,在自動摳圖領(lǐng)域中取得了突破性進展,該算法無需三分圖作為輸入,但其參數(shù)量較多,模型較大。
針對以上問題,本文提出嵌入卷積塊注意力模塊的人像自動摳圖算法。通過預(yù)分割分支網(wǎng)絡(luò)、Alpha摳圖分支網(wǎng)絡(luò)和細節(jié)融合分支網(wǎng)絡(luò)進行學(xué)習(xí),恢復(fù)人像復(fù)雜結(jié)構(gòu),得到最終Alpha圖,在無需三分圖輸入的情況下完成自動摳圖。
1.1.1 MobileNetV2主干網(wǎng)絡(luò)
預(yù)分割分支網(wǎng)絡(luò)采用輕量級MobileNetV2[7]作為主干網(wǎng)絡(luò),以減少網(wǎng)絡(luò)參數(shù),使網(wǎng)絡(luò)更輕量化。
MobileNetV2網(wǎng)絡(luò)保留了MobileNet網(wǎng)絡(luò)[8]的深度可分離卷積,同時加入具有線性瓶頸的倒殘差結(jié)構(gòu)[9]。倒殘差結(jié)構(gòu)如圖1所示。
圖1 倒殘差結(jié)構(gòu)圖
由圖1可見,倒殘差結(jié)構(gòu)通過1×1卷積進行升維及降維,中間使用3×3深度可分離卷積對各通道的空間特征進行提取,最后使用線性變換(Linear)代替ReLU進行激活。對于步長為1的卷積,其輸入、輸出特征大小相同,故對獲取的特征圖進行跨越連接操作;步長為2時,其輸入、輸出特征大小不同,為加強算法精度,不進行跨越連接。標(biāo)準卷積的參數(shù)數(shù)量為M×N×Dk×Dk,其中M為輸入圖像通道數(shù)、N為輸出圖像通道數(shù)、Dk為卷積核大??;深度可分離卷積將卷積參數(shù)數(shù)量減少至M×Dk×Dk+N×M。MobileNetV2通過深度可分離卷積減少卷積參數(shù),同時通過倒殘差結(jié)構(gòu)確保深層分割網(wǎng)絡(luò)的魯棒性。
1.1.2 輕量級MobileNetV2-Unet網(wǎng)絡(luò)構(gòu)架
本文預(yù)分割分支網(wǎng)絡(luò)搭建了一個輕量級神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)如圖2所示。通過對輸入的人像進行語義分割,獲取包括背景、前景和不確定區(qū)域的三分圖。本文采用的基礎(chǔ)網(wǎng)絡(luò)框架Unet是以用于語義分割的全卷積網(wǎng)絡(luò)(FCN)[10]為基礎(chǔ)的U形對稱網(wǎng)絡(luò)。通過編碼器完成降維和特征提取,初始卷積層使用3×3卷積核并逐級進行4次2×2最大池化,得到尺寸縮小1/8、通道深度擴大16倍的特征圖。本文算法在上采樣前將Unet特征連接與MobileNetV2特征提取相結(jié)合,經(jīng)過一個2×2的卷積提取特征,防止參數(shù)過多導(dǎo)致過擬合問題;在獲得較淺層特征時使用更少的卷積,從而保留更多的淺層特征信息,加快人像的分割速度。
圖2 預(yù)分割分支網(wǎng)絡(luò)結(jié)構(gòu)圖
對于5層的Unet網(wǎng)絡(luò),其規(guī)模較大,模型參數(shù)較多,為降低模型體量,本文在保留其U形編解碼結(jié)構(gòu)的同時,使用MobileNetV2作為編碼器進行特征提取,減少卷積參數(shù)。在MobileNetV2中使用的ReLU6激活函數(shù)無負值,表達式如式(1)所示,其必要的稀疏處理操作會過濾很多有效特征,從而影響模型對有效信息的學(xué)習(xí);線性激活函數(shù)計算復(fù)雜,對量化過程不友好。故本文引入hswish激活函數(shù)[11],將MobileNetV2倒殘差結(jié)構(gòu)中的ReLU6、線性激活函數(shù)替換為h-swish進行優(yōu)化,如式(2)所示。
式中x為輸入。
因h-swish激活函數(shù)在更深層網(wǎng)絡(luò)上的效果更好,故在預(yù)分割網(wǎng)絡(luò)結(jié)構(gòu)中淺層網(wǎng)絡(luò)的激活函數(shù)仍使用ReLU6和線性激活函數(shù),在第5層倒殘差模塊中使用替換的h-swish激活函數(shù),以保留更多的有效特征,提高神經(jīng)網(wǎng)絡(luò)的精度。
網(wǎng)絡(luò)的解碼器部分包括解碼模塊和一個輸出預(yù)測層,解碼模塊由跳躍連接結(jié)構(gòu)及最大值去池化層、卷積層、批處理標(biāo)準化(BN)層[12]組成。本文通過解碼模塊使經(jīng)過特征提取后得到的低分辨率圖片在保留高級抽象特征的同時變?yōu)楦叻直媛蕡D片;再通過特征拼接后使用反卷積-卷積至下一次上采樣,逐級進行4次上采樣操作,恢復(fù)原圖分辨率;最后通過輸出預(yù)測層采用2個卷積核大小為1×1的卷積得到三通道的特征圖。
1.1.3 預(yù)分割分支網(wǎng)絡(luò)損失函數(shù)
通過預(yù)分割分支網(wǎng)絡(luò)得到三分圖,使用如式(3)所示的Softmax函數(shù)[13]輸出概率分布,采用交叉熵損失函數(shù)Lt,其計算式如式(4)所示。
式中:qim表示像素i屬于類別m時通過Softmax函數(shù)獲得的網(wǎng)絡(luò)預(yù)測圖像類別概率;yi表示預(yù)分割網(wǎng)絡(luò)輸出;ym表示像素屬于類別m時的輸出;N表示類別數(shù)量;Pim表示像素i的標(biāo)簽,當(dāng)預(yù)測的三分圖像素i所屬真實類別為m時,Pim為1,否則為0。
1.2.1 卷積塊注意力模塊
卷積塊注意力模塊(Convolutional Block Attention Module,CBAM)[14]結(jié)構(gòu)如圖3所示。該模塊首先通過通道注意力模型對輸入的特征圖使用最大池化及平均池化進行壓縮;再將獲得的兩個權(quán)重向量送入多層感知機(MLP)神經(jīng)網(wǎng)絡(luò)[15];最后將其輸出的兩個特征相加并使用Sigmoid函數(shù)激活得到通道注意力特征圖MC(F),其表達式為
圖3 CBAM模塊結(jié)構(gòu)
式中:F為輸入特征圖;σ表示Sigmoid函數(shù);AvgPoolC、MaxPoolC分別表示在通道上的平均池化和最大池化;W0和W1為感知機的學(xué)習(xí)權(quán)重,W0∈Rc/r×c、W1∈Rc×c/r,其中r為控制感知機的衰減系數(shù),c為特征圖的通道數(shù);FCavg、FCmax分別表示平均池化和最大池化的通道特征圖。
通過空間注意力模型在通道方向上對特征圖MC(F)與輸入F進行張量乘法操作得到特征圖F',對F'進行平均池化和最大池化,并將得到的兩個特征圖在通道方向上進行連接,經(jīng)過卷積、Sigmoid激活后生成空間注意力特征圖MS(F'),其表達式為
式中:f7×7為7×7的卷積;AvgPoolS、MaxPoolS分別為在空間上的平均池化和最大池化;、分別表示平均池化和最大池化的空間特征圖。
將二維空間特征圖MS(F')與輸入特征圖F'進行張量乘法操作,得到最終的輸出特征圖。
1.2.2 嵌入CBAM的Alpha摳圖分支網(wǎng)絡(luò)
Alpha摳圖分支網(wǎng)絡(luò)將預(yù)分割分支網(wǎng)絡(luò)的輸出與原始圖像合為一個圖像后作為語義輸入,其架構(gòu)為編解碼(Encoder-Decoder)結(jié)構(gòu)[5],但對其結(jié)構(gòu)進行剪枝操作,在確保精度的前提下盡量縮小模型;在網(wǎng)絡(luò)中加入CBAM模塊,捕捉人像目標(biāo)細節(jié)信息,加強邊界細節(jié)的恢復(fù),最后得到Alpha圖。Alpha摳圖分支網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 Alpha摳圖分支網(wǎng)絡(luò)結(jié)構(gòu)
Encoder網(wǎng)絡(luò)采用5個卷積核大小為3×3的卷積層和4個最大池化層。在每個卷積層后加入BN層和ReLU激活函數(shù)以加速收斂。為將網(wǎng)絡(luò)層中復(fù)雜豐富的細節(jié)信息最大化恢復(fù),在編碼器最終的卷積層后加入CBAM模塊:首先采用通道注意力模塊進行通道權(quán)重向量計算得到MC(F),融合高級人像特征,獲取豐富的上下文信息;然后通過空間注意力模塊進行權(quán)重矩陣計算得到MS(F'),提升關(guān)鍵區(qū)域的特征表達,減少毛發(fā)等輸出的紋理細節(jié)信息的丟失。CBAM模塊輸出特征圖通過Decoder網(wǎng)絡(luò)用5個卷積核大小為5×5的卷積層和4個最大去池化層進行上采樣操作,每個卷積層結(jié)構(gòu)均由3×3卷積、BN層和ReLU激活函數(shù)組成[12],在上采樣時依照下采樣得到的最大池化映射進行反池化,從而逐步恢復(fù)特征圖分辨率,進而更好地恢復(fù)邊緣信息,最后通過輸出預(yù)測層得到初步的Alpha圖。
1.2.3 Alpha摳圖分支網(wǎng)絡(luò)損失
Alpha摳圖分支網(wǎng)絡(luò)損失主要包括Alpha預(yù)測損失和合成損失,其損失函數(shù)Lp計算式為
式中:λ為約束,設(shè)置為0.5;αr表示Alpha圖的初步預(yù)測值;αg表示Alpha圖的真實值;hp、hg分別表示圖像前景的預(yù)測值及真實值,計算式分別為
式中I表示輸入的圖片。
細節(jié)融合分支網(wǎng)絡(luò)將預(yù)分割分支網(wǎng)絡(luò)輸出的語義信息與摳圖分支網(wǎng)絡(luò)輸出的結(jié)構(gòu)和紋理細節(jié)信息相融合,聚焦于不確定區(qū)域,以得到精細的Alpha圖。使用P、B和U分別代表預(yù)分割分支網(wǎng)絡(luò)在Softmax層之前預(yù)測的前景、背景和不確定區(qū)域的通道,則預(yù)測前景、背景及不確定區(qū)域的概率計算式分別為
式中Pg、Bg和Ug分別為預(yù)測前景、背景及不確定區(qū)域的概率。
當(dāng)像素位于不確定區(qū)域內(nèi)時,該像素更可能屬于人的輪廓并構(gòu)成類似發(fā)絲等的復(fù)雜結(jié)構(gòu),使用Alpha摳圖分支網(wǎng)絡(luò)得到的αr更精確。像素位于不確定區(qū)域之外時,該像素屬于前景的概率為Pg/(Pg+Bg),則Alpha圖的最終預(yù)測值αp的計算式為
本文網(wǎng)絡(luò)總損失L包括預(yù)分割分支網(wǎng)絡(luò)損失和Alpha摳圖分支網(wǎng)絡(luò)損失,其表達式為
式中λ為分解約束,用于保證三分圖有實際意義,本文設(shè)為0.01。
本文實驗數(shù)據(jù)集采用Human Matting[6]和Real World Portrait[16]人像數(shù)據(jù)集,各包含34 427張人像及對應(yīng)Alpha圖、636張人像及對應(yīng)Alpha圖。去掉含遮擋的不規(guī)范圖片及Alpha圖效果較差的圖片,挑選出包含人體各個部位、各種姿勢的16 000張高質(zhì)量圖片作為訓(xùn)練集,并將其大小統(tǒng)一裁剪為600×800進行訓(xùn)練。
為定量評估摳圖算法的性能,使用絕對誤差和(SAD)、均方誤差(MSE)[17]作為評價指標(biāo)。SAD用來衡量圖像像素之間的相似度,MSE表示圖像像素間誤差平方的期望值,SAD和MSE值越小,模型預(yù)測結(jié)果越準確,兩者計算式分別為
式中:αip為像素i處Alpha圖的預(yù)測值;αig為數(shù)據(jù)庫中像素i處Alpha圖的真實值;n為像素的個數(shù)。
本文實驗硬件環(huán)境為Ubuntu20.04 64位系統(tǒng)、GPU為NVIDIA Quadro P5000、CPU為Intel Xeon×12,通過PyTorch框架及編程語言Python3完成訓(xùn)練和測試。訓(xùn)練過程中樣本設(shè)為160個/批。
使用自適應(yīng)矩估計(Adam)優(yōu)化器對網(wǎng)絡(luò)進行優(yōu)化。表1為本文算法預(yù)分割分支網(wǎng)絡(luò)與端到端網(wǎng)絡(luò)訓(xùn)練的超參數(shù)設(shè)置。
表1 超參數(shù)設(shè)置
采用網(wǎng)絡(luò)參數(shù)統(tǒng)計工具torchstat對原始Unet網(wǎng)絡(luò)、SHM算法采用的PSPNet網(wǎng)絡(luò)及本文采用的MobileNetV2-Unet網(wǎng)絡(luò)進行參數(shù)量計算,結(jié)果如表2所示。
表2 網(wǎng)絡(luò)參數(shù)量對比
由表2可知,與圖像分割網(wǎng)絡(luò)Unet及PSPNet網(wǎng)絡(luò)相比,本文采用的MobileNetV2-Unet網(wǎng)絡(luò)應(yīng)用深度可分離卷積,在參數(shù)規(guī)模上具有一定優(yōu)勢。
為評估本文嵌入CBAM模塊摳圖算法的有效性,分別與具有代表性的傳統(tǒng)KNN摳圖算法、深度學(xué)習(xí)的半自動DIM算法及無CBAM模塊的SHM自動摳圖算法進行對比。由于SHM算法未公開其相關(guān)程序,故本文對比實驗使用相同數(shù)據(jù)集的復(fù)現(xiàn)版。為保證實驗結(jié)果可靠,對比算法均使用與本文相同的數(shù)據(jù)集進行訓(xùn)練,并且將經(jīng)過良好訓(xùn)練的網(wǎng)絡(luò)得到的三分圖作為約束,采用SAD、MSE作為通用衡量標(biāo)準,對比分析結(jié)果如表3所示。
表3 不同摳圖算法對比
由表3可見,本文提出的嵌入CBAM人像摳圖算法評價指標(biāo)SAD、MSE值最小,與Trimap+DIM算法相比,SAD值降低了7.5%、MSE值降低了19.4%,運算時間為每張圖片0.162 s,從精度與時間兩方面衡量,均具有一定優(yōu)勢。本文算法加入CBAM模塊,充分利用人像的語義特征及細節(jié)信息,無需三分圖輸入,只需要一張彩色圖像即可完成摳圖任務(wù)。
本文對各算法進行測試的直觀對比結(jié)果如圖5~7所示。圖5、圖6、圖7分別代表在自然場景下、室外及室內(nèi)環(huán)境下各復(fù)雜背景的細節(jié)識別,每組效果圖包括人像Alpha圖及對應(yīng)細節(jié)放大圖。
圖5 自然場景下算法對比效果圖
圖6 室外環(huán)境下算法對比效果圖
圖7 室內(nèi)環(huán)境下算法對比效果圖
對比圖5~7可以看出:傳統(tǒng)的KNN算法在三種環(huán)境下人像摳圖效果最差,易過度分割,在圖5(b)、圖7(b)中存在嚴重的背景誤判問題,在圖6(b)中存在很多偽影;SHM算法對人物邊緣輪廓的處理較柔和,其Alpha圖較為平滑,但對于有過多發(fā)絲的人像仍然存在背景誤判現(xiàn)象,如在圖5(c)中對于人像的發(fā)尾沒有完全分割出來,也存在漏分情況,如圖7(c)的細節(jié)放大圖中未完全分離出其發(fā)絲之間的孔洞;DIM算法摳圖效果較好,對于人像的發(fā)絲部分能較好分離出來,但其算法需要以三分圖作為輸入,其三分圖的準確程度對于人像的摳圖效果有直接影響。對比上述方法,本文采用的人像摳圖算法可以較為精細地完成人物細節(jié)信息處理,將圖像中人物與背景分離,對于復(fù)雜結(jié)構(gòu)也可以得到較好的摳圖效果,如圖5(e)和圖6(e)中人像發(fā)絲識別較好,圖7(e)中分離出發(fā)絲之間的孔洞,且無需三分圖作為輸入,邊界清晰。本文提出的算法達到了良好的摳圖效果,具有一定的可靠性。
本文針對大多數(shù)人像摳圖算法需要人工交互及摳圖精度不高的問題,提出了一種嵌入CBAM的人像自動摳圖算法。通過預(yù)分割分支網(wǎng)絡(luò)學(xué)習(xí)人像的語義信息,采用輕量級網(wǎng)絡(luò)MobileNetv2與Unet結(jié)合并加以改進,減少模型參數(shù);使用Alpha摳圖分支網(wǎng)絡(luò)學(xué)習(xí)人像細節(jié)信息,在網(wǎng)絡(luò)中加入CBAM模塊,提高摳圖質(zhì)量;通過細節(jié)融合分支網(wǎng)絡(luò)將前兩者學(xué)習(xí)的特征進行匯總,使用總損失函數(shù)進行約束,完成具有一定通用性的人像自動摳圖算法。實驗結(jié)果表明,本文提出的算法無需三分圖作為輔助輸入,模型參數(shù)量有所減少,其SAD、MSE指標(biāo)較其他算法均有所降低,網(wǎng)絡(luò)模型預(yù)測結(jié)果更準確,摳圖效果更好。