羅維平,徐 洋,陳永恒,周 博,馬雙寶,2,吳雨川,2
(1.武漢紡織大學 機械工程與自動化學院,湖北 武漢 430200;2.湖北省數字化紡織裝備重點實驗室 湖北 武漢 430200)
隨著深度卷積神經網絡的出現,織物疵點檢測研究出現新的方向。稀疏連接結構分類模型(GoogLeNet)、大規模圖像識別深度卷積網絡(VGG)、深度殘差網絡(ResNet)等深度學習經典圖像檢測模型的出現[9-12],織物疵點檢測研究也取得新的突破。文獻[13]應用ResNet模型中的101網絡提取織物疵點特征,再利用基于區域的快速卷積神經網絡(Faster RCNN)[14]檢測網絡對疵點目標進行識別,取得了較高的檢測準確率,但在識別速度方面實時性效果不理想;文獻[15]應用支持向量機分類算法完成了織物疵點檢測模型訓練,解決對小樣本、高緯度數據的分類問題,但需要利用GPU計算灰度共生矩陣(GLCM)特征值,計算量大成本高,在提高計算速度的同時需要降低輸入圖像像素大小,一定程度上減弱了的原始圖像特征信息;文獻[16]提出基于費舍爾(Fisher)準則的深層卷積神經網絡織物疵點檢測方法,在標準織物瑕疵圖像數據庫(TILDA)[17]織物和自建的彩色格子織物數據集上取得較好成績,但局限于特定織物疵點檢測,對紋理更為復雜和多種類疵點檢測上泛化能力較差。
針對上述問題,本文提出一種基于遷移學習和改進的ResNet50網絡織物疵點檢測算法,通過改進ResNet50網絡的殘差模塊,利用在大規模分層圖像數據庫(ImageNet)[18]上預訓練的權重參數進行遷移學習,訓練得到一個疵點識別模型,通過實驗表明該模型具有良好的泛化能力,能夠精準快速識別正常織物和7類疵點織物。
本文提出的織物疵點檢測算法主要工作流程為:首先對織物疵點數據集中的圖像進行預處理,篩選和提取出有效的數據樣本;然后對疵點樣本不平衡問題通過數據增強進行彌補;再對ResNet50網絡進行調整改進,提取預訓練ResNet50模型的權重參數作為初始值進行遷移學習;最后為了驗證模型性能,利用本文方法和VGG16、VGG19、標準ResNet50、ResNet152等主流模型在測試集上進行實驗對比測試。
隨著卷積神經網絡的發展,發現卷積層越深模型效果越好,所以在VGG模型取得成功后,學者們開始嘗試更深的卷積網絡,但實驗證明網絡深度增加會造成梯度爆炸、消失,導致系統不能收斂[19-21]。在VGG模型中通過對輸入數據和中間層的數據歸一化操作,保證網絡在反向傳播中采用隨機梯度下降法(Stochastic gradient descent, SGD),從而讓網絡達到收斂,但當模型網絡深度超過十幾層后,SGD已經失去作用,所以在出現ResNet模型出現之前,訓練非常深的神經網絡是非常困難的。針對這個問題,一種深度殘差網絡ResNet被提出,其允許網絡可以盡可能的加深,但其將輸入中的一部分數據不經過卷積網絡,直接送入到輸出,保留一部分原始信息,這種結構有效防止了反向傳播時的梯度彌散問題,從而使得網絡深度可以達到上百層甚至更深。ResNet網絡能添加更深卷積層提升效果,其中的殘差塊結構起關鍵作用,其結構如圖1所示[12]。

