孫 旋,高小淋,曹高帥
(1.桂林理工大學(xué) 機(jī)械與控制工程學(xué)院,廣西 桂林 541004;2.鄭州電力職業(yè)技術(shù)學(xué)院 電力工程系,河南 鄭州 451450)
我國是世界上最大的紡織品出口國,紡織行業(yè)是我國的重要產(chǎn)業(yè)[1]。在織物生產(chǎn)過程中,因機(jī)器故障、人工操作等因素會造成織物出現(xiàn)疵點(diǎn)或破損。因此,織物疵點(diǎn)檢測是提高織物質(zhì)量的重要環(huán)節(jié)。
隨著社會經(jīng)濟(jì)的快速發(fā)展、技術(shù)的更新,深度學(xué)習(xí)在織物疵點(diǎn)檢測領(lǐng)域中已取得顯著成果。提高織物疵點(diǎn)檢測精度與效率,降低人工成本,是紡織行業(yè)質(zhì)量檢測的研究重點(diǎn)。在織物疵點(diǎn)檢測圖像檢測技術(shù)中,許玉格等[2]、劉洋[3]、孫禹鋒[4]、段春梅等[5]通過建立通道疊加的ResNet50對織物疵點(diǎn)進(jìn)行特征提取,增強(qiáng)了對疵點(diǎn)特征的表達(dá)能力,但疵點(diǎn)種類復(fù)雜,檢測效率低。張麗謠等[6]采用SSD網(wǎng)絡(luò)對織物疵點(diǎn)進(jìn)行學(xué)習(xí)判斷,并通過對參數(shù)的調(diào)整來實(shí)現(xiàn)對疵點(diǎn)的分類和識別,然而,疵點(diǎn)檢測準(zhǔn)確率只達(dá)到80%。車翔玖等[7]、何永貴[8]充分利用織物疵點(diǎn)面積較小的特點(diǎn),在圖像中產(chǎn)生潛在疵點(diǎn)區(qū)域,然后利用卷積神經(jīng)網(wǎng)絡(luò)對潛在區(qū)域內(nèi)的疵點(diǎn)進(jìn)行預(yù)測,并在算法后期將潛在區(qū)域內(nèi)出現(xiàn)疵點(diǎn)的概率合并,從而實(shí)現(xiàn)識別織物中存在疵點(diǎn)的概率,但對于疵點(diǎn)區(qū)域小的部分卻無法實(shí)現(xiàn)精準(zhǔn)檢測。吳志洋等[9]、王生偉[10]設(shè)計淺層卷積神經(jīng)網(wǎng)絡(luò),再通過一個大網(wǎng)絡(luò)來指導(dǎo)小網(wǎng)絡(luò),實(shí)現(xiàn)2種網(wǎng)絡(luò)并行模式的訓(xùn)練。陳宇俊[11]采用Cross Net作為主干網(wǎng)絡(luò),并對殘差結(jié)構(gòu)進(jìn)行改進(jìn),該檢測方法可達(dá)到97%以上的檢測精度。郜仲元等[12]利用Pix2PixGAN網(wǎng)絡(luò)提高疵點(diǎn)與紋理融合,實(shí)現(xiàn)圖像數(shù)據(jù)增強(qiáng)。李宇等[13]將 SPP、FPN+ PAN應(yīng)用于 Neck層進(jìn)行特征提取,并利用3種尺度的預(yù)測方法進(jìn)行疵點(diǎn)檢測,然而,對于分辨率小的疵點(diǎn),漏檢率高。
本文提出一種改進(jìn)Faster R-CNN的多種織物疵點(diǎn)檢測算法研究,選取精度高的ResNet50作為提取織物疵點(diǎn)的特征網(wǎng)絡(luò),在原ResNet50基礎(chǔ)上通過拓寬殘差結(jié)構(gòu)寬度與優(yōu)化網(wǎng)絡(luò)參數(shù)來改進(jìn)原ResNet50。將改進(jìn)后的ResNet50作為Faster R-CNN的主干網(wǎng)絡(luò),采用改進(jìn)的K-means聚類算法生成的預(yù)測框取代原Faster R-CNN中人工設(shè)計的預(yù)測框。與原Faster R-CNN、SSD算法進(jìn)行實(shí)驗(yàn)對比,結(jié)果表明,改進(jìn)后的Faster R-CNN算法不僅對織物疵點(diǎn)具有更好的檢測性能與更高的定位精度,并且在難以檢測的走紗與浮紗疵點(diǎn)方面相比于其他算法有顯著的檢測優(yōu)勢。
本文在ResNet50特征提取網(wǎng)絡(luò)基礎(chǔ)上,拓寬殘差結(jié)構(gòu)寬度與調(diào)整網(wǎng)絡(luò)部分層結(jié)構(gòu)來改進(jìn)ResNet50,從而提高網(wǎng)絡(luò)精度。通過優(yōu)化部分層參數(shù)來減少網(wǎng)絡(luò)參數(shù)量,提高推理速度。
多種殘差結(jié)構(gòu)見圖1。將ResNet50網(wǎng)絡(luò)拓寬殘差結(jié)構(gòu)寬度,使其提取更多特征。如圖1(b)所示,將原深度64層的卷積更改為128層,但增加網(wǎng)絡(luò)寬度,相對應(yīng)網(wǎng)絡(luò)計算量也隨之增加,所以引入GoogleNet中的Inception結(jié)構(gòu),通過多卷積核并行計算,在拓寬網(wǎng)絡(luò)寬度的同時減少模型的參數(shù)量。
圖1 多種殘差結(jié)構(gòu)Fig.1 Various residual structures.(a) Initial residual structure;(b) Wider residual structure;(c)Introducing group convolution residual structure
Inception結(jié)構(gòu)是采用3個1×1的卷積進(jìn)行降維,降低計算的復(fù)雜度。如果某個卷積層中輸入較多的特征數(shù),則對輸入特征數(shù)先進(jìn)行降維處理,減少特征數(shù)后再做卷積,計算量會顯著減少,Inception結(jié)構(gòu)如圖2所示。
圖2 Inception結(jié)構(gòu)Fig.2 Inception structure
將特征層分成n組進(jìn)行卷積操作,在輸出相同深度的特征層時,訓(xùn)練參數(shù)只有普通卷積的n分之一,經(jīng)大量實(shí)驗(yàn)表明,當(dāng)n為32時,網(wǎng)絡(luò)有最佳分類精度,修改后的殘差結(jié)構(gòu)如圖1(c)所示。
為進(jìn)一步優(yōu)化ResNet50特征提取網(wǎng)絡(luò),調(diào)整各層殘差模塊順序,圖3為調(diào)整各層殘差模塊的順序圖。殘差結(jié)構(gòu)(見圖3(b))是將BN層移到相加操作后,會阻礙信息傳遞;殘差結(jié)構(gòu)(見圖3(c))將BN層與激活層移到卷積層之前,形成一種預(yù)激活的方式,更易于網(wǎng)絡(luò)優(yōu)化,且BN作為預(yù)激活可以提高對模型的正則化。
圖3 調(diào)整各層殘差模塊順序圖Fig.3 Sequence diagram of adjustment of residual modules on each floor.(a) Initial residual structure;(b) Add BN;(c)Add BN and active layer again
將調(diào)整后的網(wǎng)絡(luò)在織物數(shù)據(jù)集上進(jìn)行分類訓(xùn)練。表1示出為激活層與BN層不同放置位置時對網(wǎng)絡(luò)性能影響的實(shí)驗(yàn)結(jié)果。
表1 改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)的實(shí)驗(yàn)結(jié)果Tab.1 Experimental results of improved network structure
由表1可見,圖3(b)所示殘差結(jié)構(gòu)網(wǎng)絡(luò)損耗從初始0.387增加到0.517,準(zhǔn)確率顯著下降,因?yàn)槎搪穼蛹尤隑N后,信息傳播明顯受到影響。圖3(b)所示殘差結(jié)構(gòu)網(wǎng)絡(luò)損耗從0.387降低到0.302,準(zhǔn)確率沒有顯著變化,因此本文采用圖3(b)所示殘差結(jié)構(gòu)對ResNet50進(jìn)行改進(jìn)。
拓寬殘差結(jié)構(gòu)寬度主要針對網(wǎng)絡(luò)精度改進(jìn)ResNet50,為減少網(wǎng)絡(luò)參數(shù)數(shù)量,選擇優(yōu)化部分層參數(shù)。在網(wǎng)絡(luò)精度不變的條件下,將原始ResNet50在數(shù)據(jù)進(jìn)入網(wǎng)絡(luò)后經(jīng)過的7×7卷積核拆分成2個3×3卷積,以減少計算量。
網(wǎng)絡(luò)改進(jìn)實(shí)驗(yàn)結(jié)果如表2所示??梢?,優(yōu)化后的ResNet50參數(shù)量與計算量更少。改進(jìn)后的ResNet50網(wǎng)絡(luò)架構(gòu)如圖4所示。
表2 網(wǎng)絡(luò)改進(jìn)實(shí)驗(yàn)結(jié)果Tab.2 Network Improvement Experiment Results
圖4 改進(jìn)ResNet50網(wǎng)絡(luò)架構(gòu)Fig.4 Improve ResNet50 network architecture
本文研究的織物疵點(diǎn)多為小目標(biāo),為提高Faster R-CNN檢測小目標(biāo)能力,將改進(jìn)后的ResNet50作為Faster R-CNN的主干網(wǎng)絡(luò),并且在Faster R-CNN網(wǎng)絡(luò)中引入FPN網(wǎng)絡(luò)進(jìn)行多尺度預(yù)測。
改進(jìn)后的ResNet50+FPN結(jié)構(gòu)如圖5所示,最終預(yù)測分5個特征層進(jìn)行,將RPN的網(wǎng)絡(luò)頭部應(yīng)用于每一個P層。與初始圖片相比,P層具有不同的尺度信息,因此將預(yù)測的多個尺度信息在原始RPN網(wǎng)絡(luò)中分離,使每個P層只處理單個尺度信息。
圖5 改進(jìn)后的ResNet50+FPN結(jié)構(gòu)Fig.5 Improved ResNet50+FPN structure
本文檢測到的織物疵點(diǎn)特征主要分2類:一類是經(jīng)緯脫線形成的條狀或線狀疵點(diǎn);另一類則是矩形面積較小類疵點(diǎn)。選擇最佳的預(yù)測框大小可以使網(wǎng)絡(luò)更容易學(xué)習(xí)并且得到一個好的檢測器。
針對本文織物數(shù)據(jù)集與檢測目標(biāo)的大小,重新設(shè)計RPN網(wǎng)絡(luò)中生成預(yù)測框的尺寸。采用改進(jìn)的K-means聚類算法對數(shù)據(jù)集進(jìn)行訓(xùn)練,并將得到預(yù)測框尺寸應(yīng)用于RPN網(wǎng)絡(luò),從而加快網(wǎng)絡(luò)的收斂性,提高檢測精度。
本文在用改進(jìn)的K-means聚類算法生成預(yù)測框時,采用1-IOU的值表示樣本與蔟中心之間的距離,從而取代傳統(tǒng)的K-means聚類算法采用歐氏距離來計算。每個預(yù)測框與對應(yīng)蔟中心的邊界框所對應(yīng)的IOU值越大,則距離越近。此外,計算所有邊界框的高與寬和K個預(yù)測框的高與寬的比,比值越接近1,則預(yù)測框和邊界框的重合度越高。
根據(jù)設(shè)定的閾值,由均值計算預(yù)測樣本中邊界框與K個預(yù)測框的適應(yīng)度,適應(yīng)度越高,聚類得到的預(yù)測框效果越好。此外。在K個預(yù)測框的基礎(chǔ)上引入遺傳算法,將邊界框的高與寬2K個參數(shù)作為隨機(jī)變異的DNA,計算和評估突變后的適應(yīng)度。與傳統(tǒng)K-means聚類算法相對比,改進(jìn)后的K-means聚類算法更適用于圖片預(yù)測框的生成。通過訓(xùn)練標(biāo)注后的織物數(shù)據(jù)集,最終得到15個預(yù)測框尺寸以及適應(yīng)度,結(jié)果如表3所示。
表3 改進(jìn)K-means聚類算法實(shí)驗(yàn)結(jié)果Tab.3 Experimental results of improved K-means clustering algorithm
由表3訓(xùn)練結(jié)果得知,將初始Faster R-CNN算法中的(128,128)、(256,256)、(512,512) 3種尺度更改為(32,32)、(64,64)、(100,100)、(128,128)、(256,256) 5種。將初始1∶1、1∶2、2∶1比例更改為1∶5、1∶1、5∶1,分別在5個特征層進(jìn)行預(yù)測,每層預(yù)測3個預(yù)測框。以880 pixel×880 pixel的圖片分辨率為例,表4示出多特征層預(yù)測結(jié)果。
此外,在實(shí)驗(yàn)驗(yàn)證過程中發(fā)現(xiàn),僅通過增加預(yù)測框數(shù)量,用于網(wǎng)絡(luò)訓(xùn)練的時間基本不變,表5示出增加預(yù)測框數(shù)量的實(shí)驗(yàn)結(jié)果。
表4 多特征層預(yù)測實(shí)驗(yàn)結(jié)果Tab.4 Prediction experimental results of multi-feature layer
表5 增加預(yù)測框數(shù)量的實(shí)驗(yàn)結(jié)果Tab.5 Experimental results of increasing number of prediction boxes
本文所研究樣本為某紡織企業(yè)所提供,織物疵點(diǎn)圖片為600 pixel×800 pixel的彩色圖像,根據(jù)疵點(diǎn)的長度面積以及出現(xiàn)的頻率,將織物疵點(diǎn)分為2個大類6個小類,走紗、浮紗、斷紗為一類;結(jié)頭、破洞、污漬為另一類,6類疵點(diǎn)如圖6所示。
圖6 織物疵點(diǎn)樣本Fig.6 Fabric defect sample.(a) Take off the yarn;(b) Belt yarn;(c)Yarn breaking;(d)Knot;(e)Hole;(f)Stain
實(shí)驗(yàn)環(huán)境如表6所示,網(wǎng)絡(luò)模型的訓(xùn)練與測試均在CPU中進(jìn)行。
表6 實(shí)驗(yàn)環(huán)境Tab.6 Experimental environment
針對改進(jìn)Faster R-CNN檢測多種織物疵點(diǎn),采用準(zhǔn)確率(precision,P)、召回率(recall,R)、平均準(zhǔn)確率(average precision,AP)與平均準(zhǔn)確率均值(mean average precision,PmA)來評估本文算法的性能,其公式分別如下:
(1)
(2)
(3)
(4)
式中:TP表示正確檢測出的織物疵點(diǎn)數(shù)量;FP表示錯誤檢測出的織物疵點(diǎn)數(shù)量;FN表示漏檢的織物疵點(diǎn)數(shù)量;N表示織物疵點(diǎn)種類。
本次實(shí)驗(yàn)包含引入FPN多尺度預(yù)測的Faster R-CNN以及本文進(jìn)一步改進(jìn)后的Faster R-CNN檢測算法。在實(shí)驗(yàn)過程中,采用遷移學(xué)習(xí)進(jìn)行訓(xùn)練,根據(jù)數(shù)據(jù)集將織物類型劃分為單色布、格子布、條紋布3種。Batch size取值為4,迭代50次后添加FPN網(wǎng)絡(luò)的Faster R-CNN多尺度預(yù)測的實(shí)驗(yàn)結(jié)果如圖7所示。
本文基于改進(jìn)的Faster R-CNN檢測算法除了添加FPN網(wǎng)絡(luò)之外,還采用改進(jìn)的ResNet50特征提取網(wǎng)絡(luò)與改進(jìn)的K-means聚類算法生成預(yù)測框。表7示出不同算法模型檢測結(jié)果。將改進(jìn)后的Faster R-CNN檢測算法進(jìn)行訓(xùn)練,其實(shí)驗(yàn)結(jié)果如圖8所示。
表7 不同算法模型檢測實(shí)驗(yàn)結(jié)果Tab.7 Experiment results of different algorithm model detection
圖7 Faster R-CNN多尺度預(yù)測實(shí)驗(yàn)結(jié)果Fig.7 Faster R-CNN multiscale prediction results. (a)Average accuracy training chart;(b) Training chart of loss value and learning rate
圖8 不同算法檢測結(jié)果對比Fig.8 Comparison of detection results on different algorithms.(a)Hole;(b)Knot;(c)Stain;(d)Yarnbreaking;(e)Belt yarn;(f)Take off the yarn
從表7可看出,原Faster R-CNN在數(shù)據(jù)集上PmA值為0.802,而改進(jìn)后的Faster R-CNN算法的平均準(zhǔn)確率為0.868,相較于原算法提高了6.6%。在難以檢測的織物疵點(diǎn),尤其走紗,本文算法相較于SSD、YOLOv4、原Faster R-CNN算法,PA值分別提高了26.0%、31.1%、6.1%;在織物浮紗疵點(diǎn)上,改進(jìn)的Faster R-CNN相較于SSD、YOLOv4、原Faster R-CNN算法,PA值分別提高25.7%、17.4%、10.8%。
為進(jìn)一步驗(yàn)證本文算法相較于原Faster R-CNN、SSD在織物疵點(diǎn)檢測中的優(yōu)勢,選取破洞、污漬、結(jié)頭、斷紗、浮紗、走紗圖片各1張,進(jìn)行檢測結(jié)果對比,SSD、原Faster R-CNN檢測結(jié)果與本文算法檢測結(jié)果對比如圖8所示。
由圖8得出,這3種算法對于破洞、結(jié)頭類疵點(diǎn)都具有很好的檢測能力;對于織物上的污漬,SSD與原Faster R-CNN算法無法檢測出織物上的所有疵點(diǎn)且在“小目標(biāo)”疵點(diǎn)中均存在漏檢,而改進(jìn)的Faster R-CNN算法不僅全部檢測出污漬所在位置,且對于“小目標(biāo)”污漬疵點(diǎn)檢測精度為95%,相較于SSD與原Faster R-CNN算法檢測精度更高。
對于浮紗類,尤其長度比跨度大的疵點(diǎn),這類疵點(diǎn)在織物中較難檢測。圖8中,對比3種算法檢測浮紗類疵點(diǎn)可知,經(jīng)過本文改進(jìn)的K-means聚類算法生成的預(yù)測框相比于SSD算法、原Faster R-CNN生成的預(yù)測框更精確地定位到疵點(diǎn),且本文改進(jìn)的Faster R-CNN算法檢測浮紗類疵點(diǎn)的置信度高達(dá)99%,相較于SSD、原Faster R-CNN檢測置信度分別提高15%、5%。
對于走紗類疵點(diǎn),尤其“細(xì)長型”疵點(diǎn),SSD算法檢測的置信度為62%,原Faster R-CNN算法檢測的置信度為78%,而改進(jìn)后的Faster R-CNN不僅能準(zhǔn)確框住疵點(diǎn),且置信度高達(dá)97%,相較于SSD、原Faster R-CNN檢測置信度分別提高35%、19%,檢測精度最高。
本文提出一種基于改進(jìn)Faster R-CNN算法的多種織物疵點(diǎn)檢測算法。針對織物疵點(diǎn)的特征,以Faster R-CNN算法為基礎(chǔ),對原算法進(jìn)行了改進(jìn)。選取ResNet50作為織物疵點(diǎn)特征提取網(wǎng)絡(luò),在ResNet50基礎(chǔ)上拓寬殘差結(jié)構(gòu)寬度,調(diào)整了各層殘差模塊順序并對網(wǎng)絡(luò)參數(shù)進(jìn)行優(yōu)化,從而提高網(wǎng)絡(luò)精度與推理速度。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的ResNet50網(wǎng)絡(luò)總損耗顯著降低,并且在數(shù)據(jù)集相同的條件下,網(wǎng)絡(luò)訓(xùn)練時間明顯減少。
將改進(jìn)后的ResNet50特征提取網(wǎng)絡(luò)引入Faster R-CNN算法中,構(gòu)建特征金字塔網(wǎng)絡(luò)融合不同尺度的特征層,使網(wǎng)絡(luò)能夠在5個特征層上預(yù)測。采用改進(jìn)K-means聚類算法生成的預(yù)測框?qū)υ璅aster R-CNN中人工設(shè)計的預(yù)測框重新設(shè)計。其實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的Faster R-CNN對織物疵點(diǎn)有更佳的檢測能力,尤其是針對“小目標(biāo)”與“細(xì)長型”疵點(diǎn),相較于SSD、原Faster R-CNN算法具有更高的定位精度,且模型性能表現(xiàn)更好,檢測效果更佳,置信度更高。