陳永恒 陳 軍 羅維平
(1.武漢紡織大學(xué),湖北武漢,430200;2.塔里木大學(xué),新疆阿拉爾,843300)
織物疵點的多少是對織物品質(zhì)好壞的評價標(biāo)準(zhǔn),因此織物疵點檢測對織物的質(zhì)量有著十分重要的作用[1]。目前織物疵點檢測的方法有:基于結(jié)構(gòu)方法,但是結(jié)構(gòu)方法可靠性低,只能將織物的疵點從紋理中分離出來;基于統(tǒng)計學(xué)方法,灰度共生矩陣高分辨率圖像性能較差且計算成本很高,直方圖統(tǒng)計法的特征向量維數(shù)過高且計算量大;基于頻譜方法,傅里葉變換受結(jié)構(gòu)變化影響大且實時性、通用性很差;隨著“互聯(lián)網(wǎng)+”的快速發(fā)展,對工業(yè)生產(chǎn)中織物疵點檢測方法也有了很大的提升,通過計算機的推理處理技術(shù)可以快速高效地檢測出疵點,從而很快判斷出織物品質(zhì)的好壞[2?6]。
當(dāng)AlexNet[7]取得ImageNet 數(shù)據(jù)集[8]圖像分類冠軍之后,深度學(xué)習(xí)隨之得到了長遠的發(fā)展,提出了如GooleNet[9]、VGG[10]、ResNet[11]、DenseNet[12]等典型神經(jīng)網(wǎng)絡(luò)[13]。GooleNet 網(wǎng)絡(luò)結(jié)構(gòu)比較簡單,滿足不了生產(chǎn)時間的需要;VGG 增加了網(wǎng)絡(luò)結(jié)構(gòu)的深度,促進了卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)向更深深度的發(fā)展;ResNet 運用了殘差學(xué)習(xí),解決了神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)梯度消失的問題;DenseNet 采用密集連接,性能更優(yōu)于ResNet。
本研究提出一種基于改進DenseNet201 網(wǎng)絡(luò)的織物疵點檢測算法。在本研究的訓(xùn)練集和驗證集下訓(xùn)練得到一個織物疵點檢測模型,試驗表明:該模型具有良好的泛化能力,能夠精準(zhǔn)快速識別正??椢?、8 類常見織物疵點。
本研究提出的織物疵點檢測算法主要工作流程:首先對數(shù)據(jù)集的圖像進行預(yù)處理,可視化各種織物疵點類型的數(shù)量,剔除無效的圖像;然后改進卷積層第1 層、添加SPP 層;再提取在大型數(shù)據(jù)集ImageNet 下預(yù)訓(xùn)練好的DenseNet201 權(quán)重參數(shù)進行遷移學(xué)習(xí),釋放原有的全連接層(分類器),添加自己的全連接層,利用數(shù)據(jù)增強和Dropout 技術(shù)降低過擬合的程度;最后運用本研究的訓(xùn)練集和驗證集,反復(fù)調(diào)節(jié)參數(shù),訓(xùn)練改進的DenseNet201 網(wǎng)絡(luò),得到織物疵點檢測模型。
為了在更大程度上解決梯度消失、加強特征傳遞、更有效地利用特征、減少一定的參數(shù)數(shù)量,DenseNet 網(wǎng)絡(luò)結(jié)構(gòu)直接將所有層連接起來,保證了網(wǎng)絡(luò)中層與層之間最大程度的完整傳輸,實現(xiàn)了網(wǎng)絡(luò)端到端的網(wǎng)絡(luò)傳輸模式。Dense Block 結(jié)構(gòu)如圖1 所示。
在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)中,卷積神經(jīng)網(wǎng)絡(luò)有L層,那么就會有L個連接。 根據(jù)圖1,在DenseNet 卷積神經(jīng)網(wǎng)絡(luò)中,如果DenseNet 卷積神經(jīng)網(wǎng)絡(luò)有L層,那么就會有L(L+1)/2 個連接,通俗地講,就是每一層的輸入都來自于前面所有層的輸出,x0是整個卷積神經(jīng)網(wǎng)絡(luò)的輸入,H1的輸入是x0(輸入),H2的輸入是x0和x1(x1是H1的輸出),依此類推。
圖1 Dense Block 結(jié)構(gòu)
現(xiàn)有的ResNet 網(wǎng)絡(luò)采用跨連接,形成恒等映射的交叉結(jié)構(gòu),其恒等映射公式如式(1)所示。
式中:xl表示l層輸出特征圖,Hl表示網(wǎng)絡(luò)之間的非線性變換。由式(1)可以看出,l層的輸出是l-1 層的輸出與l-1 層輸出的非線性變換之和。DenseNet 網(wǎng)絡(luò)每一層直接連接輸入層和損失層,從而減輕梯度消失的問題,其輸出公式如式(2)所示。
式中:xl是l層輸出特征圖,[x0,x1,...,xl-1]是l層前面所有層特征映射的拼接。因此相對于ResNet 等深度網(wǎng)絡(luò)依賴最后一層輸出的特征,而DenseNet 融合利用更多低層次的特征,其訓(xùn)練出來的分類器泛化性高。
以兩個Dense Block 為例的DenseNet 結(jié)構(gòu)如圖2 所示。
圖2 標(biāo)準(zhǔn)DenseNet 結(jié)構(gòu)
由圖2 可知,一個標(biāo)準(zhǔn)的DenseNet 結(jié)構(gòu)由輸入、卷積層、池化層、Dense Block 層、全連接層構(gòu)成。
在訓(xùn)練模型的過程中,只給定RGB 三色通道,沒有固定輸入圖像的大小,輸入尺寸大小不一的圖像就會導(dǎo)致全連接層的特征數(shù)不固定,從而程序報錯,訓(xùn)練不出合適的模型。如果在訓(xùn)練模型的過程中固定圖像的大小,那么就會對大于標(biāo)準(zhǔn)尺寸的圖像進行縮放或者是裁剪,對小于標(biāo)準(zhǔn)尺寸的圖像進行拉伸,縮放和拉伸會使圖片特征信息減弱,裁剪會出現(xiàn)部分區(qū)域圖像被多次裁剪,無形之中加大了該區(qū)域的權(quán)重。因此在網(wǎng)絡(luò)中添加SPP 層,這樣就可以輸入任意大小的圖片,不需要進行縮放、拉伸、裁剪等預(yù)處理工作。SPP 層結(jié)構(gòu)如圖3 所示。
圖3 SPP 層結(jié)構(gòu)圖
由圖3 可知,利用3 種不同刻度對輸入的特征圖進行劃分,總共得到21 塊。左邊把一張圖片劃分成16 塊,中間把一張圖片劃分成4 塊,右邊的把一張圖片劃分成1 塊,分別計算每塊的最大值(局部池化),這樣就可以把一張任意大小的圖片轉(zhuǎn)換成一個固定大小的21 維特征。
本研究嘗試了DenseNet121、DenseNet169、DenseNet161、DenseNet201 等多種深度的網(wǎng)絡(luò)后,根據(jù)試驗效果和實驗室環(huán)境綜合考慮,選用了DenseNet201 網(wǎng)絡(luò)[14]。DenseNet201 網(wǎng)絡(luò)的第1層是7×7 卷積層,感受野大,不適用于本研究大多數(shù)織物中小疵點的檢測,為了提取到織物疵點更多的細節(jié)特征用于精確分類,本研究選用1×1、3×3、5×5 的3 個分支卷積層替代7×7 卷積層。一方面,3 個分支卷積層可以識別各種大小織物疵點;另一方面,3 個分支卷積層使判決函數(shù)的性能得到了優(yōu)化;再一方面,3 個分支卷積層的使用降低了參數(shù)量,假設(shè)卷積層輸出特征圖的大小為s,3 個分支卷積層的參數(shù)為(1×1×s)×s+(3×3×s)×s+(5×5×s)×s=35s2,一個7×7卷積層的參數(shù)為(7×7×s)×s=49s2,所以在不改變初始感受野的情況下改進DenseNet201 網(wǎng)絡(luò)的第1 個卷積層,提升了織物疵點檢測模型的性能。改進后的DenseNet201 網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 改進后的DenseNet201 網(wǎng)絡(luò)結(jié)構(gòu)
遷移學(xué)習(xí)是把為A 任務(wù)開發(fā)的模型作為初始點,重新運用到B 任務(wù)訓(xùn)練模型的過程中。在深度學(xué)習(xí)中,要訓(xùn)練出一個泛化性高的模型,那么就需要大量的已標(biāo)注樣本以及相互獨立的訓(xùn)練集和測試集,這在實際訓(xùn)練模型時很難滿足。由于織物疵點數(shù)據(jù)集中的疵點種類很多,但是很多種類都不常見且數(shù)量很少,很難直接滿足深度學(xué)習(xí)訓(xùn)練模型的需要,因此采用在大型數(shù)據(jù)集Ima?geNet 下預(yù)訓(xùn)練好的DenseNet201 模型,去掉預(yù)訓(xùn)練好模型的全連接層,遷移學(xué)習(xí)預(yù)訓(xùn)練好模型的初始參數(shù),作為改進后的DenseNet201 網(wǎng)絡(luò)參數(shù),再在織物疵點數(shù)據(jù)集上重新訓(xùn)練頂層卷積網(wǎng)絡(luò),得到一個魯棒性和泛化性好的織物疵點檢測模型。
在普通的實驗室環(huán)境中,建立織物疵點數(shù)據(jù)集的難度很大,因此采用江蘇陽光集團在實際生產(chǎn)現(xiàn)場采集并開源的織物疵點數(shù)據(jù)集,具體的數(shù)量如圖5 所示。每張圖片的分辨率2 560 pixel×1 920 pixel,圖像細節(jié)特征清晰,每張圖片都由經(jīng)驗豐富的驗布工人確認。
圖5 織物疵點數(shù)據(jù)集數(shù)量圖
由圖5 可知,該織物疵點數(shù)據(jù)集包含2 163 張正??椢飯D片、1 584 張有疵點圖像,本研究選擇樣本數(shù)量較多的正常織物和擦洞、吊經(jīng)、跳花、織稀、毛洞、扎洞、缺經(jīng)、毛斑共8 類織物疵點圖像,作為該織物模型訓(xùn)練的數(shù)據(jù)集。
為了保證模型訓(xùn)練的精度,把數(shù)據(jù)集的80%作為訓(xùn)練集、10%作為驗證集、10%作為測試集。為了防止模型訓(xùn)練中出現(xiàn)過擬合問題,采用數(shù)據(jù)增強和Dropout 技術(shù)提高模型泛化能力。數(shù)據(jù)增強使用水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)、水平垂直翻轉(zhuǎn)、30°旋轉(zhuǎn)、45°旋轉(zhuǎn)、水平平移、垂直平移、水平垂直平移。
試驗過程中使用準(zhǔn)確率(Accuracy,Acc)作為模型好壞的評價指標(biāo),準(zhǔn)確率是模型針對全部樣本的判斷能力[15]。首先把數(shù)據(jù)集分為正類(無疵點)和負類(有疵點),那么對一批測試數(shù)據(jù)進行預(yù)測,結(jié)果就可以分成以下4 種。若一張圖像為無疵點,分類器將其判斷為無疵點,稱為真正類(True Positive,TP);反之,如果分類器將其判斷為有疵點,稱為假負類(False Negative,F(xiàn)N);若一張圖片為有疵點,分類器將其判斷為無疵點,稱為假正類(False Positive,F(xiàn)P);反之,若分類器將其判斷為無疵點,稱為真負類(True Negative,TN)。準(zhǔn)確率的計算公式如式(3)所示。
除此之外,訓(xùn)練過程中的損失值也是判定一個模型好壞的指標(biāo)之一,損失值越小,模型的魯棒性就越好。
首先利用劃分好的數(shù)據(jù)集分別對當(dāng)前主流的VGG16 模型、VGG19 模型、ResNet50 模型、In?ception 模型、DenseNet121 模型、DenseNet169 模型、標(biāo)準(zhǔn)DenseNet201 模型、改進DenseNet201 模型進行訓(xùn)練,訓(xùn)練完成后在數(shù)據(jù)集的測試集上分別測試對比;然后利用傳統(tǒng)的織物疵點檢測方法和數(shù)據(jù)集的測試集進行測試分析,方向梯度直方圖(HOG)特征方法、局部二值化模式(LBP)特征方法;最后在實驗室環(huán)境下采集純色織物圖像,分別測試分析模型的泛化性。
DenseNet201 模型是一個在大型數(shù)據(jù)集Ima?geNet 下預(yù)訓(xùn)練的模型,其中有1 000 個類別的輸出,與本研究使用的數(shù)據(jù)集差異性較大,所以在改進卷積層第1 層的基礎(chǔ)上,自定義全連接層,然后在全連接層前添加SPP 層,最后利用遷移學(xué)習(xí)和自己的數(shù)據(jù)集訓(xùn)練織物疵點檢測模型,讓訓(xùn)練出來的模型更加與織物疵點檢測相關(guān)。微調(diào)訓(xùn)練模型參數(shù)過程中,給定模型一個有疵點的圖像,輸入后將DenseNet201 模型的卷積層第1 層輸出的特征圖從寬度、高度、深度3 個維度進行可視化顯示,將每個通道的信息繪制成二維圖像,如圖6~圖8 所示。
圖6 卷積層第1 層卷積圖像信息可視化二維圖
圖7 卷積層第1 層卷積后歸一化圖像信息可視化二維圖
圖8 卷積層第1 層卷積、歸一化后激活圖像信息可視化二維圖
實驗室所用的環(huán)境配置是Inter i7?9700K 處理器、64GB 內(nèi)存、兩塊 NVIDIAGeForce RTX2080Ti 顯卡。在程序中設(shè)置試驗過程為當(dāng)驗證準(zhǔn)確率改變時就保存一次模型,訓(xùn)練100 次以增強模型的泛化性和魯棒性。通過訓(xùn)練過程中的反饋反復(fù)調(diào)節(jié)超參數(shù)、更換不同的Dropout 比例等方式,直到訓(xùn)練的模型達到最佳性能。其中標(biāo)準(zhǔn)DenseNet201 網(wǎng)絡(luò)模型訓(xùn)練過程的損失曲線和準(zhǔn)確率曲線如圖9 所示,改進的DenseNet201網(wǎng)絡(luò)訓(xùn)練過程損失曲線和準(zhǔn)確率曲線如圖10所示。
圖9 標(biāo)準(zhǔn)DenseNet201 網(wǎng)絡(luò)模型訓(xùn)練過程的準(zhǔn)確率曲線和損失曲線
由圖9 和圖10 可知,改進的DenseNet201 網(wǎng)絡(luò)模型訓(xùn)練過程的準(zhǔn)確率曲線比標(biāo)準(zhǔn)DenseNet201 網(wǎng)絡(luò)模型訓(xùn)練過程的準(zhǔn)確率曲線收斂,訓(xùn)練準(zhǔn)確率和驗證準(zhǔn)確率都平穩(wěn)趨近于1;改進的DenseNet201 網(wǎng)絡(luò)模型訓(xùn)練過程的損失曲線比標(biāo)準(zhǔn)DenseNet201 網(wǎng)絡(luò)模型訓(xùn)練過程的損失曲線收斂,訓(xùn)練損失和驗證損失都穩(wěn)定趨近于0。因此改進的DenseNet201 網(wǎng)絡(luò)模型泛化性和魯棒性更好。
圖10 改進的DenseNet201 網(wǎng)絡(luò)模型訓(xùn)練過程的準(zhǔn)確率曲線和損失曲線
利用訓(xùn)練好的模型、其他主流深度學(xué)習(xí)模型在織物疵點數(shù)據(jù)集的測試集上分別進行試驗驗證,試驗結(jié)果如表1 所示。
由表1 可知,改進DenseNet201 模型的權(quán)重參數(shù)相比其他試驗?zāi)P褪亲钌俚模?xùn)練精度和驗證精度相對于其他試驗?zāi)P筒皇亲詈?,但相對于其他試驗?zāi)P蜏y試精度最高、測試速度最快;改進DenseNet201 網(wǎng)絡(luò)模型比標(biāo)準(zhǔn)DenseNet201 網(wǎng)絡(luò)模型的測試精度提升了1.1 個百分點,測試速度提升了2 倍多,相比傳統(tǒng)的織物疵點檢測方法測試精度分別提高了27.6 個百分點、28.4 個百分點。由此可見,改進的DenseNet201 網(wǎng)絡(luò)模型能更好適應(yīng)實際工業(yè)生產(chǎn)環(huán)境中的織物疵點檢測。
表1 其他主流深度學(xué)習(xí)模型與本研究改進模型在測試集上測試結(jié)果對比
利用實驗室環(huán)境下采集的純色織物圖片驗證主流深度學(xué)習(xí)算法和傳統(tǒng)織物疵點檢測算法的泛化性,試驗效果如下。VGG16 模型、VGG19 模型、ResNet50 模型、Inception 模型、DenseNet121模型、DenseNet169 模型、DenseNet201 模型、改進DenseNet201 模型、HOG 模型、LBP 模型的測試精度分別為81.9%、82.6%、85.1%、85.9%、87.1%、 87.9%、 88.6%、 89.9%、 65.2%、67.3%。由于DenseNet201 模型卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)層是最深的,在提取織物圖像特征時會完整的保留特征信息,相對其他模型和傳統(tǒng)織物疵點檢測算法,測試精度最高,表現(xiàn)出了良好的泛化能力。 因此綜合模型的各種性能,改進的DenseNet201 模型泛化性符合要求。
本研究提出了基于DenseNet201 網(wǎng)絡(luò)的織物疵點檢測算法,能夠有效地識別正??椢铩? 種常見織物疵點。通過改進DenseNet201 的第1 層,使得在網(wǎng)絡(luò)感受野不變的情況下,可以滿足不同大小的織物疵點檢測,同時還降低了整個網(wǎng)絡(luò)的參數(shù)量。在自定義的全連接層前加入了SPP 層,不管網(wǎng)絡(luò)的輸入尺寸大小,都可以產(chǎn)生固定的輸出,能夠降低過擬合的程度,使得網(wǎng)絡(luò)更加容易收斂。本研究改進的DenseNet201 網(wǎng)絡(luò)進一步提升了織物疵點的識別精度和識別速度。該模型具有良好的泛化性和魯棒性,基本滿足現(xiàn)場工業(yè)生產(chǎn)檢測的需求。在后期試驗和研究過程中補充織物疵點的數(shù)據(jù)集,通過改進模型結(jié)構(gòu)、優(yōu)化模型參數(shù)等方式,訓(xùn)練出識別準(zhǔn)確率更高、識別速度更快的織物疵點檢測模型。