圖1 ResNet殘差塊結構
ResNet網絡原理是假設一個比較淺的網絡已達到飽和的準確率,這時在它后面再加上幾個恒等映射層(Identity mapping,即y=x,輸出等于輸入),這樣增加了網絡的深度,但誤差不會增加,即更深的網絡不會帶來訓練集誤差的上升,殘差結構計算公式如式(1)(2)所示:
y1=h(xl)+F(xl,Wl)
(1)
xl+1=f(yl)
(2)
式中:xl和xl+1分別表示第l個殘差單元的輸入和輸出,其中每個殘差單元包含多層結構,F是殘差函數,表示學習到的殘差,而H(x)=Xl表示恒等映射,f是Relu激活函數,由式(1)(2)可以求得從淺層l到深層L的學習特征,計算公式如式(3)所示:
(3)
利用鏈式規則,可以求得反向過程的梯度,計算公式如式(4)所示:
我國包括武隆在內的大部分亟需脫貧的地區,基層社會自治水平有待提高,民間自治意識、自治能力和自治文化都需要逐步培養,這將是一個相對長期艱難的過程。通過學習楓橋經驗、“三事分流”和“三社聯動”等有代表性的基層治理方式,在脫貧后扶中,武隆區也需要循序漸進推進村民自治,讓鄉村治理重心下移,切實把資源、服務、管理放下去,培育服務性、公益性、互助性農村社會組織,發展農村社會工作和志愿服務,減少對農村的考核評比、創建達標、檢查督查,發揮好、維護好村民委員會、農村集體經濟組織、農村合作經濟組織的積極性和主動性,從而有利于提高全區人民自發進行基層治理的參與程度,實現穩定脫貧,避免再返貧。
(4)
實驗中發現如果殘差映射F(x)結果的維度與跳躍連接X的維度不同,就無法對其進行相加操作,所以必須對X進行升維操作,使維度相同后才能相加計算,所以通常在跳躍連接X中加入stride=2的1×1特定卷積核,使X通過升維,讓其的輸出與卷積塊的輸出相同。實際中常用的殘差塊結構如圖2所示。
當反復堆疊殘差模塊時,可以構成不同深度的網絡結構[22],本文嘗試了ResNet18、ResNet34、ResNet50、ResNet101、ResNet152等多種深度的網絡后,根據實驗效果和計算量綜合考慮,選用了50層的ResNet50網絡,標準的不同層數的ResNet網絡結構如表1所示[12]。
由表1可以看出,所有的ResNet網絡第1層都是經過7×7卷積層,感受野較大,對于ImageNet數據庫中的圖像提取特征足夠,但在本文研究中,織物疵點種類多且大多數疵點非常小,為了更加精確的對疵點進行分類這就需要提取更多有效細微特征,所以本文在設計網絡時對第1層7×7卷積層進行了改進,使之更加適應疵點檢測特征提取任務。本文設計中用3個3×3的堆疊卷積層替換7×7卷積層,一方面3個卷積層使用了更多的非線性激活函數,使得判決函數更具有判決性;另一方面,還有效降低了計算參數量,假設卷積層的輸入和輸出的特征圖大小相同為Z,3個3×3的卷積層參數個數3×(3×3×Z)×Z)=27×Z2;一個7×7卷積層的參數個數為(7×7×Z)×Z=49×Z2,所以在不改變初始感受野的情況改進網絡第1層,能為疵點檢測模型帶來更好的性能。
除此之外,在疵點檢測問題中,疵點占整幅圖像面積較小,獲取的信息占比小,為了避免無用信息冗余,本文在殘差模塊stride=2的1×1的卷積核做下采樣前又加入一層2×2的平均池化層(avg-pool)整合空間信息,平均池化層沒有參數,不改變全局參數量,同時可防止在該層出現過擬合,減少計算量的同時,提高檢測速度。
經過改進的ResNet50網絡結構如圖3所示。

