汪 穎,婁樹理
(煙臺大學(xué)物理與電子信息學(xué)院,山東 煙臺 264005)
瓷磚作為建筑中一種重要的材料,其質(zhì)量檢測一直是人們關(guān)注的重點。目前在瓷磚生產(chǎn)的檢測方面仍依賴于人工,人工檢測不僅耗時長、效率低,而且容易受個人主觀因素的影響,因此利用機器視覺技術(shù)對瓷磚表面缺陷進行快速高效的檢測,對于推動瓷磚生產(chǎn)的自動化具有重要的意義。
在機器視覺領(lǐng)域,有關(guān)瓷磚表面缺陷檢測一直是研究熱點。在傳統(tǒng)研究檢測方法中,SAMARAWICKRAMA等[1]提出了基于圖像處理技術(shù)的瓷磚行業(yè)自動檢測系統(tǒng),該系統(tǒng)可以高精度和高效率地檢測瓷磚表面的顏色變化和缺陷;SHIRE等[2]提出了一種自動缺陷檢測和分類技術(shù),能夠在很短的時間內(nèi)檢測瓷磚缺陷;李慶利等[3]提出了一種基于灰色關(guān)聯(lián)分析的瓷磚特征提取算法,并完成了瓷磚表面缺陷檢測軟件設(shè)計;段春梅等[4]提出了基于機器視覺的瓷磚表面缺陷無損檢測算法,對瓷磚素坯圖像預(yù)處理、圖像分割后,利用圓形度特征描述實現(xiàn)缺陷判別;吳冰等[5]提出了一種基于BP神經(jīng)網(wǎng)絡(luò)與區(qū)域生長法相結(jié)合的瓷磚表面缺陷圖像分割技術(shù);劉利等[6]提出了一種對彩色帶花紋的瓷磚色差檢測算法,對采集到的瓷磚圖像依次進行色彩空間轉(zhuǎn)換、中值濾波、二值化和灰度直方圖分割。以上傳統(tǒng)檢測方法一定程度上緩解了人工檢測的壓力,但特征提取主要依賴人工設(shè)計的提取器,存在計算冗余量大、復(fù)雜度高的缺陷,且難以適應(yīng)復(fù)雜場景,算法魯棒性差。
近年來,隨著深度學(xué)習(xí)模型的不斷探究,語義分割以其優(yōu)秀的缺陷檢測能力為缺陷檢測帶來新的研究方向,常見的分割網(wǎng)絡(luò)有U-Net[7]、PSPNet[8]、Deeplab[9-12]系列。文獻[13]針對傳統(tǒng)芯片缺陷檢測方法難以實現(xiàn)缺陷特征精確提取且泛化性較差的問題,提出了改進U-Net芯片焊縫氣泡缺陷的檢測方法(DSSMob-U-Net)。U-Net網(wǎng)絡(luò)方法提高了圖像檢測精度,但該網(wǎng)絡(luò)的結(jié)構(gòu)復(fù)雜,對物體邊界的檢測效果不理想。文獻[14]針對移動端平臺難以應(yīng)用計算復(fù)雜度高的語義分割網(wǎng)絡(luò)對隧道襯砌裂縫實時檢測的問題,提出一種基于改進PSPNet的實時分割網(wǎng)絡(luò)模型Mobile-PSPNet,以減少模型對計算資源的需求。PSPNet網(wǎng)絡(luò)通過直接使用不同的池化操作來控制感受野,一定程度上提高了檢測速度,但是采用方形核卷積進行池化操作,并不能充分利用場景,精度受到影響。
Deeplabv3+算法通過多尺度特征里不同參數(shù)的設(shè)置,使卷積層和池化層提取不同的特征,這些特征的融合提升了網(wǎng)絡(luò)的性能,但Deeplabv3+網(wǎng)絡(luò)依然存在網(wǎng)絡(luò)參數(shù)量大,以及邊緣細(xì)節(jié)特征被忽略的問題,這會導(dǎo)致算法運行速度變慢以及整體精度下降。針對Deeplabv3+網(wǎng)絡(luò)普遍存在的網(wǎng)絡(luò)參數(shù)量大、邊緣細(xì)節(jié)分割不準(zhǔn)確等問題,本研究在DeepLabv3+的基礎(chǔ)上進行改進,首先采用輕量級的主干網(wǎng)絡(luò)MobileNetv2[15]替代DeepLabv3+的主干網(wǎng)絡(luò)Xception,MobileNetv2網(wǎng)絡(luò)減少了計算成本和參數(shù)量,提高了檢測速度。同時在空間金字塔提取多尺度信息之后加入CBAM注意力機制,增強網(wǎng)絡(luò)對邊緣位置和小尺度缺陷特征的感知能力,解決邊緣缺陷和小尺度缺陷導(dǎo)致的漏檢、錯檢等問題,細(xì)化了分割結(jié)果。
Deeplabv3+模型[13]如圖1,采用編碼器-解碼器結(jié)構(gòu)實現(xiàn)對缺陷的分割。編碼器模塊首先通過Xception神經(jīng)網(wǎng)絡(luò)對輸入的缺陷圖像提取圖像特征,提取到的特征輸入到空間金字塔池化模塊(Atrous Spatial Pyramid Pooling,ASPP),獲取多個尺度的高層語義信息之后,將各特征信息進行通道維拼接并通過1×1卷積降低通道數(shù),然后將高層次特征圖輸入到解碼器進行處理。
圖1 改進前的Deeplabv3+網(wǎng)絡(luò)結(jié)構(gòu)
解碼器模塊將經(jīng)過4倍上采樣處理的多尺度高級特征與主干網(wǎng)絡(luò)Xception提取出的低級特征進行融合,再利用3×3卷積和4倍上采樣,恢復(fù)圖像原尺寸,完成瓷磚表面缺陷目標(biāo)的分割。相比于僅有編碼器結(jié)構(gòu),編碼器-解碼器結(jié)構(gòu)能很好地融合圖像的低層次信息和高層次信息,有效避免上采樣操作帶來的目標(biāo)像素丟失問題。
利用Deeplabv3+網(wǎng)絡(luò)雖然能較好地檢測缺陷區(qū)域,但由于實際生產(chǎn)的瓷磚邊緣區(qū)域和微小缺陷相較于中間區(qū)域更容易被遺漏,導(dǎo)致分割精度下降。為提高網(wǎng)絡(luò)分割精度,對Deeplabv3+網(wǎng)絡(luò)進行改進,改進后的網(wǎng)絡(luò)結(jié)構(gòu)如圖2。首先將主干網(wǎng)絡(luò)中的Xception替換為MobileNetv2,利用輕量化MobileNetv2模型能有效減少模型復(fù)雜度和計算量。Deeplabv3+模型能夠通過ASPP獲得多尺度信息,但是僅通過各維度進行簡單拼接,無法獲取豐富的上下文信息,對于瓷磚邊緣缺陷、小目標(biāo)缺陷信息提取不足,因此利用注意力機制CBAM來增強網(wǎng)絡(luò)對邊緣缺陷位置的感知能力,提高整體的分割精度。
圖2 改進后的Deeplabv3+網(wǎng)絡(luò)結(jié)構(gòu)
改進后的Deeplabv3+網(wǎng)絡(luò)中,輸入圖像首先進入編碼器中的MobileNetv2提取特征,由于該網(wǎng)絡(luò)體積小、參數(shù)量少,可以更快速、精準(zhǔn)地從大量瓷磚表面缺陷圖像信息中提取缺陷部位。經(jīng)提取的特征進入ASPP,該結(jié)構(gòu)對輸出的多尺度空間信息進行特征拼接。為減少拼接后的無關(guān)特征對識別精度的影響,先通過CBAM注意力機制提高卷積神經(jīng)網(wǎng)絡(luò)的注意力,再使用1×1大小的卷積增加編碼結(jié)構(gòu)的非線性。1×1卷積后的多尺度高級特征經(jīng)4倍上采樣處理后與Mobilenetv2網(wǎng)絡(luò)提取的低級特征進行拼接,拼接后再利用3×3卷積和4倍上采樣,恢復(fù)圖像原圖的分辨率。
改進前的Deeplabv3+主干網(wǎng)絡(luò)采用的是Xception,雖然對多種類的圖像提取特征有較好的分割精度,但其網(wǎng)絡(luò)復(fù)雜度高,對于復(fù)雜多樣、信息量大的瓷磚表面缺陷圖像,隨著模型訓(xùn)練的進行,網(wǎng)絡(luò)參數(shù)量會逐漸加大,速度大量降低,為提升特征提取的速度,本研究使用MobileNetv2代替Xception作為主干網(wǎng)絡(luò),MobileNetv2網(wǎng)絡(luò)中的倒殘差結(jié)構(gòu)和線性瓶頸層共同構(gòu)成線性倒殘差結(jié)構(gòu),如圖3所示,其中倒殘差結(jié)構(gòu)里采用逐點卷積和深度卷積,卷積時先通過1×1逐點卷積進行升維,隨后進行3×3的深度卷積對各個通道進行一個單獨的卷積,最后再進行1×1的逐點卷積降維。為避免降維后Relu函數(shù)損失瓷磚缺陷處的特征信息,在倒殘差結(jié)構(gòu)的最后一個1×1逐點卷積上,將線性瓶頸層替換之前的Relu激活函數(shù)進行降維,極大地減少了低維特征信息的大量損失,增加了信息維度,對提高分割精確度具有重要意義。
圖3 MobileNetv2網(wǎng)絡(luò)中的倒殘差結(jié)構(gòu)
Deeplabv3+模型能夠通過ASPP獲得多尺度信息,但是僅通過對各維度進行簡單拼接,無法獲取豐富的上下文信息,對于瓷磚表面缺陷這種小目標(biāo)提取是不足的,因此在編碼器結(jié)構(gòu)中加入CBAM注意力機制以提高上下文的聯(lián)系能力,增強信息提取。
CBAM注意力機制(圖4)是由通道注意力模塊(Channel Attention Module,CAM)和空間注意力模塊(Spatial Attention Module,SAM)兩個獨立的部分組成的。該模塊會對輸入進來的缺陷瓷磚的特征層分別進行CAM和SAM的點乘處理,以提高檢測精度,最后再輸出特征圖,公式可以表示為
圖4 CBAM注意力機制
F′=MC(F).*F,
(1)
F″=MS(F).*F′,
(2)
式中:MC(F)為通道注意力機制;F為輸入特征圖;F′ 為與通道注意力點乘后產(chǎn)生的特征圖;MS(F)為空間注意力機制;F″為與空間注意力機制點乘后產(chǎn)生的特征圖。
缺陷特征圖在CAM模塊中分別經(jīng)過一個最大池化和平均池化之后,分別進入多層感知器進行處理,最后用函數(shù)sigmoid進行激活生成通道注意力特征,CAM模塊可以表示為
MC(F)=σ{MLP[AvgPool(F)]+
MLP[MaxPool(F)]},
(3)
式中:σ為Sigmoid激活函數(shù);MLP為多層感知器;AvgPool、MaxPool分別表示平均池化和最大值池化。
SAM模塊主要反映輸入值在空間維度上的重要程度,其輸入的特征值由CAM模塊輸出得到,再分別進行最大池化和平均池化,分別處理好之后將輸出的特征值進行拼接,并利用7×7的卷積產(chǎn)生一個二維的特征圖。SAM模塊可以表示為
MC(F′)=σ{f[AvgPool(F′);
Max[MaxPool(F′)]]},
(4)
式中:MC(F′)為空間注意力模塊;f為卷積層運算。
采用的軟件編程語言為Python 3.7,操作系統(tǒng)為Ubuntu18.04,GPU資源類型為TeslaT4,大小為 16 GB顯存。模型基于Pytorch深度學(xué)習(xí)框架,主干網(wǎng)絡(luò)為MobileNetv2,迭代次數(shù)為60次。
數(shù)據(jù)來自公開的數(shù)據(jù)集(Mvtec)[16],該圖像集是Mvtec公司提出的無監(jiān)督的異常檢測數(shù)據(jù)集,為圖像集缺陷部分提供了精確的像素級標(biāo)注。圖像集里缺陷的類別為crack、glue-strip、gray-stroke、oil、rough五類,本實驗將該數(shù)據(jù)集分為裂痕瓷磚表面缺陷和磨損瓷磚表面缺陷兩類進行訓(xùn)練。在訓(xùn)練之前先用軟件labelme將數(shù)據(jù)集中瓷磚的缺陷部分進行框選標(biāo)注,生成所需的json格式的文件。
選取Mvtec圖像集里含瓷磚表面缺陷的圖片進行訓(xùn)練。為了提高圖像的質(zhì)量和可辨識度,使圖像更有利于觀察或者進一步分析,使用亮度增強的預(yù)處理方法對圖像進行數(shù)據(jù)增強操作[17],如圖5,圖像增強后的輪廓及邊緣信息等比增強前更加清晰。
圖5 亮度增強前后圖像
使用Mvtec瓷磚數(shù)據(jù)集進行實驗時需要大量的數(shù)據(jù),而直接使用Mvtec數(shù)據(jù)集里的圖像訓(xùn)練,容易出現(xiàn)模型過擬合的問題,因此,通過鏡像、旋轉(zhuǎn)等圖像幾何變換對數(shù)據(jù)集進行擴充。擴充后的瓷磚數(shù)據(jù)集數(shù)量達到700張,并按照9∶1的比例分成訓(xùn)練集和測試集,數(shù)據(jù)集如圖6。
圖6 擴充后的圖像
擴充后的瓷磚表面缺陷數(shù)據(jù)集使網(wǎng)絡(luò)模型的泛化能力得到提高,降低了網(wǎng)絡(luò)模型對相關(guān)屬性的敏感程度,加速了收斂的過程,避免模型過擬合等問題。
為了驗證模型的性能,需選取合適的性能評價指標(biāo),本研究選取語義分割常用的4個指標(biāo)對分割的效果進行綜合評價,分別為:平均交并比(Mean Interisection over Union,MIou)、平均像素準(zhǔn)確率(Mean Pixcal Accuracy,MPA)、幀數(shù)(FPS)、正確率(Accuracy)。其中,MIou、MPA、Accuracy評價指標(biāo)計算公式分別為
(5)
(6)
(7)
式中:假設(shè)一共有k個類別(不包含背景在內(nèi)),本實驗將圖像分為兩類,因此k=2;Pii表示真實值為i,預(yù)測值為i的像素數(shù)量;Pij表示真實值為i,預(yù)測值為j的像素數(shù)量;Pji表示真實值為j,預(yù)測值為i的像素數(shù)量;TP表示被正確地劃分為正例P的個數(shù);TN表示被正確地劃分為負(fù)例N的個數(shù),P表示正例的個數(shù),即真實值與預(yù)測值一樣的個數(shù);N表示負(fù)例的個數(shù),即真實值與預(yù)測值不一樣的個數(shù);MIou表示瓷磚數(shù)據(jù)集真實值與預(yù)測值這兩個集合的交集和并集之比;MPA表示每個瓷磚缺陷類內(nèi)被正確分類像素數(shù)的比例。FPS是模型每秒能處理圖片的數(shù)量,其值越高,代表模型的速度越快;Accuracy表示被分對的樣本數(shù)除以所有的樣本數(shù)的概率,其值越高,代表分類器越好。
為了驗證改進模型的效果,分別與Unet、PSPNet、改進前Deeplabv3+三個網(wǎng)絡(luò)進行了對比,在保證訓(xùn)練次數(shù)與訓(xùn)練數(shù)據(jù)集都相同的情況下,對比結(jié)果如表1所示。
表1 與其他分割網(wǎng)絡(luò)對比
對比可知,改進后的Deeplabv3+算法效果提升明顯。與Unet算法、PSPNet算法、改進前的Deeplabv3+相比,MIou分別提升1.34%、12.38%、4.03%,MPA分別提升4.37%、6.36%、5.06%,FPS分別提升26.66、39.76、5.45,Accuracy分別提升1.45%、8.01%、1.09%,說明改進后的算法在分割精度和檢測速度上有了明顯提升。Deeplabv3+模型改進前后的分割效果對比如圖7所示。
圖7 改進前后的分割效果對比
本模型結(jié)構(gòu)主要有兩個部分改進,分別是MobileNetv2和注意力機制,為了驗證改進的有效性,對兩種改進進行了消融實驗,結(jié)果如表2。由表2可知,原始的以Xception為主干網(wǎng)絡(luò)的Deeplabv3+模型在瓷磚數(shù)據(jù)集上進行檢測,MIou值較低。將主干網(wǎng)絡(luò)Xception替換為MobileNetv2后,MIou提高2.86%,MPA提高6.97%,FPS提高5.59,Accuarcy提高2.67%,說明MobileNetv2網(wǎng)絡(luò)提取細(xì)節(jié)信息能力更強,檢測速度更快。在此基礎(chǔ)上,繼續(xù)增加注意力機制模塊CBAM,MIou提高3.47%,MPA提高0.79%,FPS下降0.14,Accuracy提高1.89%,說明添加注意力機制后,檢測速度有輕微下降,但是可以抑制部分干擾信息的影響,提升了檢測缺陷的能力。
表2 不同模塊的性能效果
針對瓷磚表面缺陷檢測速度慢、精度低的問題,基于Deeplabv3+模型,用輕量級網(wǎng)絡(luò)MobileNetv2替代Xception作為主干網(wǎng)絡(luò),降低了模型復(fù)雜度,減少計算量,提升了檢測速度;其次引入注意力機制CBAM,提高算法對邊緣缺陷和小尺度缺陷的注意力,更加關(guān)注重點信息,提升了分割精度。實驗結(jié)果表明,改進后的Deeplabv3+算法MIou提升6.33%,MPA提升7.76%,FPS提升5.45,Accuracy提高4.56%,對瓷磚缺陷具有較好的分割性能。