王 欣,王美麗,2,3,邊黨偉
1.西北農林科技大學 信息工程學院,陜西 咸陽 712100
2.農業農村部農業物聯網重點實驗室,陜西 咸陽 712100
3.陜西省農業信息與智能服務重點實驗室,陜西 咸陽 712100
4.西北機電工程研究所,陜西 咸陽 712100
圖像分割是計算機視覺領域的重要熱門之一,其在醫學、農業、軍事等諸多領域都得到了廣泛的關注。圖像分割是根據圖像的內在性規則,如像素點之間的明暗關系、圖像紋理、像素灰度級等來將圖像劃分為若干個子圖像區塊的過程,以使得每個區塊具有特定特征,與其他區塊形成顯著對比。
人像分割是圖像分割的一項重要研究內容,人像分割在自動駕駛、行人檢測、智能搜救、醫學影像等領域應用十分廣泛并發揮了極其重要的作用。人像分割方法分為傳統的人像分割方法[1]和基于深度學習的人像分割方法[2]。傳統的人像分割方法主要利用了視覺層的圖像低級語義信息,如圖像的顏色、形狀、紋理等信息作為分割依據,典型方法有基于閾值的分割方法、基于邊緣的分割方法等。基于閾值的分割方法[3-5]是依據計算得到的灰度閾值,按照圖像像素灰度值與閾值的大小關系,將像素點進行分類,然而若人物和背景的像素值差異并不大,邊界信息往往容易丟失。基于邊緣的分割方法[6]利用不同的微分算子[7]來進行邊緣檢測,但噪聲對算子影響較大,所以基于邊緣的分割方法只適合低噪聲且構圖簡單的圖像。真實場景拍攝的人像通常有著龐雜的背景信息,所以該算法一般不適用于人像分割[8]。
由于傳統方法存在分割噪點、邊緣粗糙等問題,難以勝任精細分割的任務,研究人員提出了基于深度學習的人像語義分割技術。該人像分割技術主要利用了深度學習的相關理論,通過卷積神經網絡從大量已標注的人像數據中提取出圖像特征并且挖掘出每個像素的語義信息進行分類。何冀軍等[9]提出了一種用于人像提取及半身像合成的生成對抗網絡算法,利用生成對抗網絡進行標準的人像證件照合成,該算法具有良好的適應性。Shen等[10]設計了一種基于全卷積神經網絡的人像分割算法,能夠有效地分離人物與背景,并且可以較好地處理人物頭發邊緣,取得了良好的分割效果。但是以上分割網絡往往為了追求分割效率以及精度需要龐大的計算資源和較強的硬件設備,不利于網絡的遷移使用。Sandler等[11]設計的輕量級網絡MobileNetv2解決了上述問題,MobileNetv2利用Linear Bottleneck和Inverted Residuals既可以提取到圖像足夠多的信息又能夠提升整體的計算速度,使得模型在保持輕量級時速度與精度也能得到保證。另外,張航等[12]在進行嬰兒腦部MR圖像分割時發現,分別使用FCN、2D FCN、3D FCN比U型網絡分割效果差,證明了U型網絡結構相較于普通全卷積結構來說,具備更好的特征學習能力以及復原圖像細節的能力。因此,本文引入Unet網絡的encoder-decoder(編碼器-解碼器)結構[13]并與輕量級MobileNetv2網絡相結合以獲得更好的算法魯棒性、更強的泛化能力和更精細的人像分割效果。為了解決深度卷積神經網絡難以訓練的難題,Ioffe等[14]在2015年提出了BN層(batchnormalization layer),BN層用于減少內部協變量漂移(ICS)現象,該現象指的是層層疊加的神經網絡,在低層向高層傳遞和更新參數時,高層參數變化十分劇烈,導致訓練者必須十分謹慎地設定初始化權重、學習率等。另外,Hinton等[15]提出Dropout層可以使模型具有更好的泛化能力,不過分依賴局部特征,能夠有效防止過擬合的出現。卷積核通常是在局部感受野上聚合多尺度空間信息以及特征通道信息,然而任一通道都無法利用上下文信息并從全局信息入手學習到各個特征通道的重要程度。Hu等[16]提出一種基于通道的注意力機制模塊SE block,該模塊關注特征通道之間的內在聯系,顯式地表達各個特征通道的重要影響程度,針對訓練者提出的不同任務進行加強或抑制不同的通道,有助于從全局角度學習有效特征。此外人像由半人體及其背景組成,適合二分類處理方式。原始Unet使用的分類交叉熵損失函數和輸出層激活函數softmax均適合多分類模式,會給模型訓練造成不必要的算力開銷,不利于模型最終對像素點的分類結果。在實際分割時,由于樣本類別分布不均衡造成目標人物周圍像素點粘連的情況。Dice loss[17]廣泛應用于醫學影像分割,能夠有效抑制目標像素以及背景像素的類別不平衡問題。但是若單獨使用Dice loss則會由于其數學形式,造成反向傳播時梯度形式不優導致訓練的穩定性極低的問題。BCE loss(binary cross entropy loss)[18]具有極優的梯度形式,彌補了Dice loss的不足,使用Dice loss與BCE loss組成的混合損失函數[19]使得模型能更好地優化,解決了上述問題。
本文在保留U型編碼器-解碼器結構的基礎上,通過將MobileNetv2作為編碼器部分用于特征提取,使用特征拼接連接上采樣與下采樣,增加注意力機制,使用混合損失函數等方式提出一種融合MobileNetv2和注意力機制的輕量級人像分割算法對人像進行精細分割,該模型同時支持在安卓平臺上使用。
傳統Unet網絡是由傳統FCN網絡變化而來的典型編碼器-解碼器類的U型網絡結構,Unet可以在數據集較小的情況下,對目標進行有效的分離。傳統Unet網絡[20]結構如圖1所示。該網絡有5層,在編碼時經歷4次下采樣,每次下采樣都要經過3×3卷積,再經過2×2池化到下一次下采樣;經過中間層后,進入解碼,經過4次上采樣輸出分割結果,每次上采樣都要經過特征圖融合和3×3卷積,再經過反卷積-卷積到下一次的上采樣,最終形成了U型結構。Unet采用分類交叉熵損失函數+輸出層激活函數softmax的組合形式,有利于多分類情況的圖像分割。

