薛金超,趙德安,李長(zhǎng)峰,張 軍,陳 輝
(1.江蘇大學(xué)電氣信息工程學(xué)院,江蘇 鎮(zhèn)江 212013;2.常州銘賽機(jī)器人科技股份有限公司,江蘇常州 213164)
隨著人們生活水平不斷提高,手機(jī)等電子產(chǎn)品的消費(fèi)日益俱增,對(duì)電子產(chǎn)品質(zhì)量提出了新的要求。電子產(chǎn)品零部件通常都采用補(bǔ)強(qiáng)膠加固,因此對(duì)補(bǔ)強(qiáng)膠進(jìn)行分割提取,便成為質(zhì)量檢測(cè)的關(guān)鍵。傳統(tǒng)圖像分割算法主要有閾值分割法[1]、邊緣分割法[2]等。張啟軒等[1]通過(guò)設(shè)定閾值,利用閾值分割算法將圖像中的像素值進(jìn)行分類(lèi)。該算法簡(jiǎn)單、快速,但忽略了圖像的空間信息,且易受光照等因素影響分割效果。唐闖[2]通過(guò)邊緣分割法檢測(cè)ROI的邊界灰度變化,并以此作為分割依據(jù)。常用的邊緣檢測(cè)算子有:Roberts[3],Prewitt[4],Sobel[5],Laplace[6],Canny[7]等。Cherri[3]提出的Roberts 邊緣檢測(cè)算子,在處理陡峭的低噪聲圖像時(shí)效果較好,但只能提取圖像的粗邊緣,定位精度較低。安建堯等[4]使用Prewitt 算子處理灰度漸變和多噪聲圖像效果顯著。Shen 等[5]利用Sobel 算子處理灰度漸變和多噪聲的圖像效果好,且定位準(zhǔn)確。孟小華等[6]利用Laplace 算子可準(zhǔn)確定位階躍性邊緣點(diǎn),對(duì)噪聲十分敏感,但容易丟失邊緣方向信息,造成邊緣不連續(xù)。Archana 等[7]使用Canny算子可支持同時(shí)利用兩種不同閾值分別檢測(cè)強(qiáng)邊緣和弱邊緣,但在實(shí)際檢測(cè)過(guò)程中,僅通過(guò)邊緣檢測(cè)仍難以實(shí)現(xiàn)高精度分割。
通過(guò)以上算法可知,傳統(tǒng)邊緣檢測(cè)算法可較為準(zhǔn)確地定位邊緣,但易受光照等客觀(guān)因素影響,分割效果不佳。隨著深度學(xué)習(xí)技術(shù)不斷發(fā)展,Unet[8]在分割醫(yī)學(xué)圖像等細(xì)小等物體上優(yōu)勢(shì)明顯,被廣泛應(yīng)用于生物醫(yī)學(xué)圖像方面,但Unet 和U2net[9]分割速度較慢。現(xiàn)有實(shí)時(shí)分割網(wǎng)絡(luò)有ICnet[10]、Enet[11]、LEDnet[12]、CGnet[13]等。ICnet提出了級(jí)聯(lián)特征融合單元可獲取高質(zhì)量的分割圖像,同時(shí)包含多重分辨率分支的級(jí)聯(lián)網(wǎng)絡(luò)實(shí)現(xiàn)實(shí)時(shí)分割。LEDnet 使用了不對(duì)稱(chēng)“編碼—編碼”機(jī)制實(shí)現(xiàn)實(shí)時(shí)分割,并利用通道分割和融合技術(shù)提高分割效率。CGnet 主要由CG 塊組成,通過(guò)學(xué)習(xí)局部和上下文特征實(shí)現(xiàn)實(shí)時(shí)語(yǔ)義分割。
上述分割網(wǎng)絡(luò)算法相較于傳統(tǒng)算法,魯棒性更高,且支持實(shí)時(shí)分割,但相較于Unet 等網(wǎng)絡(luò),分割精度仍然較低。因此,本文提出了一種基于改進(jìn)Unet 實(shí)時(shí)分割的fast-Unet語(yǔ)義分割網(wǎng)絡(luò)模型。
根據(jù)ICnet 設(shè)計(jì)原理及Unet 自身結(jié)構(gòu),提出了一種適合分割補(bǔ)強(qiáng)膠的fast-Unet 網(wǎng)絡(luò),該網(wǎng)絡(luò)模型結(jié)構(gòu)如圖1 所示。
Fig.1 Fast-Unet structure圖1 fast-Unet 結(jié)構(gòu)
注意力模塊[14](Convolutional Block Attention Module,CBAM)主要包含通道注意力模塊(Channel Attention Module,CAM)和空 間注意力模塊(Spatial Attention Module,SAM)。CBAM 依次通過(guò)CAM 和SAM 模塊推算通道和空間兩個(gè)不同維度的注意力特征圖,再將輸入特征圖與不同維度的注意力特征圖相乘,以細(xì)化特征。注意力模塊結(jié)構(gòu)圖如圖2 所示。
Fig.2 Attention module structure圖2 注意力模塊結(jié)構(gòu)
圖2 中所涉及計(jì)算公式如式(1)、式(2)所示:
其中,F(xiàn)為輸入特征圖,Mc(F)為一維通道注意力圖,Ms(F′) 為二維空間注意力圖,F(xiàn)′為通過(guò)通道注意力模塊得到的特征圖,F(xiàn)″為最終細(xì)化輸出。
Fig.3 Channel attention module structure圖3 通道注意力模塊結(jié)構(gòu)
由圖3 可見(jiàn),通過(guò)CAM 獲得通道注意力特征圖時(shí),可使用平均池化方法聚合空間信息,但需要壓縮輸入特征圖的空間維度;或使用最大池化方法細(xì)化通道注意力。鑒于此,本文將兩種方法相結(jié)合。具體為:首先分別得到平均池化特征Fcavg和最大池化特征Fcmax;然后將它們分別通過(guò)多層感知機(jī)MLP 組成的共享網(wǎng)絡(luò)得到特征向量;接下來(lái)使用element-wise 進(jìn)行合并;最后使用sigmoid 得到特征圖F′,計(jì)算公式如公式(3)所示:
其中,σ為sigmoid 激活函數(shù),w代表使用element-wise進(jìn)行求和合并,M為由MLP 組成的共享網(wǎng)絡(luò)。
SAM 主要對(duì)經(jīng)過(guò)通道注意力后的特征圖進(jìn)行補(bǔ)充,以尋找最具代表特征信息的空間部分。計(jì)算公式如公式(4)所示:
其中,σ為sigmoid 激活函數(shù),f7×7c為7 × 7 卷積運(yùn)算。
金字塔池化模塊(Pyramid Pooling Module,PPM)[15]分為1× 1、2 × 2、3 × 3、6 × 6 不同大小的4 層。先將輸入池化為4 個(gè)不同大小的池化層;然后分別使用4 個(gè)1× 1的卷積將通道數(shù)減少3/4;接著使用雙線(xiàn)性采樣得到4 個(gè)與原特征圖大小一致的特征圖,并將其與原特征圖按通道進(jìn)行融合;最后使用1× 1 卷積改變通道數(shù),使其與原特征圖通道數(shù)保持一致。金字塔池化模塊結(jié)構(gòu)如圖4 所示。
Fig.4 Pyramid pooling module structure圖4 金字塔池化模塊結(jié)構(gòu)
由圖4 可見(jiàn),PPM 可充分利用全局信息,并保留全局上下文信息,以解決不匹配、類(lèi)別混淆、易忽視類(lèi)別等問(wèn)題。
常用的非線(xiàn)性激活函數(shù)有ReLU,該函數(shù)計(jì)算簡(jiǎn)單,不但可加快收斂速度,還能緩解梯度爆炸、梯度消失等問(wèn)題。數(shù)學(xué)表達(dá)式如式(5)所示:
由式(5)可見(jiàn),一旦激活函數(shù)輸入值為負(fù)數(shù)時(shí),激活函數(shù)輸出值為0。則使神經(jīng)元失活,并且之后所有的神經(jīng)元節(jié)點(diǎn)都將無(wú)法再被激活。
ELU[16]相較于ReLU,負(fù)值部分仍有輸出值,魯棒性更高。此外,ELU 激活函數(shù)輸出值的均值更逼近于0,收斂速度更快。然而為了有效去除噪聲的影響,本文使用一種自歸一化的激活函數(shù)SeLU[17],該激活函數(shù)具有自歸一化特點(diǎn),是對(duì)特征的高級(jí)抽象表示。數(shù)學(xué)表達(dá)式如公式(6)所示:
其中,通過(guò)實(shí)驗(yàn)驗(yàn)證當(dāng)λselu≈1.673 263 242 354,αselu≈1.050 700 987 355 時(shí),效果較好。
目前FCN[18]、Unet、DeepLab[19]等系列的主流語(yǔ)義分割網(wǎng)絡(luò),雖然分割性能較好,但無(wú)法實(shí)現(xiàn)實(shí)時(shí)快速分割。香港中文大學(xué)、騰訊優(yōu)圖及商湯科技聯(lián)合開(kāi)發(fā)的ICnet 語(yǔ)義分割模型則實(shí)現(xiàn)了實(shí)時(shí)快速分割。ICnet 使用低分辨率圖像快速捕捉圖像的語(yǔ)義信息,再使用高分辨率圖像獲取圖像細(xì)節(jié),并利用獲取的主要特征信息優(yōu)化調(diào)整低分辨率分割的語(yǔ)義信息,以提升分割速度和精度。
本文基于ICnet的3 分支輸入模式和Unet的特殊結(jié)構(gòu),提出了一種由3 個(gè)特征提取分支組成的編碼模塊,如圖5所示。
由圖5 可見(jiàn),本文提出的編碼模塊由3 個(gè)特征提取分支構(gòu)成。其中,3 個(gè)特征提取分支都使用VGG16[20]作為特征提取主體。ICnet 中3 種輸入分別是原圖大小、原圖1/2大小、原圖1/4 大小。輸出特征圖則分別為原圖1/8 大小、原圖1/16 大小和原圖1/32 大小。而本文編碼模塊的3 個(gè)特征提取分支的輸入都為原圖大小,僅共享一部分權(quán)重,輸出特征圖為原圖大小、原圖1/4 大小和原圖1/16 大小。
Fig.5 Fast-Unet coding module structure圖5 Fast-Unet 編碼模塊結(jié)構(gòu)
ICnet的加速策略是采用低分辨率特征圖提取語(yǔ)義信息,從高分辨率特征圖提取特征細(xì)節(jié)。本文基于ICnet 設(shè)計(jì)策略進(jìn)行改進(jìn),加入中分辨率特征圖,聯(lián)系高、低分辨率的語(yǔ)義信息和特征細(xì)節(jié)。
1.4.1 第一特征提取分支
第一特征提取分支由EncodeOne 模塊構(gòu)成。Encode-One 模塊改變了VGG16 第一次下采樣前特征層結(jié)構(gòu)的原始通道數(shù),并使用SeLU 代替ReLU 激活函數(shù),以提取原始圖片大小的特征圖。EncodeOne 模塊結(jié)構(gòu)卷積參數(shù)如表1所示。
Table 1 EncodeOne module structure convolution parameters表1 EncodeOne 模塊結(jié)構(gòu)卷積參數(shù)
1.4.2 第二特征提取分支
第二特征提取分支共享第一特征提取分支的權(quán)重,并加入了EncodeTwo 模塊、CBAM 和PPM。其中,EncodeTwo模塊也是由VGG16 改進(jìn)而來(lái)。同樣先將通道數(shù)減半,再采用channl_split 操作進(jìn)一步將輸入通道數(shù)減半,以此提高檢測(cè)速度。然而,由于EncodeTwo 使用了VGG16的基礎(chǔ)結(jié)構(gòu),通道分割后進(jìn)行融合時(shí)會(huì)發(fā)生特征圖大小不一致的問(wèn)題。為此,需要在另一個(gè)分支中引入一個(gè)卷積核為3 × 3、stride 為2的卷積層,使通道分割后的兩個(gè)分支可進(jìn)行融合。通過(guò)該方法雖然可以提高檢測(cè)速度,但會(huì)導(dǎo)致特征提取能力下降。為此,本文引入SeLU 激活函數(shù)代替ReLU 函數(shù),以提高檢測(cè)效率。EncodeTwo 模塊結(jié)構(gòu)如圖6 所示。
Fig.6 EncodeTwo module structure圖6 EncodeTwo 模塊結(jié)構(gòu)
由圖6 可見(jiàn),由于第二特征提取分支得到的中分辨率特征圖,起到聯(lián)系高分辨率和中分辨率的語(yǔ)義信息和特征細(xì)節(jié)的作用。因此提高第二分辨率的特征提取能力至關(guān)重要,于是本文在EncodeTwo 模塊后引入注意力和金字塔池化模塊。
1.4.3 第三特征提取分支
第三特征提取分支主要為了快速獲取低分辨率的特征語(yǔ)義信息。這一分支共享了第二分支的網(wǎng)絡(luò)權(quán)重,并且經(jīng)過(guò)兩次下采樣和一次3×3 卷積,得到原圖1/16 大小的特征圖,以獲取語(yǔ)義信息。
解碼器采用了Unet的原有結(jié)構(gòu),并且根據(jù)提出的編碼器結(jié)構(gòu)進(jìn)行改進(jìn)。解碼器結(jié)構(gòu)如圖7 所示。
Fig.7 Decoder structure圖7 解碼器結(jié)構(gòu)
由圖7 可見(jiàn),原有Unet 解碼器是由一次上采樣加兩次卷積,堆疊4 次構(gòu)成,將5 個(gè)不同大小的特征層進(jìn)行融合。而本文將原本需進(jìn)行4 次堆疊的解碼模塊進(jìn)行改進(jìn),融合編碼網(wǎng)絡(luò)中的特征層,并將兩個(gè)解碼模塊堆疊,構(gòu)成新的解碼器。
基于Pytorch 構(gòu)建深度學(xué)習(xí)網(wǎng)絡(luò),并使用C++、OpenCV、ibtorch 將模型部署到工程上。
本文訓(xùn)練實(shí)驗(yàn)參數(shù)如表2 所示,檢測(cè)參數(shù)如表3 所示。
Table 2 Training experiment parameter表2 訓(xùn)練參數(shù)
Table 3 Test experiment parameter表3 檢測(cè)參數(shù)
實(shí)驗(yàn)評(píng)價(jià)指標(biāo)采用平均像素精確度(Mean Pixel Accuracy,MPA)、平均交并比(Mean Intersection over Union,MIoU)、F1_score 及檢測(cè)速率FPS(包含預(yù)處理,前向推理及預(yù)測(cè)輸出)。其中,不同改進(jìn)Unet 模型訓(xùn)練和驗(yàn)證過(guò)程的Train-F1-score如圖8所示。
圖8 中new_Unet 模型為未加入CBAM 和PPM 模塊的fast-Unet;new_Unet_original 為通道數(shù)未減半及未加入channel-split的new_Unet模型;new_Unet+CBAM 為加入了CBAM 模塊的fast-Unet 模型;new_Unet+PPM為加入了PPM模塊的fast-Unet模型;new_Unet+P-PM+CBAM 為先加入PPM模塊再加入CBAM 模塊的fast-Unet 模型;new_Unet+CBAM +PPM 為先加入CBAM 模塊,再加入了PPM 模塊的fast-Unet 模型。各改進(jìn)Unet 模型的Train-F1-score、Val-F1-score 和FPS 如表4 所示。
Table 4 Train-F1-score、Val-F1-score and FPS of each improved Unet model表4 各改進(jìn)Unet 模型的Train-F1-score、Val-F1-score 和FPS
Fig.8 F1-score of different improved Unet model training and verification processes圖8 不同改進(jìn)Unet 模型訓(xùn)練和驗(yàn)證過(guò)程的F1-score
由圖8 和表4 可見(jiàn),當(dāng)new_Unet_original 模型通道數(shù)減半并引入channel-split 后,new_Unet 相較于new_Unet_originalFPS 提高了近一倍,但Train-F1-score 下降了0.005;當(dāng)new_Unet 模型引入CBAM 后,new_Unet+CBAM 相較于new_Unet FPS 和Train_F1-score 變化不明顯,但Train-F1-score與Val-F1-score的差值從0.005降到了0.002 8;在new_Unet 基礎(chǔ)上引入了PPM 后,雖 然new_Unet+PPM 模型的Train-F1-score相較于new_Unet 提升了0.009,但FPS從106.01下降到82.45,Train-F1-score和Val-F1-score的差值從0.005增加到0.0053;在new_Unet上加入CBAM和PPM后,new_Unet+PPM+CBAM、new_Unet+CBAM+PPM相較于new_Unet,Train-F1-score提高了0.013左右,并且Train-F1-score和Val-F1-score的差值僅為0.003 5 左右,由表4 可見(jiàn),new_Unet+CBAM+PPM 效果更佳,相較于Unet(VGG16)Train-F1-score 幾乎相同,但FPS 從34.98 提高到了78.33。各模型性能指標(biāo)對(duì)比如圖9所示,具體數(shù)據(jù)見(jiàn)表5。
由 圖9和表5可見(jiàn),new_Unet的MIoU和MPA分別為0.9495 和0.956 7,F(xiàn)PS 達(dá)到了106.01。fast-Unet(new_Unet+CBAM+PPM)的MIoU 和MPA 最高,相較于new_Unet 分別提高了0.021 1 與0.029 3,但FPS 從106.01 下降到78.33。接下來(lái)測(cè)試了不同激活函數(shù)對(duì)fast-Unet 模型性能的影響,結(jié)果如圖10 所示。訓(xùn)練、驗(yàn)證集上不同激活函數(shù)的F1-score 最大值如圖11 所示,具體數(shù)據(jù)見(jiàn)表6。
由圖11 和表6 可見(jiàn),在訓(xùn)練集和驗(yàn)證集上使用ReLU6、LeakRelu、HardSwish 等激活函數(shù)的Train-F1-score、Val-F1-score 最大值,相較于使用ReLU 有所下降;使用CELU和SELU 激活函數(shù)相較于ReLU 激活函數(shù)略有提升。其中,不同的激活函數(shù)在測(cè)試集上的性能指標(biāo)如圖12 所示,具體數(shù)據(jù)見(jiàn)表7。
Fig.9 Comparison of performance indexes of each model圖9 各模型性能指標(biāo)對(duì)比
Table 5 Comparison data of performance indexes of each model表5 各模型性能指標(biāo)對(duì)比數(shù)據(jù)
Fig.10 F1-score of fast-Unet under different activation functions圖10 Fast-Unet 在不同激活函數(shù)下的F1-score
Fig.11 F1-score maximum values of different activation functions on training and validation sets圖11 訓(xùn)練、驗(yàn)證集上不同激活函數(shù)的F1-score 最大值
Table 6 F1-score maximum values of different activation functions on training and validation sets表6 訓(xùn)練、驗(yàn)證集上不同激活函數(shù)的F1-score 最大值
由圖12 和表7 可見(jiàn),使用SELU 激活函數(shù)相較于ReLU函數(shù),MIoU 和MPA 分別從提升了0.000 5 和0.000 6,F(xiàn)PS 只下降了0.27。同時(shí),本文比較了不同模型的性能指標(biāo),如表8 所示。
Fig.12 Comparison of performance indexes of different activation functions圖12 不同激活函數(shù)的性能指標(biāo)比較
Table 7 Comparison of performance indexe data of different activation functions表7 不同激活函數(shù)的性能指標(biāo)數(shù)據(jù)比較
Table 8 Comparison of performance index data of different models表8 不同模型性能指標(biāo)數(shù)據(jù)比較
通過(guò)Pytorch 訓(xùn)練得到的fast-Unet 網(wǎng)絡(luò)模型后,將其轉(zhuǎn)為支持libtorch 調(diào)用的模型。經(jīng)過(guò)實(shí)驗(yàn)證明,用P1000 顯卡進(jìn)行在線(xiàn)識(shí)別分割單個(gè)樣本的耗時(shí)僅為25ms。實(shí)際測(cè)試界面如圖13 所示。
Fig.13 Reinforcing glue colloid on-line detection and segmentation experiment圖13 補(bǔ)強(qiáng)膠膠體在線(xiàn)檢測(cè)分割實(shí)驗(yàn)
本文針對(duì)手機(jī)電子零部件上補(bǔ)強(qiáng)膠的識(shí)別分割,提出了一種改進(jìn)Unet的實(shí)時(shí)分割網(wǎng)絡(luò)fast-Unet,并引入CBAM和PPM 增強(qiáng)網(wǎng)絡(luò)的魯棒性。通過(guò)實(shí)驗(yàn)表明,該網(wǎng)絡(luò)的識(shí)別精度和FPS 均高于Unet,取得了較好的識(shí)別分割效果,MIoU、MPA 和FPS 分別達(dá)到了0.971 1、0.986 6 和78.06。此外,當(dāng)使用P1000 顯卡進(jìn)行測(cè)試時(shí),單個(gè)樣本識(shí)別分割耗時(shí)僅為25ms。但由于在識(shí)別分割后,仍需進(jìn)行膠體測(cè)量,下一步將研究在識(shí)別分割后量化膠體長(zhǎng)、寬等信息。