張 立,王桂棠,陳建強,王國楨
(1.廣東工業(yè)大學(xué)機電工程學(xué)院,廣東 廣州 510006;2.廣州滄恒自動控制科技有限公司,廣東 廣州 510663;3.北京師范大學(xué)-香港浸會大學(xué)聯(lián)合國際學(xué)院計算機學(xué)院,廣東 珠海 519087)
熱軋鋼帶生產(chǎn)具有速度快、溫度高,缺陷多樣性的特點[1,2]。人工檢測主要依據(jù)檢測人員的自身的分辨能力和經(jīng)驗,但是人眼難以持續(xù)檢測,因此很難檢測鋼帶表面的微小缺陷,也難以保證時時在線檢測[3]。近幾年使用機器視覺和圖像處理技術(shù),使得鋼帶表面缺陷檢測更加高效[4]。熱軋鋼帶表面缺陷圖像信息量大,缺陷種類多,傳統(tǒng)機器視覺的方式很難為每類缺陷設(shè)計一個算法,從而導(dǎo)致適應(yīng)性差等缺陷。使用隱馬爾可夫樹(Hidden Mar?kov Tree,HMT)對預(yù)處理后的圖像進(jìn)行初步分割,綜合多尺度融合(Context-Adaptive Hidden Markov tree,CAHMT),提升對缺陷的識別率[5]。通過對傳統(tǒng)的Gabor濾波器進(jìn)行改進(jìn),提出查分復(fù)合進(jìn)化的Gabor濾波器優(yōu)化方法,使得鋼帶表面缺陷檢測的實時性提升,效率提升2.3倍[6]。通過使用改進(jìn)的P-Relief方法對圖像缺陷進(jìn)行特征選擇,結(jié)合支持向量機(SVM)對特征進(jìn)行分類,可以得到高區(qū)分性和魯棒性的鋼帶表面缺陷特征,獲得較高的識別率[7]。為了提升檢測精度,結(jié)合CART 和C4.5等方法,對熱軋鋼帶質(zhì)量分析,取得精度的大幅提升;通過采用特征編碼,再合并相同缺陷區(qū)域的方法,實現(xiàn)對鋼帶表面缺陷檢測精度的提升[8]。以上方法在鋼帶表面缺陷檢測中都有很高的檢測精度與一定場合的適用性,但是以上方法均需要手工選取感興趣區(qū)域輸送給特征檢測算法,缺少對具有大量信息的缺陷樣本的泛化能力。為了提高缺陷識別的識別率,提出了一種新的、簡單的、魯棒的噪聲特征描述符:鄰域評價完備局部二值模式(AECLBPs)。在該方法中,構(gòu)造了一個以鄰域為中心的鄰域評價窗口來修改已完成局部二值模式的閾值方案。通過實驗表明,這個方法可以在惡劣環(huán)境下取得較高的識別精度[9]。結(jié)合使用支持向量機對熱軋鋼帶表面缺陷進(jìn)行分類,取得較高的識別精度[10]。2006年深度學(xué)習(xí)開始得到快速發(fā)展,很多圖像相關(guān)任務(wù)都轉(zhuǎn)向使用神經(jīng)網(wǎng)絡(luò)[11]。隨著研究人員不斷的在深度學(xué)習(xí)方面的投入,越來越多的科學(xué)成果呈現(xiàn)出來,逐漸的形成了主流結(jié)構(gòu),對于各個結(jié)構(gòu)進(jìn)行分析優(yōu)缺點、模型訓(xùn)練遇到的問題的解決方案進(jìn)行研究,逐漸形成一個體系[12]。
結(jié)合熱軋鋼帶表面缺陷識別研究現(xiàn)狀和深度學(xué)習(xí)技術(shù),對熱扎鋼帶表面缺陷識別主要做如下工作:
(1)對熱軋鋼帶缺陷圖像預(yù)處理,增強特征的對比度。
(2)改進(jìn)AlexNet網(wǎng)絡(luò),搭建遷移學(xué)習(xí)模型并進(jìn)行實驗,并對實驗結(jié)果對比分析。
卷及神經(jīng)網(wǎng)絡(luò)可以堆疊大量的卷積結(jié)構(gòu),通過卷積運算對圖像提取邊緣信和紋理信息,實現(xiàn)對圖像進(jìn)行分類、定位、檢測。卷積神經(jīng)網(wǎng)絡(luò)組成:輸入層、卷積層、池化層、全連接層、輸出層。其中最經(jīng)典的分類網(wǎng)絡(luò):AlexNet,VGG19,ResNet。
選擇此網(wǎng)絡(luò)的原因:熱軋鋼帶數(shù)據(jù)集規(guī)模小,AlexNet 網(wǎng)絡(luò)產(chǎn)生較少的學(xué)習(xí)參數(shù),使網(wǎng)絡(luò)易于學(xué)習(xí),不需要使用更深層的網(wǎng)絡(luò)。對AlexNet網(wǎng)絡(luò)進(jìn)行改進(jìn),文中簡稱Ada-AlexNet。首先引入VGG 的思想,將大的卷積核分解成兩個小的卷積核串聯(lián),例如:5×5 的卷積核分解為兩個2 個(3×3)的小卷積核,有效減少參數(shù)計算量,增大感受野;其次,增加(1×1)的卷積核,可以對神經(jīng)網(wǎng)絡(luò)進(jìn)行跨層組織特征,有效的融合各層特征,并且計算量低,每一個(1×1)卷積就可以進(jìn)行一次Relu非線性計算,增加網(wǎng)絡(luò)的非線性表達(dá)能力。Ada-AlexNet 網(wǎng)絡(luò)共8層:5 層卷積層,3 層全連接層。輸入網(wǎng)絡(luò)中的數(shù)據(jù)batch=32 結(jié)構(gòu),如表1所示。

