周 鵬, 姚劍敏,2 *, 林志賢, 嚴(yán) 群,2, 郭太良
(1. 平板顯示技術(shù)國家地方聯(lián)合工程實(shí)驗(yàn)室,福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350108;2. 晉江市博感電子科技有限公司,福建 晉江 362200)
語義分割作為計(jì)算機(jī)視覺的重要課題之一,從像素級理解圖像,旨在為圖像中的每一個(gè)像素點(diǎn)分配一個(gè)分類類別,從而獲得逐像素的特征分類圖[1]?,F(xiàn)如今,越來越多的應(yīng)用場景需要精確而高效的語義分割技術(shù),如室內(nèi)導(dǎo)航、無人駕駛、增強(qiáng)現(xiàn)實(shí)等。特別是在手機(jī)端相冊的應(yīng)用中,需要利用語義分割技術(shù)完成人像分割,從而滿足人們對于拍攝圖片中人像背景的替換、渲染、虛化等美圖功能。
近些年隨著深度學(xué)習(xí)算法的蓬勃發(fā)展[2-4],大量研究員開始投入精力研究如何將神經(jīng)網(wǎng)絡(luò)應(yīng)用于語義分割技術(shù)中。2012年,F(xiàn)arabet[5]等人利用一種新穎的場景標(biāo)注方法,首次將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于語義分割算法中。2014 年,Long[6]等人提出了FCN(Fully Convolutional Networks),利用卷積層代替全連接層的方式實(shí)現(xiàn)了端到端的圖像分割。2017年,Chen[7]等人提出了DeepLabV3模型,使用空洞卷積(Atrous convolution)來擴(kuò)展感受野,該方式可以獲取更多的空間上下文信息,有效提升了分割精度。2017年, Zhao[8]等人提出PSPNet (Pyramid Scene Parsing Network),在FCN基礎(chǔ)上,提出在空間維度上建立空間金字塔模塊,該方式精細(xì)化了物體的邊緣,可以更好地分割物體。2017年,Lin[9]等人提出RefineNet(Multi-path refinement net-works),設(shè)計(jì)了多路徑提取特征的結(jié)構(gòu),改善了特征提取效果,語義分割精度提升明顯。
語義分割網(wǎng)絡(luò)為了追求精度,需要占據(jù)龐大的計(jì)算資源。移動(dòng)端有限的硬件條件,始終阻礙著語義分割技術(shù)在移動(dòng)端的部署。2018年,Sandler等人提出的MobileNetV2[10]為解決這一難題帶來了可能。大量研究員通過將語義分割網(wǎng)絡(luò)的主干部分替換為MobileNetV2的方式,成功地將網(wǎng)絡(luò)在移動(dòng)端部署,但也因此帶來了分割精度差、分割邊界模糊等問題。
FCN[6]、SegNet[11](A deep convolutional encoder-decoder architecture)和UNet[12]作為最早將編碼器-解碼器結(jié)構(gòu)應(yīng)用于語義分割領(lǐng)域的神經(jīng)網(wǎng)絡(luò),證明了該結(jié)構(gòu)可以有效地捕獲特征細(xì)節(jié),獲得具有豐富上下文信息的特征地圖。2018年,Zhang[13]等人提出通道注意力模型,將常用于語音識別中的注意力機(jī)制應(yīng)用到語義分割領(lǐng)域中,證明該方式可以利用豐富的上下文信息,有效地探索特征地圖通道之間的關(guān)系,恢復(fù)分割物體的邊界。
本文受此啟發(fā),將注意力機(jī)制融入到編碼器-解碼器結(jié)構(gòu)中,有效地解決了移動(dòng)端人像分割網(wǎng)絡(luò)分割效果差的問題。為了解決引入注意力模型帶來的額外計(jì)算量問題,對注意力模型進(jìn)行了輕量化處理。最后為了降低訓(xùn)練難度,加速網(wǎng)絡(luò)收斂,在訓(xùn)練階段,將原有的損失函數(shù)改為Multi-Loss(多損失函數(shù)),有效提升了分割精度。實(shí)驗(yàn)證明本文提出的網(wǎng)絡(luò)結(jié)構(gòu)在速度和精度上達(dá)到了有效平衡,可以部署到移動(dòng)端使用。
NLNet[14](Non-local neural networks)是目前常見的注意力模型之一,由全局上下文特征模塊、特征信息轉(zhuǎn)換模塊、特征融合模塊3個(gè)模塊組成。通過全局上下文特征模塊來獲得融合了上下文信息的特征地圖,利用特征信息轉(zhuǎn)換模塊對融合了上下文信息的特征地圖進(jìn)行通道校驗(yàn),最后由特征融合模塊將融合了上下文信息的特征地圖整合到原特征地圖中。本文在NLNet的基礎(chǔ)上對模塊結(jié)構(gòu)進(jìn)行了優(yōu)化,在可接受的精度損失范圍內(nèi),有效提升了模快的運(yùn)行速度。模型結(jié)構(gòu)對比圖如圖1所示。
圖1 NLNet與優(yōu)化模型結(jié)構(gòu)對比Fig.1 Structural comparison of NLNet and optimized model
圖中H、W、C分別為輸入圖像的高、寬、通道數(shù)目;WV1、WV2、WV3為尺寸為1的深度可分離卷積;WV、WK、Wq、WZ為尺寸為1的普通卷積核。
2.1.1 優(yōu)化全局上下文特征模塊
在全局上下文特征模塊中,NLNet將輸入特征地圖A分別經(jīng)過兩個(gè)1×1卷積核進(jìn)行特征聚合,然后利用Embedded Gaussian(嵌入式高斯)對任意兩個(gè)通道之間的成對關(guān)系進(jìn)行建模,獲得注意力地圖X,見公式(1)。然后將特征地圖A經(jīng)過一個(gè)卷積核WV進(jìn)行特征聚合,隨后與注意力地圖X相乘獲得融合豐富上下文信息的特征地圖。但是對通道之間的成對關(guān)系建模前,對特征地圖A進(jìn)行特征聚合會破壞特征通道之間隱含的相互關(guān)系,同時(shí)會引入多余的計(jì)算量。設(shè)輸入特征地圖A的通道為1 024,則兩個(gè)1×1卷積核的參數(shù)達(dá)1 024×1×1×1 024×2(輸入通道×卷積核尺寸×輸出通道×2)之多。為此,本文將兩個(gè)1×1的卷積核舍棄,直接對特征地圖A進(jìn)行Gaussian(高斯)計(jì)算得到注意力矩陣Y,見公式(2)。該方式保留了通道之間隱含的相互關(guān)系,同時(shí)有效降低了計(jì)算量。另外,將NLNet中對特征地圖進(jìn)行特征聚合的普通卷積WV換為深度可分離卷積[15]WV1,該卷積核將普通的卷積操作分解為depthwise(深度卷積)和pointwise(點(diǎn)卷積)兩個(gè)過程,可將計(jì)算量降為原有計(jì)算量的1/Cout+1/(KW+KH)。(Cout為輸出的通道數(shù)目,KW、KH為卷積核的寬和高),推演過程見公式(3)。
(1)
(2)
C表示輸入特征地圖的通道數(shù)目。i是特征圖中第i個(gè)通道的索引,j為所有通道中的一個(gè)索引枚舉。Xij和Yij分別是注意力地圖X和Y中的權(quán)值系數(shù),表示特征地圖中第i個(gè)通道對第j個(gè)通道的重要性。
(3)
其中:depthwise為深度卷積的計(jì)算量,pointwise為點(diǎn)卷積的計(jì)算量,conv為普通卷積核的計(jì)算量。Cin和Cout為輸入輸出的通道數(shù),W和H為輸入圖像的寬和高,KW、KH為卷積核的寬和高。
2.1.2 優(yōu)化特征信息轉(zhuǎn)換模塊
NLNet采用一個(gè)1×1的卷積核作為特征信息轉(zhuǎn)換模塊來校準(zhǔn)通道之間的依賴關(guān)系,幫助網(wǎng)絡(luò)理解語義信息,但該方式引入了過多的計(jì)算量。設(shè)輸入特征地圖的通道為C,則1×1卷積核的參數(shù)達(dá)C×1×1×C(輸入通道×卷積核尺寸×輸出通道)之多。為了適應(yīng)移動(dòng)端的硬件環(huán)境,本文將單一卷積核替換成兩個(gè)深度可分離卷積,通過對特征地圖的通道進(jìn)行先壓縮再擴(kuò)張的方式來降低計(jì)算量。第一個(gè)深度可分離卷積的輸入通道為C,輸出通道為C/8(其中8為壓縮系數(shù)),對特征圖進(jìn)行通道壓縮。第二個(gè)深度可分離卷積的輸入通道為C/8,輸出通道為C,對特征圖進(jìn)行通道擴(kuò)張。該方式將參數(shù)數(shù)量由C×C降低為2×C×(C/8),有效地將計(jì)算量降低為原計(jì)算量的1/4。
最后將特征信息轉(zhuǎn)換模塊得到的特征地圖輸出給特征融合模塊。本文沿用了NLNet中的融合方式,對具有豐富上下文信息的特征地圖與原始特征地圖進(jìn)行像素級求和得到結(jié)果特征地圖。
常見的編碼器-解碼器結(jié)構(gòu)由編碼網(wǎng)絡(luò)和解碼網(wǎng)絡(luò)兩部分組成。利用堆疊的卷積和池化層作為編碼網(wǎng)絡(luò)來提取圖像的特征信息,然后將編碼器中包含低等級特征信息的特征地圖跳躍連接到解碼網(wǎng)絡(luò)中。解碼網(wǎng)絡(luò)由多個(gè)子模塊組成,每個(gè)子模塊由連續(xù)的一兩個(gè)卷積核堆疊而成,負(fù)責(zé)對上一層子模塊輸出的特征地圖與編碼網(wǎng)絡(luò)跳躍連接而來的特征地圖進(jìn)行特征聚合,以此獲得具有高、低等級特征信息的特征地圖。
圖2 模型網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.2 Schematic diagram of model network structure
本文模型利用MobileNetV2作為編碼網(wǎng)絡(luò)。解碼網(wǎng)絡(luò)堆疊了4層解碼子模塊(Decoder),每個(gè)解碼子模塊嵌入了一個(gè)優(yōu)化過的注意力模塊和一個(gè)用來壓縮特征地圖通道數(shù)目、尺寸為1的深度可分離卷積。為了獲得豐富的上下文信息,選取編碼網(wǎng)絡(luò)中的第2、4、7、14層(尺寸分別為原始特征地圖的1/2,1/4,1/8,1/16)的輸出特征地圖跳躍連接到解碼網(wǎng)絡(luò)中,與解碼子模塊輸出的特征地圖在通道維度上進(jìn)行堆疊,再輸出給下一層解碼子模塊。為了堆疊時(shí)特征地圖尺寸的一致性,在堆疊前對解碼子模塊輸出的特征地圖進(jìn)行了上采樣操作。重復(fù)上述操作,最終將特征地圖經(jīng)過一個(gè)1×1的卷積核和SoftMax層得到分割結(jié)果圖,尺寸為輸入圖像的一半。模型具體結(jié)構(gòu)見圖2。其中,①:編碼網(wǎng)絡(luò)的輸出特征地圖。②~⑤:編碼網(wǎng)絡(luò)第14、7、4、2層的輸出特征地圖。⑥~⑨:經(jīng)過解碼子模塊并上采樣后的特征地圖。⑩:輸出特征地圖。decoder-i(i=1,2,3,4)為解碼子模塊,包含一個(gè)深度可分離卷積和一個(gè)輕量化注意力模塊。表1給出了各特征地圖的尺寸和通道數(shù)目。
表1 模型各層輸出特征地圖尺寸
Tab.1 Size of the output feature map of each layer of the model
特征地圖 尺寸(高×寬)通道數(shù)目①14×14320②14×1496③28×2832④56×5624⑤112×11216⑥28×28192⑦56×5664⑧112×11248⑨112×1128⑩112×1122
語義分割網(wǎng)絡(luò)因?yàn)榫W(wǎng)絡(luò)過深,存在訓(xùn)練難度大、分割精度難以提升等問題。為此,本文在損失函數(shù)上做了一些修改,采用Multi-Loss對各層輸出結(jié)果進(jìn)行監(jiān)督。將標(biāo)簽尺寸大小改變?yōu)樵瓐D的1/16、1/8、1/4、1/2,然后分別與解碼網(wǎng)絡(luò)中的decoder-1,decoder-2,decoder-3,decoder-4生成的特征地圖做交叉熵操作得到各層的損失值Loss1,Loss2,Loss3,Loss4,最終的損失函數(shù)為各層交叉熵的系數(shù)和。
(4)
其中β為損失權(quán)值系數(shù)。隨著網(wǎng)絡(luò)的進(jìn)行,損失逐漸降低,為了權(quán)衡各層損失對整體損失的影響,將β1、β2與β3、β4的比值設(shè)為1∶2。圖3展示了整體損失與各層的損失的收斂情況。
圖3 總損失與編碼層各層損失收斂圖Fig.3 Convergence graph of total loss and loss of each layer of the decoder layer
實(shí)驗(yàn)環(huán)境:實(shí)驗(yàn)采用開源的深度學(xué)習(xí)框架TensorFlow,并利用該框架下的TensorBoard對精度和損失的收斂情況進(jìn)行觀察。計(jì)算機(jī)配置為Window10操作系統(tǒng),8 G內(nèi)存,處理器為Inter(R)Core i5。為了更好地匹配移動(dòng)端條件,整個(gè)實(shí)驗(yàn)在CPU環(huán)境中進(jìn)行測試。
數(shù)據(jù)集處理:實(shí)驗(yàn)在PASCAL、COCO等4個(gè)公開數(shù)據(jù)集中挑選了38 470張與人像有關(guān)的圖片作為預(yù)訓(xùn)練樣本對模型進(jìn)行預(yù)訓(xùn)練。然后利用自采集的6 166張人像圖片作為數(shù)據(jù)集對模型進(jìn)行微調(diào)(Finetune)。驗(yàn)證集為自采集的人像圖片550張。利用左右翻轉(zhuǎn)和隨機(jī)裁取操作進(jìn)行數(shù)據(jù)增強(qiáng)。所有圖片的標(biāo)注均采用語義分割標(biāo)注工具Labelme。
訓(xùn)練策略:實(shí)驗(yàn)采用的梯度優(yōu)化器為Adam算法。學(xué)習(xí)率采用多項(xiàng)式學(xué)習(xí)率迭代策略,初始學(xué)習(xí)率為0.1,每2萬步衰減到原學(xué)習(xí)率的1/10,訓(xùn)練總步長為90萬步。輸入圖像尺寸為224×224。
評價(jià)指標(biāo):圖片單張分割時(shí)間(s)、平均像素精度MPA與交并比MIOU。見公式(5)、(6)。
(5)
(6)
其中:k為分類的類別,Pii為真正的數(shù)量;Pij為假正的數(shù)量;Pji為假負(fù)的數(shù)量。
為了驗(yàn)證輕量化注意力模塊的效果,實(shí)驗(yàn)分別將優(yōu)化了全局上下文特征模塊的注意力模型、優(yōu)化了特征信息轉(zhuǎn)換模塊的注意力模型、兩者同時(shí)優(yōu)化后的注意力模型與原模型NLNet分別嵌入到解碼網(wǎng)絡(luò)中,對模型的分割情況進(jìn)行測試,結(jié)果見表2。
表2 注意力模塊優(yōu)化效果對比
Tab.2 Comparison of the optimization effect of the attention module
嵌入模塊 MIOU/% 分割時(shí)間/s NLNet92.541.05優(yōu)化全局上下文特征模塊92.290.90優(yōu)化特征信息轉(zhuǎn)換模塊92.320.87兩者同時(shí)優(yōu)化92.110.74
觀察可知,與嵌入原模塊NLNet相比,優(yōu)化全局上下文特征模塊后,MIOU損失了0.25%,速度提升了0.15 s。優(yōu)化特征信息轉(zhuǎn)換模塊后,MIOU損失了0.22%,速度提升了0.18 s。兩者同時(shí)優(yōu)化后,MIOU僅僅損失了0.43%,速度提升了0.31 s。在可接受的精度損失范圍內(nèi),速度提升明顯。證明了文章中提出的注意力模塊優(yōu)化方案具有可行性。
解碼網(wǎng)絡(luò)可以有效地捕捉上下文信息,配合注意力模塊可以提升分割精度,但解碼網(wǎng)絡(luò)的層數(shù)對網(wǎng)絡(luò)運(yùn)行速度有一定影響。實(shí)驗(yàn)就融合注意力機(jī)制的解碼網(wǎng)絡(luò)層數(shù)進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見表3。
表3 加入不同層數(shù)解碼網(wǎng)絡(luò)的分割指標(biāo)
Tab.3 Segmentation indicator of decoding network with different layers
添加層數(shù) MIOU/% 單張圖片分割時(shí)間/s 未添加88.260.61一層90.230.66兩層91.070.70三層91.720.72四層92.290.74
分析表3可知,隨著解碼網(wǎng)絡(luò)層數(shù)的增加,MIOU得到提升,但單張圖片分割消耗的時(shí)間相應(yīng)增加。未添加解碼網(wǎng)絡(luò)時(shí)MIOU為88.26%,時(shí)間為0.61 s。添加1層、2層、3層、4層后MIOU分別提升了1.97%和2.81%,3.46%和4.03%。但時(shí)間相應(yīng)增加了0.05,0.09,0.11,0.13 s。相對于精度的提升,帶來的速度影響在可接受范圍內(nèi),因此網(wǎng)絡(luò)設(shè)計(jì)最終選擇了4層解碼網(wǎng)絡(luò)。
解碼網(wǎng)絡(luò)中融合注意力機(jī)制可以有效地恢復(fù)物體的分割邊界,提升分割細(xì)節(jié)。實(shí)驗(yàn)將解碼網(wǎng)絡(luò)中融合注意力模塊和未融合注意力模塊產(chǎn)生的分割圖片做對比實(shí)驗(yàn)。部分對比數(shù)據(jù)見圖4。
圖4 解碼網(wǎng)絡(luò)中融合注意力模塊對分割效果的影響。(a)原圖;(b)標(biāo)簽;(c)未融合;(d)融合后。Fig.4 Effect of the fusion attention module in the decoding network on segmentation. (a) Orrginal; (b) Label; (c) Unfused; (d) Fased.
觀察圖4可知,解碼網(wǎng)絡(luò)未融合注意力模塊時(shí),對于人體的邊緣和細(xì)節(jié)部分分割效果較差,多分割漏分割情況嚴(yán)重。如例1中不能分割出人的耳朵。例2中只能大致分割出人體的輪廓,對于胳膊、小臂等部位存在漏分割情況。例3中無法正確分割出人的手指。在解碼網(wǎng)絡(luò)中融合注意力模塊后,對于細(xì)節(jié)的分割效果明顯提升?;謴?fù)了未添加注意力模塊時(shí)漏分割的耳朵、手指部分,對于人體的輪廓邊緣分割較為清晰。證明了解碼網(wǎng)絡(luò)融合注意力模塊可以有效地修復(fù)分割邊界,提升分割的效果。
Muli-Loss可以減小訓(xùn)練的難度,提升分割像素精度。實(shí)驗(yàn)對比了引入Multi-Loss前后的平均像素精度MPA的收斂情況,實(shí)驗(yàn)結(jié)果見圖5。
觀察精度收斂情況可知,引入Multi-Loss訓(xùn)練策略后,收斂精度一直優(yōu)于未引入Multi-Loss訓(xùn)練策略,精度最終收斂到98%左右。相較于未引入Multi-Loss的最終精度96%,精度提升了2%左右,證明了Multi-Loss訓(xùn)練策略能夠有效提升分割精度,減小網(wǎng)絡(luò)訓(xùn)練難度。
為了驗(yàn)證本文研究模型的分割性能,挑選了FCN、PSPNet、SegNet和Unet共4種前沿的語義分割網(wǎng)絡(luò)作對比,它們的主干網(wǎng)絡(luò)均為MobileNet-V2。統(tǒng)計(jì)了各模型單張圖片分割時(shí)間與MIOU指標(biāo),結(jié)果如表4所示。
由表4可知,本文研究模型達(dá)到了較為可觀的速度與精度。與分割效果較差的FCN相比,MIOU超出了6.03%,與SegNet和Unet相比,MIOU也有著2.61%和2.23%的優(yōu)勢。PSPNet與本模型分割精度相當(dāng),但分割單張圖片,PSPNet需要1.14 s,本文研究模型僅需要0.74 s,快了0.4 s左右。與其他模型相比,本文研究模型在分割單張圖片的時(shí)間上也都快了0.5 s左右,速度優(yōu)勢明顯。
表4 不同分割模型的分割指標(biāo)
Tab.4 Segmentation indicator of different segmentation models
模型 MIOU/%單張圖片分割時(shí)間/sFCN86.261.29PSPNet91.991.14SegNet89.681.17Unet90.061.23本研究模型92.290.74
為了更直觀對本文研究網(wǎng)絡(luò)的分割性能進(jìn)行評估,對各方法的分割結(jié)果圖進(jìn)行了可視化。部分?jǐn)?shù)據(jù)結(jié)果如圖6所示。觀察可知:本研究模型可以清晰地分割出鼻子、耳朵的輪廓邊界。分割邊界幾乎沒有鋸齒狀。對于手指、胳膊等難分割部位分割表現(xiàn)良好,幾乎沒有漏分割、多分割現(xiàn)象。相較之下FCN分割效果較差,分割邊界較模糊。SegNet分割鋸齒狀嚴(yán)重。Unet與PSPNet存在對于胳膊、手指的多分割、漏分割現(xiàn)象。對比之下證實(shí)了本文模型分割性能的優(yōu)越性。
圖6 不同分割方法對比圖Fig.6 Comparison of different segmentation methods
提出了一種輕量化人像分割網(wǎng)絡(luò),通過在解碼網(wǎng)絡(luò)中融合注意力機(jī)制,有效恢復(fù)了物體的分割邊界,提升了分割精度。為了進(jìn)一步輕量化網(wǎng)絡(luò),提升分割速度,對注意力模塊進(jìn)行了輕量化處理。同時(shí)將損失函數(shù)改為Multi-Loss,加速網(wǎng)絡(luò)收斂。實(shí)驗(yàn)證明,本研究網(wǎng)絡(luò)模型達(dá)到了92.29%的MeanIOU,單張圖片分割時(shí)間為0.74 s。相較其他分割網(wǎng)絡(luò),速度精度優(yōu)勢明顯,適合在移動(dòng)端應(yīng)用。