圖1 原始Unet模型示意圖Fig.1 Figure of original Unet
本文在Unet網絡[20]編碼器-解碼器類的U型網絡結構的啟發下構建輕量級的人像分割網絡,以獲得更高的人像分割精度和良好的人像分割效果。
詳細分割流程圖,見圖2,本文算法以人像半身圖作為輸入,隨后進行圖片預處理,其中包括數據增強、尺寸縮放和歸一化處理,最終輸入模型并輸出該人像圖片對應的分割掩膜。

圖2 本文算法流程示意圖Fig.2 Flow chart of proposed algorithm
本文在保留U型編碼器-解碼器結構的基礎上,將輕量級MobileNetv2網絡作為U型結構的編碼器部分;MobileNetv2網絡具備極強的特征提取能力,沒必要在中間層使用卷積層進行特征傳遞與提取,取消中間層結構;解碼器部分有四次特征拼接,每次特征拼接后都經過反卷積-卷積-注意力機制到下一次上采樣。特征拼接增加了相關語義特征信息的提取,另外使用注意力機制利用全局信息選擇性的增強有益特征的學習,有利于圖像的還原過程;針對目標像素點存在樣本不均衡導致難以進行分類的問題,引入混合損失函數來更好的適應訓練集的訓練過程。本文設計的人像分割算法網絡結構圖具體如圖3所示。