圖3 改進后的ResNet50網絡結構
在機器學習中,要訓練出一個魯棒性很好的模型,需要有足夠多的已標注樣本和大量的具有相同分布又相互獨立的訓練集和測試集,這在實際訓練過程中很難滿足[23]。在本文研究中,織物疵點種類雖多,但很多疵點并不常見,所以疵點圖像樣本及其缺乏,針對此問題本文采用遷移學習來彌補。遷移學習是通過從已學習的相關任務中遷移其知識來對需要學習的新任務進行提高,而不需要從零開始學習。在深度學習領域,如果有一個原始圖像數據集足夠大,那么預訓練網絡模型學到的特征的空間層次結構可以有效的作為視覺世界的通用模型,因此這些特征可用于各種不同的計算機視覺問題,即使這些新的分類問題設計的類別和原始任務完全不同[24]。在卷積神經網絡模型中,某個卷積層提取的特征的通用性取決于該層在模型中的深度,更靠近模型底部的層提取的信息是局部的、高度通用的特征圖,如視覺邊緣、顏色、紋理等,更靠近頂部的層提取的是更加抽象的概念,如具體的類別輪廓、形狀[25]。基于上述理論,本文中選擇在大型圖像數據集ImageNet上訓練好的ResNet50模型參數,作為本文修改后的ResNet50網絡初始參數,再在本文織物數據集中繼續重新訓練頂層卷積網絡,使其更加適應疵點檢測問題。
由于現有公開的織物疵點數據庫有限,研究者多選擇采用自建數據庫,但種類齊全的高清織物疵點采集難度高,有效數據有限,只能針對部分特定的疵點類型和布匹材料自建小型數據集;除此之外,如現有的TILDA織物數據庫織物疵點集數據數量少,種類少,總體數據不到千張圖像,像素低,疵點特征信息受限,即使使用數據增強可以一定程度降低模型過擬合,但原始圖像數量少始終限制模型訓練精度。基于此,江蘇陽光集團開源了真實的企業生產現場采集的織物圖像數據集[26],每張圖像分辨率為2 560像素×1 920像素,圖像特征細節清晰,并全部經過經驗豐富的驗布工人確認,然后對每張圖像使用標注工具LabelImg人工標注,生成對應的xml格式信息文件,包含瑕疵種類、位置等信息,數據集共有4 036張超清織物數據圖像,其中包含1 360張無疵點圖像,2 676張有瑕疵圖像,瑕疵種類包含常見的吊邊疵、擦洞、跳花、雙緯紗、打結、漏紗、破洞、多斑、缺經、缺緯等42種,此數據集是目前公布的種類最為齊全、數量最多、圖像分辨率最高的織物疵點數據集。本文選用此數據集中樣本較多的幾種疵點樣本,包括正常織物和擦洞、破洞、漏紗、缺緯、缺經、跳花、多斑等7類疵點織物,由于其他疵點類型樣本較少,用于樣本訓練會影響模型精度,所以將其余疵點樣本歸為一類,總體作為模型訓練的樣本共有9類,選用的疵點類型數據集中的部分圖像如圖4所示。

圖4 本文訓練集中部分圖像
數據集中無疵點圖像與各類疵點圖像數量相差較多存在數據不平衡問題,直接訓練會導致模型過擬合;除此之外,由于訓練硬件限制(2塊RTX1080Ti 11G GPU),原始圖像分辨率較大,訓練時計算量大,所以必須對訓練數據進行預處理。疵點識別判斷需要獲得疵點特征細節,如果直接縮減會犧牲圖像細節特征,降低圖像所帶的信息量,所以本文采取以滑動窗口為320像素×320像素大小,滑動步長為160大小裁剪,將2 560像素×1 920像素的原始圖像切割成8×6份,這樣每張原始圖像分割成了48張圖像細節不變的小尺寸圖像。但是這樣處理后瑕疵圖像會出現正好切在瑕疵邊緣或瑕疵面積占比較小的問題,因此,本文進一步對切割后的瑕疵圖像根據標注的瑕疵位置信息計算瑕疵面積占比,篩選出切割后瑕疵面積占原始瑕疵面積一定閾值以上的圖像作為有效數據,選擇占比超過10%的疵點作為有效疵點圖像。最終,模型訓練樣本集按照2∶1選擇無瑕疵圖像10 034張、有瑕疵圖像5 017張作為樣本集。為了測試模型訓練精度,從訓練樣本集中各選擇80%作為訓練集,10%作為驗證集,10%作為測試集。在訓練中為了防止過擬合,本文還采用了Dropout和數據增強技術以提升模型的泛化能力。數據增強是從現有的訓練樣本中利用多種能夠生成可信圖像的隨機變換來增加樣本以提升模型泛化能力,文中所有數據增強使用的變化參數為90°圖像隨機旋轉范圍,水平、垂直方向上平移比例為30%,隨機錯切角度為90°、透視變換比例為20%,縮放變化范圍比例為10%,水平、垂直隨機翻轉,對常見疵點擦洞進行數據增強后的部分圖像如圖5所示。

