郝用興 龐永輝
摘 要:本文對帶鋼表面斑塊、裂紋、夾雜等6種缺陷進(jìn)行研究,利用DenseNet深度學(xué)習(xí)網(wǎng)絡(luò)和PyQt5設(shè)計(jì)一種缺陷智能識別系統(tǒng),可以實(shí)現(xiàn)帶鋼表面缺陷準(zhǔn)確高效的識別。該識別系統(tǒng)在以Tensorflow為后端的Keras平臺上搭建,采用遷移學(xué)習(xí)的方法對帶鋼表面的6種缺陷進(jìn)行識別,訓(xùn)練過程中凍結(jié)基礎(chǔ)模型DenseNet的頂層部分,利用數(shù)據(jù)擴(kuò)充、添加BN層防止過擬合。最終模型在訓(xùn)練集上的正確率為99.33%,在測試集上每一類缺陷的正確率均超過97%,其間繪制出混淆矩陣。最后,搭建缺陷識別系統(tǒng)的GUI界面,實(shí)現(xiàn)帶鋼表面缺陷識別的可視化功能,提高用戶體驗(yàn)。
關(guān)鍵詞:缺陷檢測;圖像識別;遷移學(xué)習(xí);DenseNet;GUI;PyQt5
中圖分類號:TTH164;TP29文獻(xiàn)標(biāo)識碼:A 文章編號:1003-5168(2021)03-0011-04
Research on Intelligent Recognition System of Strip Steel Surface
Defects Based on DenseNet
HAO Yongxing PANG Yonghui
(School of Mechanical Engineering, North China University of Water Resources and Electric Power,Zhengzhou Henan 450045)
Abstract: In this paper, six kinds of defects such as patches, cracks, and inclusions on the surface of strip steel were studied, and an intelligent defect recognition system was designed by using DenseNet deep learning network and PyQt5, which could realize accurate and efficient identification of surface defects of strip steel. The recognition system was built on the Keras platform with Tensorflow as the backend, which used the transfer learning method to identify the six defects on the surface of the strip, froze the top part of the basic model DenseNet during the training process, used data to expand and added a BN layer to prevent overfitting. The final model had a correct rate of 99.33% on the training set, and the correct rate of each type of defect on the test set exceeded 97%, during which a confusion matrix was drawn. Finally, the GUI interface of the defect recognition system was built to realize the visual function of surface defect recognition of strip steel and improve the user experience.
Keywords: defect detection;image identification;transfer learning;DenseNet;GUI;PyQt5
隨著“中國制造2025”的提出,制造與檢測的智能化成為加工制造業(yè)發(fā)展的必然趨勢。為了滿足日益增長的生產(chǎn)力需求,設(shè)計(jì)一種智能化的缺陷識別系統(tǒng)已迫在眉睫。深度學(xué)習(xí)作為人工智能的一種工具,其強(qiáng)大的數(shù)據(jù)表征能力令其發(fā)展迅速,它可以通過訓(xùn)練復(fù)雜的模型,學(xué)習(xí)數(shù)據(jù)的內(nèi)在規(guī)律特性,應(yīng)用范圍廣,準(zhǔn)確度高。將深度學(xué)習(xí)應(yīng)用于工業(yè)領(lǐng)域是當(dāng)今時代的一大熱潮,其具有強(qiáng)大的學(xué)習(xí)能力,可以通過訓(xùn)練自動提取圖像特征,適用于不同的目標(biāo),泛化性強(qiáng)[1-2]。
鑒于深度學(xué)習(xí)的優(yōu)勢,本次研究利用DenseNet模型,以帶鋼表面缺陷為研究對象,利用遷移學(xué)習(xí)的方法搭建模型,實(shí)現(xiàn)帶鋼表面6種缺陷的識別。同時,利用PyQt5搭建GUI界面,實(shí)現(xiàn)調(diào)參及測試的可視化。
1 DenseNet模型簡介
深度卷積神經(jīng)網(wǎng)絡(luò)在圖像識別任務(wù)中取得了優(yōu)異的成績,一般由卷積層、池化層和全連接層組成[3]。本次研究以DenseNet網(wǎng)絡(luò)為基礎(chǔ),實(shí)現(xiàn)帶鋼表面缺陷的識別。
DenseNet是一種具有密集連接的卷積神經(jīng)網(wǎng)絡(luò),由一系列的Dense Block和Transition Layer堆疊而成。一個Dense Block中有若干層結(jié)構(gòu),每一層都由三個連續(xù)的操作組成,即BN(Batch Normalization)、ReLU、卷積。任意兩層之間都有直接的連接,即網(wǎng)絡(luò)每一層的輸入都是前面所有層輸出的通道合并的并集,而該層所學(xué)習(xí)的特征圖直接傳給其后面所有層作為輸入[4]。
這種形式最大限度地完成了信息傳遞,實(shí)現(xiàn)了特征復(fù)用,有效地緩解了梯度消失的問題。與傳統(tǒng)的網(wǎng)絡(luò)相比,特征復(fù)用使DenseNet無須重新學(xué)習(xí)冗余的特征圖,有利于模型的訓(xùn)練。但是,每一層都存在通道合并操作,使得輸出時通道數(shù)很大,而Transition Layer結(jié)構(gòu)利用池化操作將通道數(shù)降低至指定標(biāo)準(zhǔn),減少了參數(shù)數(shù)量,在一定程度上緩解了過擬合問題。本研究選用DenseNet-201作為基礎(chǔ)模型。
2 缺陷識別模型的遷移學(xué)習(xí)
遷移學(xué)習(xí)是把已訓(xùn)練好的模型參數(shù)遷移到新的模型以幫助其訓(xùn)練,可有效降低訓(xùn)練成本。缺陷識別模型的遷移學(xué)習(xí)主要包括以下幾個步驟:數(shù)據(jù)集的準(zhǔn)備、模型設(shè)計(jì)以及模型訓(xùn)練[5]。具體流程如圖1所示。
2.1 數(shù)據(jù)集的準(zhǔn)備
試驗(yàn)采用的數(shù)據(jù)來自某大學(xué)帶鋼表面缺陷數(shù)據(jù)庫,該數(shù)據(jù)庫收集了6種典型的熱軋帶鋼表面缺陷,即軋入鱗片(RS)、斑塊(Pa)、裂紋(Cr)、凹坑表面(PS)、夾雜(In)和劃痕(Sc)。數(shù)據(jù)庫包括1 800張灰度圖像,涵蓋了6種典型表面缺陷的300個樣本。
數(shù)據(jù)集的質(zhì)量直接決定模型性能的好壞,所以要對數(shù)據(jù)進(jìn)行預(yù)處理。首先,按照4∶1的比例把數(shù)據(jù)集分為訓(xùn)練集和測試集,得到1 440張圖片組成的訓(xùn)練集;然后,對訓(xùn)練集的數(shù)據(jù)進(jìn)行擴(kuò)增,以滿足深度學(xué)習(xí)對數(shù)據(jù)量的需求;最后,綜合采取多種措施,如對原始圖像數(shù)據(jù)進(jìn)行水平翻轉(zhuǎn)和垂直翻轉(zhuǎn)、改變對比度等,達(dá)到數(shù)據(jù)擴(kuò)充的目的,最終得到10 080張訓(xùn)練集圖片,其中每個類別有1 680張圖片,保證了數(shù)據(jù)的均衡。
2.2 模型設(shè)計(jì)
Keras的應(yīng)用模塊提供了帶有預(yù)訓(xùn)練權(quán)值的深度學(xué)習(xí)模型。這些模型在ImageNet數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練得到的權(quán)重可以用來進(jìn)行預(yù)測、特征提取和微調(diào)。人們可以調(diào)用應(yīng)用模塊下載訓(xùn)練好的DenseNet-201作為基礎(chǔ)模型,接著對模型的分類器和結(jié)構(gòu)細(xì)節(jié)進(jìn)行設(shè)計(jì)。缺陷識別模型的結(jié)構(gòu)如表1所示。首先創(chuàng)建一個輸入層,將圖片resize(調(diào)整尺寸)至224×224的大小,然后將其輸入帶有預(yù)訓(xùn)練權(quán)值的DenseNet-201模型中。為了使模型更好地符合當(dāng)前的識別任務(wù)要求,對DenseNet-201的輸出做全局平均池化操作后,連接一個1 024個神經(jīng)元的全連接層。為了緩解過擬合情況,在全連接層后增加一個BN層,最后連接用于分類處理的Softmax函數(shù)。
BN層又被稱為批量標(biāo)準(zhǔn)化層,它的作用是將模型上一層的輸出數(shù)據(jù)處理為均值等于0、方差等于1的數(shù)據(jù)分布,再送入下一層進(jìn)行處理。為了彌補(bǔ)標(biāo)準(zhǔn)化對數(shù)據(jù)表達(dá)特征能力的影響,本研究引入了可學(xué)習(xí)的參數(shù)[γ]、[β],相關(guān)計(jì)算公式為:
[yk=γkxk+βk]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1)
式中,[xk]為第[k]層所有神經(jīng)元的輸出數(shù)據(jù)歸一化處理之后的結(jié)果,作為BN層的輸入;[yk]為BN層的輸出結(jié)果,將參與后續(xù)神經(jīng)網(wǎng)絡(luò)的計(jì)算。
參數(shù)[xk]的計(jì)算公式為:
[xk=xk-ExkVarxk]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)
式中,[xk]為第[k]層神經(jīng)元的輸出數(shù)據(jù);[Exk]、[Varxk]分別為輸出數(shù)據(jù)的均值和方差。
對于第[k]層來說,每一個神經(jīng)元對應(yīng)一對參數(shù)[γ]、[β]。讓標(biāo)準(zhǔn)化后的數(shù)據(jù)恢復(fù)模型學(xué)習(xí)到的特征分布,同時緩解模型的過擬合現(xiàn)象。
Softmax函數(shù)是多分類問題中最后一步的輸出處理,為歸一化指數(shù)函數(shù)。將每一個輸出結(jié)果映射為0到1的概率,進(jìn)行分類,同時又保證所有輸出信號的和為1。
2.3 模型訓(xùn)練
帶鋼缺陷識別模型的搭建、訓(xùn)練以及測試均是在以Tensorflow為后端的Keras平臺上進(jìn)行的。硬件環(huán)境為Inter(R)Xeon(R)Silver4116CPU@2.10GHz,本研究利用Anaconda在Windows10 64位系統(tǒng)下配置Python3.6的虛擬環(huán)境。
在遷移學(xué)習(xí)中,為了讓模型更加符合帶鋼表面缺陷的圖像數(shù)據(jù),通常在預(yù)訓(xùn)練模型的基礎(chǔ)上進(jìn)行微調(diào)。深度學(xué)習(xí)網(wǎng)絡(luò)中的前幾層得到的特征是比較基礎(chǔ)的邊緣、角點(diǎn)特征,適用于全部任務(wù);而網(wǎng)絡(luò)層數(shù)越高的層和數(shù)據(jù)庫全局信息聯(lián)系越緊密。本試驗(yàn)中,預(yù)訓(xùn)練模型DenseNet-201共有706層,凍結(jié)頂層的606層卷積層,訓(xùn)練剩下的卷積層和全連接層,整個模型一共有20 299 334個參數(shù),凍結(jié)了14 742 912個參數(shù),可訓(xùn)練的參數(shù)量為5 556 422。
值得說明的是頂層被凍結(jié)的606層中包含的BN層。BN層使得深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中每一層網(wǎng)絡(luò)輸入都保持相同的分布,減少了過擬合并具有輕微的正則化效果。在遷移訓(xùn)練中,layer.trainable參數(shù)可以控制卷積層的參數(shù)是否可變,但BN層的參數(shù)是由K.learning_phase的值控制的。在默認(rèn)的情況下,BN層在遷移學(xué)習(xí)中的設(shè)置為預(yù)測模式,導(dǎo)致BN層中的均值[Exk]和方差[Varxk]不會更新。因此,在用訓(xùn)練好的模型測試時,BN層使用的均值和方差仍是預(yù)訓(xùn)練時使用的數(shù)據(jù)集的值,而不是來自帶鋼表面缺陷的數(shù)據(jù)集,導(dǎo)致模型在測試數(shù)據(jù)集上的準(zhǔn)確率會大大降低。所以,含有BN層模型的遷移學(xué)習(xí)在凍結(jié)模型權(quán)重時將BN層設(shè)定為訓(xùn)練模式,可以提高模型的準(zhǔn)確率。
模型訓(xùn)練過程中,較大的學(xué)習(xí)率可以加快訓(xùn)練速度,但會使模型找不到最優(yōu)解。因此,設(shè)置初始的學(xué)習(xí)率為0.001,當(dāng)檢測到測試集的準(zhǔn)確率在3個訓(xùn)練周期內(nèi)不增加時,學(xué)習(xí)率會下降至原來的一半。正則化系數(shù)設(shè)置為0.000 1,Batch Size設(shè)置為16,將所有數(shù)據(jù)訓(xùn)練一次時,要訓(xùn)練630次,訓(xùn)練周期數(shù)為60,一共迭代37 800次。同時,為了防止因過度訓(xùn)練導(dǎo)致過擬合,如果檢測到準(zhǔn)確率在5個周期內(nèi)沒有提升,就可以提前結(jié)束訓(xùn)練過程。設(shè)置好訓(xùn)練參數(shù),就可以訓(xùn)練模型。
模型訓(xùn)練過程中,從訓(xùn)練集中隨機(jī)抽取10%的數(shù)據(jù)作為驗(yàn)證集。驗(yàn)證集和訓(xùn)練集的損失值和準(zhǔn)確率是判定模型性能的重要指標(biāo),損失值是模型預(yù)測值與真實(shí)值的差距,準(zhǔn)確率為訓(xùn)練過程中每次迭代后測試的結(jié)果。訓(xùn)練過程中,訓(xùn)練集上的損失值與準(zhǔn)確率的變化情況如圖2所示,從圖中可以看到,第20個周期時準(zhǔn)確率已經(jīng)達(dá)到99%左右,第21個周期時訓(xùn)練停止。
模型在訓(xùn)練集上的損失值為0.134 4,準(zhǔn)確率為99.33%。
2.4 模型評估
混淆矩陣是一種在深度學(xué)習(xí)中常用的輔助工具,有助于人們直觀地了解分類模型在每一類樣本里面的表現(xiàn),常作為模型評估的一部分。
在識別任務(wù)中,查準(zhǔn)率([Precision])、召回率([Recall])以及F1-Score指標(biāo)是評估模型性能常用的指標(biāo)。查準(zhǔn)率是在模型預(yù)測為正的所有樣本中模型預(yù)測對的比重。召回率是在真實(shí)值是正的所有樣本中模型預(yù)測對的比重。而F1-Score指標(biāo)則綜合了查準(zhǔn)率與召回率的產(chǎn)出的結(jié)果。F1-Score的取值范圍為0~1,1代表模型的輸出最好,0代表模型的輸出結(jié)果最差,其計(jì)算公式為:
[F1-Score=2×Precision×RecallPrecision+Recall]? ? ? ? ? ? ? ?(3)
在多分類的混淆矩陣中,查準(zhǔn)率為主對角線上的值除以該值所在列的和;召回率等于主對角線上的值除以該值所在行的和。人們可以從混淆矩陣的結(jié)果直觀地獲得各個參數(shù)的值,并根據(jù)數(shù)據(jù)制作統(tǒng)計(jì)表?;煜仃嚁?shù)值如表2所示。
從表2可以看出,評估模型使用的數(shù)據(jù)集包括56個Cr樣本、68個In樣本、68個Pa樣本、77個PS樣本、89個RS樣本以及90個Sc樣本,從模型對每一類缺陷的F1-Score值來看,多個指標(biāo)都在0.98上下浮動。
3 缺陷識別模型的GUI實(shí)現(xiàn)
本文用PyQt5設(shè)計(jì)缺陷識別模型的用戶交互界面,實(shí)現(xiàn)測試過程調(diào)參和圖片的可視化。設(shè)計(jì)的缺陷識別系統(tǒng)包括兩個界面,即登錄界面和測試界面。登錄界面是展示給用戶的第一界面,主要功能是測試界面的入口。測試界面可以利用訓(xùn)練好的模型進(jìn)行圖像識別,明確圖片屬于哪一類缺陷。測試界面中設(shè)置了兩種測試方式,即單張檢測和多張檢測。測試界面的設(shè)計(jì)效果如圖3所示。
4 結(jié)語
本文基于深度學(xué)習(xí)理論,利用DenseNet模型和遷移學(xué)習(xí)方法搭建帶鋼表面缺陷識別系統(tǒng)。為防止過擬合,其間對數(shù)據(jù)進(jìn)行擴(kuò)充處理,設(shè)置學(xué)習(xí)率變化,并在預(yù)訓(xùn)練權(quán)重的基礎(chǔ)上添加BN層和Softmax層。試驗(yàn)證明,模型訓(xùn)練集達(dá)到99.33%的識別正確率。DenseNet深度學(xué)習(xí)模型對帶鋼表面6種缺陷的識別準(zhǔn)確率均超過97%,結(jié)果表面該方法在工業(yè)方面有很高的應(yīng)用價值。本文設(shè)計(jì)了基于PyQt5的GUI界面,界面簡潔易懂,操作方便,可以更好地滿足用戶需求。
參考文獻(xiàn):
[1]陳文輝,蔡妹姝,嚴(yán)松,等.基于深度卷積神經(jīng)網(wǎng)絡(luò)與遷移學(xué)習(xí)的魚類分類識別[J].福建師大福清分校學(xué)報(bào),2019(5):30-38.
[2]王占云,閆志華.一種基于深度學(xué)習(xí)的產(chǎn)品分類統(tǒng)計(jì)方法的研究[J].機(jī)械設(shè)計(jì)與制造,2020(3):163-166.
[3]林志瑋,丁啟祿,黃嘉航,等.基于DenseNet的無人機(jī)光學(xué)圖像樹種分類研究[J].遙感技術(shù)與應(yīng)用,2019(4):704-711.
[4]高建瓴,王竣生,王許.基于DenseNet的圖像識別方法研究[J].貴州大學(xué)學(xué)報(bào)(自然科學(xué)版),2019(6):58-62.
[5]廉小親,成開元,安颯,等.基于深度學(xué)習(xí)和遷移學(xué)習(xí)的水果圖像分類[J].測控技術(shù),2019(6):15-18.