表1 改進(jìn)的AlexNet網(wǎng)絡(luò)結(jié)構(gòu)Tab.1 Improved AlexNet Network
卷積神經(jīng)網(wǎng)絡(luò)相對于其他網(wǎng)絡(luò),可以對輸入圖片學(xué)習(xí)紋理特征、邊緣特征,這些特征的學(xué)習(xí)主要是通過卷積核參數(shù)不斷的動態(tài)優(yōu)化,使學(xué)習(xí)的參數(shù)不斷接近最優(yōu)解。
2.3.1 卷積運算
通過卷積運算,熱軋鋼帶數(shù)字矩陣與卷積核相乘,可以很好的提取熱軋鋼帶的表面缺陷特征以及紋理特征。如下公式:

式中:x(p)和h(p)—卷積的變量;p—積分的變量;t—使函數(shù)h(p)移位的變量;*—卷積運算符。
2.3.2 非線性處理
不經(jīng)過非線性映射的模型仍然是線性的,如式(2)~式(4),模型表達(dá)能力并沒有隨著網(wǎng)絡(luò)深度增加而增加。因此為了增加模型在熱軋鋼帶表面缺陷的擬合能力,通常將前向傳播的結(jié)果傳遞激活函數(shù)進(jìn)行非線性映射,使得模型泛化能力增強。

式中:Wi—第i層權(quán)重;xi—輸入數(shù)據(jù);b—偏置值;W1—第1隱藏層權(quán)重。
常用的激活函數(shù):Relu、tanh、sigmoid、PReLu 等。其中使用最多的是Relu激活函數(shù),如圖1所示,公式:

圖1 Relu激活函數(shù)Fig.1 Relu Activation Function

式中:x—激活函數(shù)的輸入值,即:前向傳播的數(shù)值。
Relu激活函數(shù)具有以下優(yōu)點:
(1)解決了Gradient Vanishing問題;
(2)計算效率高,只需要判別是否是正數(shù);
(3)較高的收斂速度,在正區(qū)間內(nèi)任意階可導(dǎo),因此不會出現(xiàn)梯度消失的現(xiàn)象。
2.3.3 池化處理
卷積后提取的參數(shù)規(guī)模通常很大。例如,卷積核大小是(5×5×16),輸入熱軋鋼帶圖片(224×224×1),則卷積核參數(shù)個數(shù):5×5×224×224×16+16=20070416,隨著卷積核增大,這個參數(shù)規(guī)模很大,因此使用池化層對數(shù)據(jù)進(jìn)行降采樣,減少計算量,并且保持?jǐn)?shù)據(jù)的局部特征不變性。池化方式通常有最大池化、平均池化、隨機池化等方式,其中最大池化使用頻率最高。各類型池化函數(shù),如圖2所示。

圖2 常見池化函數(shù)Fig.2 Common Pooling Functions
熱軋鋼帶經(jīng)過特征提取之后,需要優(yōu)化泛化性能的優(yōu)劣,通常對損失函數(shù)進(jìn)行優(yōu)化。常用隨機梯度下降(Stochastic Gradi?ent Descent,SGD)作為損失函數(shù)的優(yōu)化函數(shù),使得損失函數(shù)達(dá)到全局最小。實驗使用損失函數(shù)是信息熵?fù)p失函數(shù),公式:

式中:p(x)—真實類別概率;
q(x)—預(yù)測類別概率。
交叉熵刻畫兩個概率分布之間的距離。對損失函數(shù)的優(yōu)化選擇隨機梯度下降算法。SGD優(yōu)化權(quán)重公式以及流程:

式中:w—初始權(quán)重;
α—學(xué)習(xí)率;
?w f(x,y)—輸入值x與真實值y的損失函數(shù)的梯度。
流程:
(1)每個權(quán)重初始化為1;
(2)循環(huán)執(zhí)行N次;
(3)計算整個數(shù)據(jù)集的梯度;
(4)使用αx,更新權(quán)重;
(5)返回權(quán)重。
2009年有兩位學(xué)者率先提出遷移學(xué)習(xí)的概念,并且將遷移學(xué)習(xí)進(jìn)行分類,分為4 類。遷移學(xué)習(xí)是一種新興的機器學(xué)習(xí)方法,數(shù)據(jù)集包含源域(Source Domain)DT和目標(biāo)域(Target Do?main)DT,定義如下:

式中:x源域的目標(biāo)域—特征空間,p(x)—樣本x的邊際概率值。
任務(wù)含有源域任務(wù)(Source Task)T 和目標(biāo)域任務(wù)(Target Task)DT。實際應(yīng)用中,DS≠DT,TS≠TS,遷移學(xué)習(xí)把在不同域和任務(wù)的模型,遷移到目標(biāo)任務(wù)中。遷移學(xué)習(xí)分類:樣本遷移、參數(shù)遷移、特征遷移、關(guān)系遷移。遷移學(xué)習(xí)的優(yōu)勢[13]:(1)忽略傳統(tǒng)機器學(xué)習(xí)的前提假設(shè):訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)滿足同分布;(2)類別不平衡,小數(shù)據(jù)集也可以訓(xùn)練出高精度樣本;(3)泛化性能好,對于任何其他任務(wù)無需從零開始訓(xùn)練。結(jié)合遷移學(xué)習(xí)和Faster RCNN應(yīng)用在夜間航拍車輛識別,實現(xiàn)了對日間和夜間的航拍車輛識別,取得比較好的識別效果[14]。使用Inception-v3 網(wǎng)絡(luò)[15]在ImageNet 數(shù)據(jù)集學(xué)習(xí)的參數(shù)作為參數(shù)遷移,并且目標(biāo)域使用的數(shù)據(jù)集在ImageNet 中缺少相似的樣本,因此選擇使用參數(shù)的遷移學(xué)習(xí)。
Inception-v3 的參數(shù)是源于在ImageNet預(yù)訓(xùn)練好分類網(wǎng)絡(luò),使用預(yù)訓(xùn)練參數(shù)初始化網(wǎng)絡(luò)權(quán)重和偏置參數(shù),應(yīng)用時凍結(jié)網(wǎng)絡(luò)結(jié)構(gòu),修改分類層的數(shù)量,實驗中分類的類別數(shù)目為6類,所以應(yīng)用到模型中需要剔除最后一層全連接層,亦稱瓶頸層。算法流程,如圖3所示。

圖3 Inception-v3流程圖Fig.3 Inception-v3 Flow Chart
實驗環(huán)境:操作系統(tǒng)是Ubuntu 18.04,顯卡GTX1080Ti,運行內(nèi)存32G,運行IDE是Anaconda3.6版本,在TensorFlow1.10版本。使用Tensorboard 進(jìn)行可視化Loss 曲線以及Acc 曲線等內(nèi)容,方便對不同模型的性能對比。
實驗中使用的數(shù)據(jù)來源東北大學(xué)熱軋鋼帶缺陷數(shù)據(jù)庫,整理五類熱軋鋼帶缺陷數(shù)據(jù)集,每種缺陷數(shù)據(jù)集約200張,每張圖像是大小為(200×200×1)的灰度圖像。為了減少因為數(shù)據(jù)集少,訓(xùn)練參數(shù)巨大而引起過擬合現(xiàn)象,使用隨機旋轉(zhuǎn)、隨機截取等方式擴充數(shù)據(jù)集,每種類別的數(shù)據(jù)集擴充到540 張,并且把尺寸re?shape 為(224×224×1),符合Inception 以及AlexNet 的輸入格式。對原始圖片進(jìn)行增強處理。熱軋鋼帶原圖以及增強后的圖片,如圖4、圖5 所示。通過數(shù)據(jù)歸一化處理,數(shù)據(jù)圖像的特征明顯增強,去除大部分與識別任務(wù)無關(guān)的噪聲,使數(shù)據(jù)特征與背景的差異增大,易于識別。實驗中樣本數(shù)據(jù)分布,如表2所示。

表2 樣例分布Tab.2 Samples of Distribution

圖4 數(shù)據(jù)原圖Fig.4 Origin Pictures of Data