圖5 擦洞圖像應用數據增強后的部分擴增圖像
實驗中使用準確率(Accuracy, Acc)作為模型的評價指標,準確率是評價模型對全部樣本的判定能力。在分類問題中要將實例分為正類(Positive)和負類(Negative),分類模型在實際的分類結果中可能會出現下面4中情況:若一個實例是正類,分類器將其判定為正類,稱為真正類(True Positive,TP);反之,如果分類器將其判定為負類,稱為假負類(False Negative,FN);若一個實例是負類,分類器將其判定為正類,稱為假正類(False Positive,FP);反之,若分類器將其判定為負類,稱為真負類(True Negative,TN)[27-28]。這樣可以推導出準確率Acc的計算式如式(5)所示:
(5)
除此之外,訓練過程中的損失值也是重要指標之一,其是用于評價學習權重張量的反饋信號,能夠衡量當前任務是否解決,訓練中需要最小化,是用來估量模型的預測值f(x)與真實值Y的不一致程度,其是一個非負實值函數,通常使用L(Y,f(x))來表示,損失函數越小,模型的魯棒性越好。
為了驗證本文提出的疵點檢測模型性能,本文設計多個實驗。第1部分使用本文數據集分別訓練當前主流的VGG16模型、VGG19模型、標準ResNet50模型、ResNet152模型和本文方法改進的ResNet50模型,然后在本文測試集上分別測試對比;第2部分參考文獻[15-16]中的方法,使用傳統的特征提取方法,復現了文獻[15]中提出的選取方向梯度直方圖(HOG)特征和文獻[16]中提出的選取局部二值模式(LBP)特征方法,利用本文測試集進行測試對比本文方法;第3部分使用在實驗室環境下采集的純色背景泳裝布料自建數據集作對比實現數據集,分別驗證上述方法及模型的泛化性和準確性,自建泳裝布料數據集部分圖像如圖6所示。

圖6 部分自建泳裝布料數據集
為了得到足夠準確和泛化能力更好的模型,需要在訓練模型的過程中監控訓練損失和驗證損失,以及最重要的訓練準確率和驗證準確率,如果發現模型的驗證數據的性能開始連續下降,則可以判斷為過擬合,本文在程序中實現過程為當驗證準確率連續10輪訓練都不再優化時則提前終止訓練。通過驗證過程的反饋反復調節超參數、嘗試不同的Dropout比例等[27],直到模型達到最佳驗證性能。本文訓練了實驗設計中的所有模型,其中標準ResNet50網絡模型訓練過程的損失曲線和準確率曲線如圖7所示;改進的ResNet50網絡訓練過程損失曲線和準確率曲線如圖8所示。

圖7 標準ResNet50網絡模型訓練過程的損失曲線和準確率曲線

