孫繁榮,肖楠,吳月新
(工業(yè)互聯(lián)網(wǎng)創(chuàng)新中心(上海)有限公司,上海 201303)
隨著卷積神經(jīng)網(wǎng)絡(luò)在圖像處理領(lǐng)域的發(fā)展[1],深度學(xué)習(xí)算法越來越廣泛地應(yīng)用于缺陷檢測分割?,F(xiàn)階段流行的深度學(xué)習(xí)分割算法分兩種,分別是由Long 等提出的基于全卷積神經(jīng)網(wǎng)絡(luò)模型的語義分割算法[2]以及Ronneberger 等提出的針對醫(yī)學(xué)圖像的U-Net 分割算法[3]。但這些方法都存在兩個(gè)問題,它們都采用自然圖像的語義分割模型,難以滿足缺陷分割的特殊性。另外這些模型在處理淺層和高層特征時(shí)采用直接連接的方法,缺乏對特征的充分利用。
為解決以上問題,提出了一種新模式的缺陷分割模型,引入針對缺陷圖像的規(guī)范化非局部模塊,可以更好地獲取高層特征,保存缺陷圖像的空間信息,最終將規(guī)范化非局部模塊應(yīng)用在一個(gè)編碼解碼的軸套缺陷分割模型上,并取得良好的檢測分割結(jié)果。
采用麻省理工的開源軟件Labelme 對汽車零部件進(jìn)行了樣本的標(biāo)記,該軟件可以很好地把汽車零部件中的缺陷標(biāo)記出來。缺陷區(qū)域標(biāo)記的過程如圖1 所示。
圖1 分割區(qū)域提取過程示意圖
在理想狀態(tài)下,用深度學(xué)習(xí)算法進(jìn)行汽車零部件缺陷的分割,需要大量帶標(biāo)簽的圖片。但是在實(shí)際情況下往往很難滿足這種要求,汽車零部件生產(chǎn)制造過程中缺陷的零件占比較少,帶缺陷的圖片很難收集到。收集到缺陷零部件的缺陷圖片以后,還需要大量的人工進(jìn)行標(biāo)記,這種標(biāo)記方法效率低下,也很難得到大量的數(shù)據(jù)。因此在模型訓(xùn)練前需要對標(biāo)注好的汽車零部件數(shù)據(jù)進(jìn)行數(shù)據(jù)增強(qiáng)操作,這其中包括圖像裁剪、圖像旋轉(zhuǎn)、圖像仿射變換以及圖像上下鏡像翻轉(zhuǎn)。這樣不僅可以大大增加訓(xùn)練數(shù)據(jù)集,同時(shí)也緩解了模型在訓(xùn)練過程中出現(xiàn)過擬合的問題,可以增強(qiáng)模型的泛化能力。數(shù)據(jù)增強(qiáng)后的圖片如圖2所示。
圖2 數(shù)據(jù)增強(qiáng)
針對軸套的缺陷分割檢測,郭瑞琦等提出的基于U-Net 的汽車輪轂缺陷自動(dòng)分割算法[4],柳峰等利用金字塔場景解析網(wǎng)絡(luò)(PSPNet)進(jìn)行了導(dǎo)光板缺陷檢測[5],Shuang 等提出基于多尺度卷積消噪自編碼網(wǎng)絡(luò)模型的織物疵點(diǎn)自動(dòng)檢測方法[6],以及Tabernik 等提出的在金屬表面的缺陷檢測[7],都具有較好的引導(dǎo)意義。
Ronneberger 等為了提高語義分割準(zhǔn)確度,使用跳躍連接的方法將淺層特征和高層特征連接后得到U-Net 模型[3]。U-Net 最初應(yīng)用于醫(yī)學(xué)圖像分割領(lǐng)域,在醫(yī)學(xué)圖像中感興趣區(qū)域和不感興趣區(qū)域差別很大,因此在分割時(shí)只要關(guān)注感興趣周圍的區(qū)域,但是工業(yè)產(chǎn)品缺陷分割中由于分割的感興趣區(qū)域需要考慮整個(gè)網(wǎng)絡(luò)的上下文信息。因此為了更好地分割汽車零部件缺陷,文中對U-Net 網(wǎng)絡(luò)進(jìn)行了改進(jìn)。
1.2.1 Non-local 網(wǎng)絡(luò)模塊
在計(jì)算機(jī)視覺任務(wù)中,捕獲長距離依賴關(guān)系是很重要的。在卷積神經(jīng)網(wǎng)絡(luò)中往往通過堆疊多個(gè)卷積模塊以形成大的感受野來捕獲長距離依賴關(guān)系。但是這種方法存在3 個(gè)不足:
1)捕獲長距離依賴關(guān)系的效率太低。
2)在網(wǎng)絡(luò)很深的情況下,訓(xùn)練過程中容易出現(xiàn)梯度爆炸和梯度消失的情況。
3)局部操作很難滿足在圖片中長距離之間來回傳遞信息。
Wang Xiaolong 等提出基于圖片濾波領(lǐng)域的非局部均值濾波操作思想[8],這是一個(gè)簡單、高效、即插即用的非局部操作算子,它可以捕獲一段時(shí)間、空間和時(shí)空的長距離依賴關(guān)系。相比于不斷堆疊卷積核,非局部操作非常高效地直接計(jì)算時(shí)間與時(shí)間位置以及時(shí)間與空間位置的關(guān)系。顧方霖在非局部信息的圖像語義分割研究[9],以及宋小鵬等在結(jié)合局部和非局部信息的FCM 圖像分割算法[10]的文章中都展示了非局部操作能夠有效保證輸出尺度不變的優(yōu)點(diǎn)。
在語義分割任務(wù)中使用非局部操作可以提高網(wǎng)絡(luò)的分割準(zhǔn)確度,Zhen zhu 等使用一種非對稱的非局部操作來簡化,從而提高非局部網(wǎng)絡(luò)的有效性[11]。非局部網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示。
圖3中F、Q、W表示卷積核為1×1的卷積操作,MU表示矩陣乘法操作,Scale 表示規(guī)范化操作。Softmax表示Softmax 激活函數(shù),ADD 表示矩陣加法操作。
圖3 非局部網(wǎng)絡(luò)結(jié)構(gòu)
非局部的函數(shù)的數(shù)學(xué)公式可以定義為:
相比于標(biāo)準(zhǔn)的非局部網(wǎng)絡(luò)模型,加入了規(guī)范化操作,這是因?yàn)樵诠I(yè)生產(chǎn)過程中汽車零部件無法保證每一個(gè)樣品都一模一樣,加入規(guī)范化操作使得照片的信息特征分布類似,可以更好地加速整個(gè)網(wǎng)絡(luò)的收斂過程。
1.2.2 非局部U-Net網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)
U-Net 網(wǎng)絡(luò)結(jié)構(gòu)是由Ronneberger 等提出的用于生物醫(yī)學(xué)圖像的語義分割網(wǎng)絡(luò)[3],朱輝等將其用于肺結(jié)節(jié)檢測[12],徐光柱等將其用在視網(wǎng)膜血管檢測上[13],袁甜等在肺部CT 圖像的研究也都取得了良好的效果[14]。由于其簡單易實(shí)現(xiàn)的特點(diǎn),使得U-Net 網(wǎng)絡(luò)在不同應(yīng)用領(lǐng)域有著十分重要的作用。
醫(yī)學(xué)圖像分割與汽車零部件缺陷圖像分割類似,于是將U-Net 結(jié)構(gòu)應(yīng)用于汽車零部件圖像缺陷的分割,但是汽車零部件相比于醫(yī)學(xué)圖像存在一些特性,例如汽車零部件圖像缺陷往往會(huì)存在多個(gè)區(qū)域,因此為了更好地對汽車零部件缺陷進(jìn)行分割,在傳統(tǒng)的U-Net網(wǎng)絡(luò)結(jié)構(gòu)中引入了規(guī)范化非局部模塊,非局部U-Net網(wǎng)絡(luò)整體結(jié)構(gòu)如圖4所示。非局部U-Net網(wǎng)絡(luò)由三部分組成,其中左邊的結(jié)構(gòu)為編碼結(jié)構(gòu),輸入圖像后進(jìn)行下采樣,再經(jīng)過上采樣生成特征圖,然后輸出特征圖標(biāo)簽,中間使用一個(gè)規(guī)范化非局部模塊進(jìn)一步提取特征,此外也使用跳躍連接方式將編碼與解碼結(jié)構(gòu)級聯(lián),使得淺層特征可以更好地參與到最后的圖像預(yù)測中。圖4 可以看出非局部U-Net 網(wǎng)絡(luò)結(jié)構(gòu)可以分成3 個(gè)部分,分別是特征編碼、特征轉(zhuǎn)化、特征解碼。其中特征編碼階段每一個(gè)小的模塊主要由3 個(gè)3×3 的卷積層和一個(gè)2×2 的池化層組成,特征編碼的目的是收縮網(wǎng)絡(luò),主要從高維度空間提取特征信息同時(shí)負(fù)責(zé)進(jìn)行下采樣操作。利用一個(gè)規(guī)范化非局部(scale non-local)模塊進(jìn)行特征轉(zhuǎn)化,這是因?yàn)樘卣骶幋a階段通過多層卷積池化堆積獲得的特征缺乏捕獲長依賴性信息的能力,導(dǎo)致網(wǎng)絡(luò)的魯棒性偏差,需要通過非局部網(wǎng)絡(luò)來提高網(wǎng)絡(luò)魯棒性,由于特征編碼階段采用了多次池化操作,特征圖分辨率從原來400×400 縮小到了25×25,在特征解碼過程中則使用了轉(zhuǎn)置卷積操作,通過逐層解碼的方式,將特征還原成原來的分辨率。在上采樣時(shí),每個(gè)特征解碼輸出特征圖與左邊特征編碼收縮網(wǎng)絡(luò)的每個(gè)下采樣對應(yīng),并且采用了跳躍連接的方式聯(lián)合在一起,這樣可以填補(bǔ)高層特征經(jīng)過多次卷積池化丟失的位置信息。在網(wǎng)絡(luò)的末尾使用1×1 卷積層,然后接Sigmoid 函數(shù),將得到的特征圖映射到每一個(gè)像素對應(yīng)的類別,在這里由于汽車零部件缺陷的分割屬于兩分類問題,因此最終輸出的圖像中每個(gè)像素點(diǎn)對應(yīng)的元素為0或1。將該圖像作為網(wǎng)絡(luò)的最終輸出概率圖,每一個(gè)像素點(diǎn)元素值表示該點(diǎn)存在缺陷的概率。
圖4 非局部U-Net 網(wǎng)絡(luò)整體結(jié)構(gòu)
實(shí)驗(yàn)的數(shù)據(jù)來自實(shí)際生產(chǎn)過程中獲得的汽車零部件圖像,分辨率分別為672×672、652×652、664×664。原始樣本數(shù)據(jù)包含156 張包含缺陷的數(shù)據(jù),對數(shù)據(jù)進(jìn)行增強(qiáng),選擇120 張圖像進(jìn)行擴(kuò)增,之后汽車零部件缺陷圖像增到了2 028 張,將總樣本的80%作為訓(xùn)練集,剩下的20%作為驗(yàn)證集。同時(shí)利用剩下的36 張缺陷部分構(gòu)造測試樣本,測試算法的分割精度。通過Dice距離來衡量兩個(gè)集合的相似性,Dice系數(shù)定義如下:
A與B表示兩個(gè)集合,代表兩張圖片,分子為這兩個(gè)交集數(shù)量的兩倍,分母表示兩個(gè)集合的和。Dice取值范圍為0~1,Dice 系數(shù)越高代表分割結(jié)果越好。
為了驗(yàn)證該文算法的有效性,計(jì)算了汽車零部件測試樣本缺陷平均分割精度,表1為測試樣本Dice系數(shù),圖5 為該文算法和其他算法在部分帶有缺陷的軸套圖像的分割結(jié)果。
表1 非局部U-Net網(wǎng)絡(luò)和其他算法的Dice 系數(shù)
圖5 非局部U-Net 和其他算法在測試樣本的缺陷分割結(jié)果
為驗(yàn)證該文算法在汽車零部件缺陷圖像上的表現(xiàn),另外選取其他幾種成熟的圖像分割算法與該文算法進(jìn)行對比,這些算法都是基于圖像塊的卷積神經(jīng)網(wǎng)絡(luò)模型,可以發(fā)現(xiàn)標(biāo)準(zhǔn)的U-Net 網(wǎng)絡(luò)結(jié)構(gòu)在汽車零部件缺陷分割上取得的Dice 系數(shù)為72.26%,而非局部U-Net 網(wǎng)絡(luò)達(dá)到了81.29%,提升了9.03%。與此同時(shí),表1 中展示了其他深度學(xué)習(xí)的語義分割算法在測試樣本上的Dice 評價(jià)指標(biāo),其中和效果相對比較差的FCN8s 算法對比,非局部U-Net 網(wǎng)絡(luò)Dice 系數(shù)提升了12.63%,可以看出非局部U-Net 在測試樣本上的Dice 系數(shù)均高于其他算法,效果比較好[15]。圖5 展示了模型訓(xùn)練完成以后在測試數(shù)據(jù)集上和其他成熟的語義分割算法的對比。通過對比可以發(fā)現(xiàn)非局部U-Net 網(wǎng)絡(luò)結(jié)構(gòu)在汽車零部件缺陷分割細(xì)節(jié)上要優(yōu)于其他的成熟的分割網(wǎng)絡(luò)。
非局部U-Net 網(wǎng)絡(luò)模型在訓(xùn)練過程中的損失函數(shù)值變化圖如圖6 所示。通過圖6 可以發(fā)現(xiàn),雖然在訓(xùn)練過程中損失函數(shù)的值在一開始有一小段的波動(dòng),但總體處于一個(gè)下降收斂狀態(tài)并在最后趨于穩(wěn)定不變。說明在當(dāng)前訓(xùn)練參數(shù)及模型參數(shù)設(shè)置下,汽車零部件缺陷分割網(wǎng)絡(luò)模型的性能接近最優(yōu)。
圖6 損失函數(shù)值變化圖
針對汽車零部件缺陷分割自動(dòng)化的問題,提出了一種基于非局部U-Net 網(wǎng)絡(luò)模型的汽車零部件自動(dòng)分割算法。通過引入了規(guī)范化非局部網(wǎng)絡(luò)模塊可以更好地捕捉特征的長距離依賴關(guān)系,從而提高了分割的準(zhǔn)確度。實(shí)驗(yàn)驗(yàn)證結(jié)果表明,非局部U-Net在汽車零部件缺陷分割任務(wù)上比標(biāo)準(zhǔn)的U-Net 網(wǎng)絡(luò)表現(xiàn)得更優(yōu)秀,相比于傳統(tǒng)的汽車零部件缺陷分割,極大地提升了汽車零部件缺陷分割的自動(dòng)化性能。在時(shí)間開銷上相比于傳統(tǒng)的分割算法也得以大大降低,基本滿足工業(yè)生產(chǎn)的檢測需求,具有潛在的應(yīng)用前景。