圖5 數(shù)據(jù)增強圖Fig.5 Enhanced Picture of Defect Data
使用Inception-v3 模型得到的精度和損失函數(shù),如圖6 所示。在訓(xùn)練次數(shù)達(dá)到1000次,曲線逐漸達(dá)到穩(wěn)定狀態(tài),此時訓(xùn)練精度和測試精度均處于平穩(wěn)的狀態(tài),并沒有過擬合。每個batch的精度在1附近小幅震蕩,loss在0.06附近小幅震蕩。權(quán)重分布在迭代1000次左右,通過圖6可以分析出:經(jīng)過3000次迭代,約500次的時候,訓(xùn)練精度達(dá)到約99.9%,損失函數(shù)降低至約0.1%,并且在整個訓(xùn)練過程,訓(xùn)練精度與損失函數(shù)沒有太大的波動,較為平穩(wěn)的收斂。通過圖7可以發(fā)現(xiàn),Ada-AlexNet網(wǎng)絡(luò)訓(xùn)練的到的精度在整個訓(xùn)練過程中都會有約3%的波動,損失函數(shù)波動更大。由此可知,通過小數(shù)據(jù)集訓(xùn)練得到的神經(jīng)網(wǎng)絡(luò)模型很難有穩(wěn)定識別率,波動較大。

圖6 Inception-v3精度與損失函數(shù)Fig.6 Accuracy and Loss Function of Inception-v3

圖7 Ada-AlexNet的精度與損失函數(shù)Fig.7 Accuracy and Loss Function of Ada-AlexNet
不同模型的測試速度,如表3所示。在單張圖片測試的速度上,使用遷移學(xué)習(xí)的模型測試速度遠(yuǎn)遠(yuǎn)大于其他模型的測試速度。

表3 不同模型的測試速度Tab.3 Test Speed of Different Models
深層CNN網(wǎng)絡(luò)要獲得高精度的分類模型,需要大量的數(shù)據(jù)和訓(xùn)練輪次,如果數(shù)據(jù)不足,很容易引起過擬合現(xiàn)象,即:在訓(xùn)練集精度提升,但是在測試集訓(xùn)練精度降低。通過遷移學(xué)習(xí)獲得的初始權(quán)重使得可以使網(wǎng)絡(luò)消耗較少的內(nèi)存空間和訓(xùn)練時間,達(dá)到較高的精度。通過實驗對比,Ada-AlexNet網(wǎng)絡(luò)最終也能達(dá)到較高的精度,但是需要的時間和計算空間都要大于Inception-v3。并且訓(xùn)練過程中l(wèi)oss-function的收斂速度慢且跳動較大,導(dǎo)致每個batch 的精度跳動較大。Ada-AlexNet 的權(quán)重采用隨機初始化,stddev=0.1的均勻分布,網(wǎng)絡(luò)在使用SGD 進(jìn)行迭代的過程中消耗大量的計算時間;每個batch數(shù)據(jù)集的差異大,參數(shù)更新過于頻繁,導(dǎo)致Ada-AlexNet的損失函數(shù)波動大于Inception-v3。
使用遷移學(xué)習(xí)的方法進(jìn)行熱軋鋼帶表面缺陷的分類模型,通過在ImageNet 數(shù)據(jù)集上訓(xùn)練好的參數(shù)遷移到熱軋鋼帶表面缺陷分上獲得99.8%的準(zhǔn)確率,改進(jìn)的AlexNet網(wǎng)絡(luò)也可以達(dá)到較好的識別率96.6%。結(jié)合遷移學(xué)習(xí)的算法在熱軋鋼帶表面缺陷識別的任務(wù)中,實驗效果優(yōu)于傳統(tǒng)機器學(xué)習(xí)算法。對比AlexNet 網(wǎng)絡(luò)以及遷移學(xué)習(xí)模型發(fā)現(xiàn),AlexNet 網(wǎng)絡(luò)在實驗過程中準(zhǔn)確率變化較大,并且收斂的速度較慢,出現(xiàn)以上差距的主要原因是AlexNet 網(wǎng)絡(luò)的權(quán)重和偏置采用隨機初始化,導(dǎo)致在進(jìn)行梯度下降優(yōu)化的時候波動較大,收斂速度慢;遷移學(xué)習(xí)模型的準(zhǔn)確率較高并且比較穩(wěn)定,采用參數(shù)初始化可以有效的避免梯度下降帶來的抖動問題。實驗結(jié)果表明,使用相同的學(xué)習(xí)率以及數(shù)據(jù)集的條件下,使用在大數(shù)據(jù)集訓(xùn)練的網(wǎng)絡(luò)參數(shù)和結(jié)構(gòu)遷移到熱軋鋼帶表面缺陷識別,可以使模型獲得更好的精度以及更快的識別速度。