圖3 本文算法網絡結構圖Fig.3 Structure figure of proposed algorithm
原始Unet網絡層數是5,最大特征融合維度數是1 024,模型總參數量為31.38 MB,體量過大。具體模型參數見表1。為了降低模型體量使其具有可移植性,便于后期移植到移動端(移動端使用.h5文件轉換后的.tflite模型文件),在保留U型結構的基礎和保證模型精度與速度的情況下盡量減少模型的體量。本文將MobileNetv2作為編碼器部分的骨干網絡,設定輸入圖像大小為256×256。MobileNetv2提出了一種具有線性瓶頸的倒殘差結構,有助于模型學習到更精細的特征并且保證了模型的運行速率。由于輕量級MobileNetv2保證了下采樣已經提取到足夠多的特征,并不需要中間層使用層層疊加的卷積核來進行特征的二次提取與傳遞,本文對中間層結構進行剪枝操作。在decoder部分分別用17個linear bottlenecks中第1個、第3個、第6個、第13個的輸出結果對維度數為512、256、128、64的卷積核進行特征融合,特征融合后經過一個反卷積-卷積-注意力機制到下一次特征融合,4次維度拼接后經過反卷積-卷積-注意力機制恢復到256×256的圖片分辨率,形成了一個5層的U型結構。

表1 模型參數表Table 1 Parameters of model
BN層用于減少ICS現象、防止梯度彌散和加速模型的訓練。Dropout層可優化模型訓練過程,避免模型過擬合情況的發生。BN層和Dropout層疊加可應用于模型decoder部分中任意卷積層后、激活函數ReLU6[11]前。本文算法在上采樣卷積層后引入了BN層和Dropout層,有助于模型學習策略的制定和提高模型訓練速度。
采用激活函數ReLU6,見公式(1),導數見公式(2)。該函數作為非飽和激活函數類的代表,在防止梯度消失方面有無可替代的優勢。原始Unet使用ReLU函數,隨著激活函數的發展,ReLU6表現出了更好的性能優勢[20]。ReLU6可用在Dropout層之后,在防止梯度消失同時還可保持模型的可移植性。

公式(1)和(2)中,x代表輸入,f(x)代表輸出,f(x)范圍在0到6之間,f′(x)范圍在0到1之間。
本文將注意力機制融入到U型網絡的decoder部分,用于每次反卷積-卷積模塊后和輸出前,可以有效地學習到有益特征通道的信息,有利于模型的學習訓練過程。
注意力機制模塊SE block依據所構建的特征通道間的相互依賴關系,從全局角度構建特征通道間的重要性關系網。它主要由兩部分組成:壓縮部分(squeeze)和激勵部分(excitation)。squeeze見公式(3),全局平均池化,將每個通道的信息濃縮為一個標量,得到全局信息。excitation見公式(4),利用全局特征建立通道關系模型,全面捕獲通道依賴性。該操作具體為全連接層-relu-全連接層,由于ReLU6性能更優越[11],本文采用ReLU6函數,精度提升1.2%,交并比提升0.9%。利用各通道重要性逐通道加權到先前的特征上,得到最終特征,見公式(5)。詳細流程圖如圖4所示。

圖4 CE block流程圖Fig.4 Flow chart of CE block

公式(3)中,U k(i,j)表示上一個卷積核輸出的c維矩陣U c中第k維矩陣第i行j列的元素,W和H分別表示U k的寬和高,Z k表示第k維通道的壓縮值。

公式(4)中,Zc表示squeeze操作得到的c維特征圖,和,r為16[11],f表示ReLU6激活,σ表示sigmoid激活,S c表示c維通道重要性權值。

公式(5)中,?表示c維最終特征(Xc表示c維原始特征)。
2.4.1 原始Unet網絡損失函數
原始Unet采用分類交叉熵損失函數,見公式(6)。模型輸出層運用softmax激活函數進行多分類,計算像素點的分類概率[20]。

公式(6)中,n是樣本數,m是類別數,指的是第i個樣本在第一類的類別,指的是第i個樣本在第一類的概率,最終得到n個樣本的loss值。
2.4.2 混合損失函數
本文在二分類場景下對目標人物進行分割,引入適合二分類的混合損失函數和輸出層激活函數sigmoid來解決部分圖片人物邊緣難以分割和正負樣本像素點不均衡的問題。該混合損失函數[19]由Dice loss[17]和BCE loss[18]兩部分組成,解決了直接使用Dice loss會對模型訓練時反向傳播造成不利影響使得訓練的穩定性降低的問題,有利于模型的收斂與訓練。
混合損失函數見公式(10);Dice loss(LDL)見公式(8)。Dice loss是在Dice系數的基礎上取得的,Dice系數(s)具體形式見公式(7),公式(7)中A表示預測掩模人物像素區間,B表示真實標定人物像素區間。BCE loss(LBCE)具體形式見公式(9),公式(9)中,p表示該像素點的預測概率值,y表示該像素點的類別。