圖8 改進的ResNet50網絡訓練過程損失曲線和準確率曲線
根據訓練好的模型,使用訓練樣本中的測試集,對各模型和復現的傳統檢測算法分別進行實驗驗證,實驗結果如表2所示。
由表2可知,改進ResNet50網絡的權重參數是實驗模型中最少的,測試速度最快,改進的ResNet50網比標準ResNet50網絡的準確率提升了4.2%,速度提升1倍,雖然相較于ResNet152網絡準確率低了0.13%,但網絡權重減少50%,檢測速度提升約3.3倍,對比下本文改進模型綜合性能最好。文獻[15]中基于HOG特征的疵點檢測方法在本文數據集上的測試準確率只有70.51%,分析主要原因在于此算法會對原始圖像進行切割分別提取圖像塊做檢測處理,但沒有對全局進行檢測,導致檢測時部分切割邊緣被檢測為疵點;文獻[16]中從整體織物圖像中獲取代表織物局部紋理的LBP特征,進而實現瑕疵的無監督檢測的檢測方法在本文測試集中檢測準確率只有69.95%,分析其主要原因在于此算法受限于提取LBP特征的子窗口大小,原文實驗選取子窗口大小為織物紋理最小周期的2倍左右,而其測試織物疵點周期大小都在6~11個像素之間,實驗樣本不具有實際生產現場疵點大小代表性,本文測試集樣本疵點大小不一,沒有任何人工大小篩選,具有工業現場數據代表性。2種傳統疵點檢測算法的檢測時間受限于檢測樣本疵點多少和疵點像素大小,無法進行有效統計,而本文算法相比較2種傳統檢測算法準確率分別提高25.81%和26.87%,同時檢測速度不受疵點大小影響,速度恒定且快速。本文疵點錯誤率主要來源于2種情況,一是同一張圖中出現2種疵點及以上類型,在分類算法中無法有效解決多目標同時存在問題;二是疵點類型相似的圖例識別錯誤率較高,如小擦洞和小破洞這2種類型,自身區別極其微小,模型識別準確率也較低。

表2 主流算法模型與本文改進模型在訓練數據集上的測試結果對比
為了驗證各模型和傳統檢測算法的泛化性能,在實驗室環境下采集自建的純色背景泳裝布料數據集上進行實驗驗證,此數據集未參與模型訓練,可有效對比各模型泛化能力,實驗結果如表3所示。

表3 主流算法模型與本文改進模型在自建數據集上的測試結果對比
由表3可知,在不同的織物疵點檢測數據集上,模型泛化能力最好的是網絡最深的ResNet152模型,其次是改進的ResNet50模型,只相差0.63%,但比標準ResNet50模型提升2.66%,綜合考慮模型計算量、測試精度、測試速度,改進的ResNet50模型是性能是最好的。
本文提出一種基于遷移學習和改進ResNet50網絡的織物疵點檢測算法,通過改進ResNet50網絡第1層和殘差模塊結構,提升了疵點檢測精度和檢測速度,可以有效識別正常織物和8種類型織物疵點。通過實驗結果表明:
①在疵點識別精度上,改進ResNet50模型對正常織物和擦洞、破洞、漏紗、缺緯、缺經、跳花、多斑及其余疵點等8類常見疵點識別準確率達到96.32%,識別精度對比未改進的標準模型提升了4.2%,對比其他主流單模型識別精度可以提升7~9個百分點。
②在疵點識別速度上,改進ResNet50模型對比未改進的標準模型速度提升了1倍,計算量減少10%,對比其他主流單模型速度可以提升53%左右。
③在模型泛化能力上,在同一測試集中,改進ResNet50模型對比未改進的標準模型識別精度提升2.66%,對比傳統檢測模型可以提升23%左右,泛化性能力強,魯棒性好。
改進ResNet50網絡的織物疵點檢測算法精度高、速度快、魯棒性好,泛化能力強,可以滿足工業生產現場對織物疵點檢測的各項指標要求,較之人工檢出更好地滿足工業企業對織物疵點識別的需求,節省了疵點檢測人力消耗。