實驗硬件平臺是2塊RTX 2080 GPU,共48 GB顯存,Intel至強處理器,共96核,2 TB內存。軟件環境是ubuntu18.04、python3.6、tensorflow1.14。本文算法最佳超參數如表2所示。表2中,變量Epoch代表訓練迭代次數;Batchsize表示每小輪訓練時輸入模型的圖片數;優化器代表用來調整影響模型訓練的網絡參數;Lr表示學習率;Factor表示訓練精度不再提升時,學習率衰減的比率。

表2 本文算法最佳超參數Table 2 Best hyper-parameter of proposed algorithm
本文訓練數據集通過爬取網絡人像半身照并且手工標注mask標簽的方式進行采集,采集的人像半身照共3 900張。為了檢驗網絡的通用性,在Human_Matting[22]數據集和EG1800[10]數據集上分別進行測試,測試圖像均為.jpg格式下的RGB圖像。本文算法及對比算法均在訓練過程中采用十折交叉驗證的方式,最后使用測試集對最優模型進行評估測試。
本文采用的數據增強方式是在送入模型學習之前,在小批量(min-batch)上采用圖片隨機轉動、顏色變換、水平翻轉、垂直翻轉、亮度增強、裁剪等方式進行數據增強。
模型評價指標采用分割模型常用的像素準確率PA和IOU(交并比)指標。像素準確率PA指的是預測類別正確的像素點數占總像素點數的比例。IOU指標[23]指的是預測掩模人物像素區間占真實標定人物像素區間的比例,見公式(11)。

其中,A表示預測掩模人物像素區間,B表示真實標定人物像素區間。
本文算法保持了U型結構,通過將輕量級網絡MobileNetv2作為骨干網絡、中間層剪枝、精簡上采樣過程等方式來優化模型結構和模型訓練過程,通過調參來優化訓練過程和實驗結果。模型結構消融實驗性能變化情況如表3所示。

表3 模型結構變化情況Table 3 Changes of model structure
根據表3可知,在U型網絡中通過增加BN層、ReLU6有利于模型收斂和訓練;引入混合損失函數之后解決了樣本分布類別不均的問題,模型精度和IOU指標有較為明顯的提升;使用MobileNetv2有助于模型學習到更豐富的特征;去掉中間層不影響特征的傳遞和學習;精簡上采樣之后對模型的影響并不大;添加注意力機制后,通過特征分配,加強了有效特征的學習,精度和IOU指標有一定的提升。模型在訓練與驗證精度變化曲線分別如圖5所示。

圖5 本文模型訓練精度變化圖Fig.5 Variation diagram of model training accuracy in this paper
本文算法指標IOU優于周鵬等[24]于2020年文獻中92.29%的IOU值,指標PA優于楊堅偉等[25]于2020年文獻中95.57%的準確率。
在Human_Matting數據集上設計了一組對比實驗,本文算法與模型FCN[26]、Enet[27]、Segnet[13]、Fusionnet[28]、PortraitNet[29]、DeepLabv3+[30]進行對比,實驗結果詳見表4。

表4 分割算法比較(Matting)Table 4 Comparison of segmentation algorithms(Matting)
圖6和圖7直觀地展示了對比算法的掩膜分割效果。每組圖第一層是人像分割掩膜,第二層是相應的細節放大圖。FCN、Enet在兩組人像中背景誤判現象較為嚴重;Segnet在圖6(d)人像頸部邊緣的粘連較多,在圖7(d)人像肩部及手指尖端有輕微的背景誤判現象;Fusionnet對人物掩膜邊緣的處理較柔和,但仍然存在人物邊緣漏分情況;PortraitNet在圖6(f)人物右腋下孔洞未分離出,圖7(f)分割效果較好,所需分割用時較少;DeepLabv3+在圖6(g)人物左右腋下具有背景誤判現象,圖7(g)人物左肩上方有較小孔洞出現;本文算法能較為精細地處理人物細節信息,能分離出6(h)人物右腋下的背景,同時也能較好的識別7(h)人物手指尖端。

圖6 算法分割掩膜第一組效果圖Fig.6 First group of segmentation mask of algorithms

圖7 算法分割掩膜第二組效果圖Fig.7 Second group of segmentation mask of algorithms
為了更加客觀地評價本文算法,在EG1800數據集上設置了一組對比實驗。本文算法與模型FCN[26]、Enet[27]、Segnet[13]、Fusionnet[28]、PortraitNet[29]、DeepLabv3+[30]進行對比分析,實驗結果詳見表5。

表5 分割算法比較(EG1800)Table 5 Comparison of segmentation algorithms(EG1800)
為了更直觀地觀察分割效果,對比算法的分割掩膜效果圖,見圖8~10。圖8~10中,每組圖第一層是人像分割掩膜,第二層是相應的細節放大圖。FCN的人像效果存在嚴重的背景誤判現象,耗時較長;Enet在三組人像上有部分粘連,用時較FCN少;Segnet效果較前兩個對比算法好,人像粘連較少,但是粘連或缺失部分仍然可以很清楚地辨別,平均分割用時與Enet相近;Fusionnet在圖8(e)男性頭頂與背景有部分粘連,在圖9(e)肩部劃分有誤判,但是頭發邊緣細節分割效果較好,在圖10(e)人臉左邊有部分缺失;PortraitNet在圖8(f)人像頭頂頭發與背景有部分粘連,圖9(f)人像左部耳朵有大部分缺失,圖10(f)人物左邊發型部分有孔洞;DeepLabv3+在圖8(g)人像左耳下半部分有缺失,圖9(g)人物左耳外耳廓有背景誤判現象,圖10(g)分割效果較好,但在人物頭發邊緣處理不夠平滑;本文算法在三組圖中表現良好,能較好地將圖像中人物與背景分離,同時分割用時最短。通過以上分析可知,本文提出的算法可以有效地用于常見的人像前景背景二分類處理場景。

圖8 算法分割掩膜第一組效果圖Fig.8 First group of segmentation mask of algorithms

圖9 算法分割掩膜第二組效果圖Fig.9 Second group of segmentation mask of algorithms

圖10 算法分割掩膜第三組效果圖Fig.10 Third group of segmentation mask of algorithms
本文算法在Human_Matting和EG1800數據集上并不是所有的圖片都完美的將人物與背景分離,抽取兩數據集失敗樣例進行分析,分別見圖11和圖12。

圖11 失敗樣例分割掩膜效果圖(Matting)fig.11 Segmentation mask of failed examples(Matting)

圖12 失敗樣例分割掩膜效果圖(EG1800)Fig.12 Segmentation mask of failed examples(EG1800)
本文算法在Human_Matting數據集樣例1中人物手中托舉的水果未能良好地同人物一起分離開,樣例2中人物右臉頰與肩部之間的空隙有背景粘連情況;EG1800數據集樣例1中小女孩左半部分效果良好,但在右部手以下部分有背景誤判現象,樣例2中人物手部邊緣部分未能準確地進行識別并分離,并由于頭發蓬松,在頭發邊緣的處理也不夠精細。由此可見,本文算法雖已達到輕量級,但是也同樣由于輕量級過于精簡使得本文算法在人物手部特別是小指指尖,頭發邊緣等部位的精細分割上有所欠缺,在人物之外的干擾物體的影響下也有漏分的情況出現。
本文采用融合MobileNetv2和注意力機制的輕量級人像分割算法對自行收集標注的人物半身像數據集進行訓練。通過設置MobileNetv2為encoder部分、精簡中間及上采樣部分、增加注意力機制、結合混合損失函數等一系列操作,提升了模型分割效率,得到了具有一定通用性的人像分割網絡。本文通過與其他算法進行分割指標和人物半身像分割效果圖的對比,證明本文算法具有較好的分割效果,可有效用于人物目標檢測、綠幕摳圖等人物圖像處理階段。但本文算法同樣存在人物指尖及頭發邊緣處理不夠精細的情況,仍需要對上采樣卷積核特征提取和還原部分進行一定的改進。