張振洲,熊 凌,李克波,陳 剛,但斌斌,吳懷宇
(1.武漢科技大學(xué)冶金自動化與檢測技術(shù)教育部工程研究中心,湖北 武漢,430081;2.武漢科技大學(xué)機器人與智能系統(tǒng)研究院,湖北 武漢,430081;3.武漢科技大學(xué)冶金裝備及其控制教育部重點實驗室,湖北 武漢,430081)
熱鍍鋅鋼板在汽車、家電、建筑、航空航天裝備等行業(yè)具有廣泛的應(yīng)用。在冷軋熱鍍鋅生產(chǎn)過程中,鋅液與其他雜質(zhì)元素及空氣結(jié)合形成的鋅渣漂浮在鋅鍋表面,影響鍍鋅板成品質(zhì)量,因此需要定時清除[1]。鋅渣可分為薄渣和厚渣兩類,薄渣是剛生成的鋅渣,可防止鋅液被空氣進一步氧化,而厚渣則是待撈鋅渣,為了不影響熱鍍鋅鋼板的外觀質(zhì)量,必須及時撈出。已有的撈渣機器人[2-3]由于缺少相應(yīng)的傳感器,撈渣缺乏自主性,導(dǎo)致?lián)圃实拖?。采用機器視覺方式實現(xiàn)鋅渣圖像的自動分類,使撈渣機器人有選擇性地?fù)破鸷裨?,這對于提高撈渣效率和實現(xiàn)冷軋生產(chǎn)線的智能化具有重要意義。
鋅渣圖像的特征提取是鋅渣識別的關(guān)鍵,目前常采用基于紋理特征的圖像分類方法,如局部二值特征[4]、灰度共生矩陣[5]、小波變換[6]等,雖然這些精心設(shè)計的人工特征在相應(yīng)領(lǐng)域取得了不錯的應(yīng)用效果,但是其通用性不強。
近些年來,深度學(xué)習(xí)技術(shù)在圖像識別領(lǐng)域發(fā)展十分迅猛,先后出現(xiàn)了AlexNet[7]、VGGNet[8]、GoogLeNet[9]等深度卷積神經(jīng)網(wǎng)絡(luò)。由于深度學(xué)習(xí)使用大量數(shù)據(jù)訓(xùn)練模型,所以在適應(yīng)性方面表現(xiàn)更好,在工業(yè)圖像識別中也得到了廣泛應(yīng)用。Han等[10]采用基于ROI選擇的MobileNet進行電力設(shè)備識別,較大幅度提升了識別精度。Ricardo等[11]引入VGG16進行工業(yè)顆粒圖像分類,比采用偏最小二乘判別分析、隨機森林、簡單CNN等方法的分類器有更高的準(zhǔn)確性。王理順等[12]提出一種基于改進卷積神經(jīng)網(wǎng)絡(luò)的織物缺陷在線檢測算法,其平均測試時間比GoogLeNet方法減少了67%。樊丁等[13]改進了網(wǎng)絡(luò)激活函數(shù),并結(jié)合使用超像素分割算法進行焊縫探傷圖像中的缺陷識別,達到了97.8%的準(zhǔn)確率。
目前深度學(xué)習(xí)技術(shù)在冷軋生產(chǎn)線上的應(yīng)用主要集中在帶鋼的缺陷檢測[14-15],在熱鍍鋅生產(chǎn)撈渣領(lǐng)域中的應(yīng)用還未見報道。為了提升撈渣機器人的智能化水平,本文結(jié)合鋅渣圖像特點,提出一種基于改進GoogLeNet的鋅渣識別算法。鑒于經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)模型參數(shù)過多,并且容易發(fā)生過擬合,本文算法在GoogLeNet的基礎(chǔ)上做出改進,降低網(wǎng)絡(luò)參數(shù)的規(guī)模,以加快算法運行速度。最后,在采自實際生產(chǎn)現(xiàn)場的鋅渣圖像數(shù)據(jù)集上,將本文算法與一些現(xiàn)有的機器學(xué)習(xí)和深度學(xué)習(xí)分類方法進行對比分析,來驗證其在鋅渣識別領(lǐng)域中的優(yōu)勢。
在冷軋熱鍍鋅生產(chǎn)線上,工業(yè)相機以俯視角度拍攝鋅渣照片。為了全面識別出鋅鍋內(nèi)的厚渣,并突出厚渣的局部特征,要將鋅渣圖片進行分塊處理,分塊數(shù)量參考撈渣勺與鋅鍋尺寸的比例關(guān)系,每塊對應(yīng)于撈渣勺大小。將每張原始圖片分割為15×7共105張小圖,標(biāo)記好每張分割圖片在原圖中的相對位置,以便于厚渣的識別定位。
本文所提出的鋅渣識別算法流程如圖1所示,首先在人工標(biāo)注的鋅渣數(shù)據(jù)集上進行CNN模型的訓(xùn)練,然后將工業(yè)相機拍攝的鋅渣圖像進行分塊及編號,將每張小塊鋅渣圖像輸入到訓(xùn)練好的模型進行檢測,輸出分類結(jié)果,依據(jù)編號對厚渣圖片進行定位。由于其他步驟較簡單,故本文主要工作是對鋅渣識別網(wǎng)絡(luò)進行優(yōu)化。
圖1 鋅渣識別算法流程
鋅渣不具備固定形狀及清晰的邊緣,同時它是一種金屬物質(zhì),具有光澤性,在不同光線下經(jīng)常呈現(xiàn)不同的顏色。傳統(tǒng)分類網(wǎng)絡(luò)主要針對固定形狀物體,不太適合于鋅渣分類,本文采用GoogLeNet Inception模型的多尺度卷積結(jié)構(gòu),來增強網(wǎng)絡(luò)對鋅渣的識別效果。
GoogLeNet是一個22層的深層網(wǎng)絡(luò),采用獨特的Inception結(jié)構(gòu)來減少網(wǎng)絡(luò)參數(shù)。一般的CNN只采用增大網(wǎng)絡(luò)的方式來提升網(wǎng)絡(luò)性能,在訓(xùn)練時有過擬合的風(fēng)險并且增加了計算成本,而Inception結(jié)構(gòu)很好地解決了這兩個問題,它保留了網(wǎng)絡(luò)結(jié)構(gòu)的稀疏性以及密集矩陣的高計算性能,在增加網(wǎng)絡(luò)的寬度和深度的同時減少了參數(shù)。圖2為Inception結(jié)構(gòu),由4個主要成分組成:1×1卷積、3×3卷積、5×5卷積和3×3池化,其主要思路是通過多種不同大小的卷積核提取圖像多尺度的信息,然后進行融合,從而具有更好的圖像表征能力。在實際中,直接使用3×3和5×5卷積層會導(dǎo)致計算量過大,要在前面串聯(lián)1×1的卷積層進行優(yōu)化,同時可增加網(wǎng)絡(luò)的非線性。
圖2 Inception結(jié)構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)中,每個卷積層的數(shù)據(jù)都是以三維形式存在的,可以把它看作是多個二維圖片的疊加,其中每一張稱為一個特征圖。傳統(tǒng)網(wǎng)絡(luò)中全連接層將最后一個卷積運算得到的全體特征圖拉伸成一個長向量,然后逐層降低向量維度,最后進行softmax分類,導(dǎo)致全連接層參數(shù)太多,特別是從特征圖拉伸而來的第1個長向量與下一層的連接參數(shù),這使得網(wǎng)絡(luò)訓(xùn)練速度變慢。全局池化的解決方法是將最后一層卷積得到的每個特征圖看作一個整體,對每個特征圖求均值或最大值,每一個特征圖都有一個輸出,這樣得到的特征向量的維數(shù)即是上一層特征圖的數(shù)量。這不光增強了特征映射和類別之間的對應(yīng)關(guān)系,且整個流程不需要優(yōu)化參數(shù),可以大大減少網(wǎng)絡(luò)參數(shù),并且可避免過擬合,全局池化原理如圖3所示。
圖3 全局池化方法
王澤霞等[16]采用全局最大池化方法來識別化纖絲餅的缺陷,其原因是絲餅缺陷相對較小,全局最大池化輸出的是整個特征圖的最大值,提取了最顯著的特征,更適合于絲餅缺陷檢測。然而,厚鋅渣與薄鋅渣兩類圖像的特征明顯,使用全局平均池化可以弱化鋅渣圖像局部干擾,并且能考慮整張圖片的信息,故本文算法采用全局平均池化來代替全連接層。
(1)
(2)
本文在原始GoogLeNet的基礎(chǔ)上,結(jié)合鋅渣圖片特點以及工業(yè)實時性需求,設(shè)計了一個適用于鋅渣分類的網(wǎng)絡(luò)結(jié)構(gòu)。由于鋅渣圖像樣本數(shù)較少,且原始GoogLeNet的層數(shù)較深,容易發(fā)生梯度消失和梯度爆炸的問題。Szegedy等[9]為了解決這個問題,在網(wǎng)絡(luò)訓(xùn)練時加入兩個輔助分類器并配以權(quán)重來獲得最后的損失值并用于反向傳播。為了滿足工業(yè)實時性需求,本文進一步簡化GoogLeNet結(jié)構(gòu),改進后的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。首先重復(fù)使用卷積和Inception結(jié)構(gòu)來提取鋅渣特征,在最后一個卷積層輸出的特征圖上采用全局池化進行特征映射及降維,這相較于傳統(tǒng)的全連接層能夠顯著減少網(wǎng)絡(luò)參數(shù);然后加入dropout防止網(wǎng)絡(luò)過擬合;最后由softmax輸出樣本的正負(fù)分類。除池化層外,網(wǎng)絡(luò)在所有卷積層之后加入批歸一化層(batch normalization,BN)用于加速網(wǎng)絡(luò)收斂。改進后的網(wǎng)絡(luò)共包含2個普通卷積層、3個Inception層、1個全局平均池化層和1個softmax層,網(wǎng)絡(luò)各層參數(shù)如表1所示,其中“#3×3降維”和“#5×5 降維”表示Inception層中在3×3和5×5卷積之前使用的1×1卷積層中濾波器的數(shù)量,“池化降維”表示Inception層中池化層之后1×1卷積層中濾波器的數(shù)量。
圖4 本文模型的網(wǎng)絡(luò)結(jié)構(gòu)
表1 改進GoogLeNet的各層參數(shù)
實驗在win10專業(yè)版操作系統(tǒng)上完成,在Tensorflow與Keras深度學(xué)習(xí)開源框架中進行網(wǎng)絡(luò)搭建和調(diào)試,選取Python作為編程語言。CPU為AMD Ryzen 5 3600,6核12線程,內(nèi)存為16 GB,GPU為Nvidia RTX 2060s。
使用批量訓(xùn)練的方法將訓(xùn)練集分為多個批次,通過實驗最終選擇batchsize=32,此時網(wǎng)絡(luò)收斂較快,且能達到最高精度。采用隨機梯度下降優(yōu)化算法,學(xué)習(xí)率設(shè)置為1×10-4,動量參數(shù)統(tǒng)一為0.9,迭代次數(shù)為100,同時在訓(xùn)練時加入學(xué)習(xí)率衰減策略,10次迭代后測試集準(zhǔn)確率不上升則將學(xué)習(xí)率衰減一半,此方法使模型在訓(xùn)練后期更易獲得最優(yōu)解。
文中數(shù)據(jù)來自某鋼鐵公司熱鍍鋅鍋的現(xiàn)場照片。照片在不同時段和不同光照環(huán)境下獲得,基本涵蓋了各種鋅渣分布情況。原始圖片尺寸為1920像素×1080像素,首先剔除背景干擾,然后將每張原圖分塊為小圖,并將小圖的尺寸統(tǒng)一縮放為224像素×224像素。
厚渣和薄渣樣本有較明顯的外觀差異:厚渣因長時間累積,表面有不規(guī)則褶皺,在室內(nèi)環(huán)境下出現(xiàn)漫反射,故而鋅渣亮度較高;薄渣生成時間較短,表面較光滑,紋理不明顯且亮度較低。所有小圖均由經(jīng)驗豐富的撈渣技術(shù)人員標(biāo)注,分為厚渣和薄渣兩類,據(jù)此構(gòu)建鋅渣圖像數(shù)據(jù)庫,用于CNN模型的訓(xùn)練。原始數(shù)據(jù)庫共有圖片2740張,為了提高模型的泛化能力,使用隨機翻轉(zhuǎn)、隨機平移、隨機旋轉(zhuǎn)等方法來進行數(shù)據(jù)增強,擴充后的數(shù)據(jù)庫包含厚渣和薄渣圖片各3250張。使用Python腳本語言將厚渣和薄渣圖片各按照4∶1的比例隨機劃分為訓(xùn)練集和測試集。圖5為數(shù)據(jù)集中的部分鋅渣樣本。
(a)厚渣樣本
采用識別準(zhǔn)確率(accuracy)來評價模型的分類性能,它代表了正確預(yù)測樣本占總預(yù)測樣本的比值:
(3)
式中:TP(true positive)表示真正例;TN(true negative)表示真負(fù)例;FP(false positive)表示假正例;FN(false negative)表示假負(fù)例。
將本文模型和GoogLeNet模型分別在增強后的鋅渣樣本集上進行訓(xùn)練,訓(xùn)練過程中測試集的識別準(zhǔn)確率及訓(xùn)練集損失值變化如圖6和圖7所示。從圖中可知,由于加入了批歸一化的原因,本文模型在訓(xùn)練前期損失值下降更快,在20次迭代后已接近其最小值,整個訓(xùn)練過程中本文模型的識別準(zhǔn)確率曲線波動較小,網(wǎng)絡(luò)收斂速度明顯優(yōu)于GoogLeNet模型,而且本文模型的最終準(zhǔn)確率為99.1%,分類效果優(yōu)于GoogLeNet模型(最終準(zhǔn)確率為97.2%)。
圖6 本文模型與GoogLeNet模型的識別準(zhǔn)確率對比
圖7 本文模型與GoogLeNet模型的訓(xùn)練集損失值對比
為了驗證本文算法所采用的優(yōu)化方法的有效性并獲取最優(yōu)超參數(shù),分別針對BN層、全局池化方法及dropout取值進行了對比試驗。
表2為有、無BN層時的模型識別準(zhǔn)確率對比。結(jié)合圖7和表2可知,在卷積層之后加入BN層,訓(xùn)練集的損失值下降速度較快,同時網(wǎng)絡(luò)的識別準(zhǔn)確率提高了2.7個百分點,說明批歸一化能有效提高網(wǎng)絡(luò)的分類性能。
表2 批歸一化層對識別準(zhǔn)確率的影響
對網(wǎng)絡(luò)最后一層卷積得到的特征圖分別進行全局最大池化、全局平均池化和全連接的操作,表3所示為不同連接方式下的模型識別準(zhǔn)確率,其中全局平均池化方式下準(zhǔn)確率最高,全連接方式下的準(zhǔn)確率最低。因為全局池化操作增加了鋅渣圖片樣本對旋轉(zhuǎn)、平移等空間變化的魯棒性,故較全連接方式具有更高的識別準(zhǔn)確率;而全局平均池化弱化了鋅渣圖像局部干擾,考慮了整張圖片的信息,又比全局最大池化更有利于鋅渣分類。
表3 連接方式對識別準(zhǔn)確率的影響
在神經(jīng)網(wǎng)絡(luò)的構(gòu)建過程中,dropout值即節(jié)點隱藏率一般在0.3~0.7中選取,文獻[9]選擇dropout值為0.4??紤]到識別對象及樣本數(shù)量級的不同,為了得到更好的正則化效果,本文分別對不同的dropout取值進行實驗,結(jié)果如表4所示。由表4可知,在不使用dropout層時,利用較少的數(shù)據(jù)集進行模型訓(xùn)練容易發(fā)生過擬合,故識別準(zhǔn)確率最低;dropout值取為0.5最適合于鋅渣識別,這時模型具有最高的分類準(zhǔn)確率。
表4 dropout值對識別準(zhǔn)確率的影響
為了評估本文算法在鋅渣識別領(lǐng)域的優(yōu)勢,下面將其與一些現(xiàn)有的機器學(xué)習(xí)和深度學(xué)習(xí)分類模型進行對比,包括灰度共生矩陣(gray-level co-occurrence matrix, GLCM)特征[5]、局部二值模式(local binary pattern, LBP)特征[4]、AlexNet[7]、VGGNet[8]、GoogLeNet[9],對比項目包括識別準(zhǔn)確率、參數(shù)內(nèi)存以及測試耗時,結(jié)果如表5所示。
表5 各種算法的實驗結(jié)果對比
表5中前面2種為機器學(xué)習(xí)算法,后面4種為深度學(xué)習(xí)算法。GLCM和LBP特征是兩種經(jīng)典的圖像特征描述子,在圖像分類和目標(biāo)檢測中具有廣泛的應(yīng)用。本文實驗中首先分別采用GLCM和LBP方法提取鋅渣特征,然后使用基于高斯核函數(shù)的SVM分類器進行鋅渣圖像的訓(xùn)練和分類。
由表5數(shù)據(jù)可見,本文算法在識別準(zhǔn)確率上最優(yōu)。同時,深度學(xué)習(xí)算法的分類準(zhǔn)確率普遍高于機器學(xué)習(xí)算法,這是因為傳統(tǒng)機器學(xué)習(xí)算法所提取的特征過于依賴人工設(shè)計,并且特征種類比較單一,而深度學(xué)習(xí)方法通過層層卷積,能夠提取鋅渣圖像的局部紋理特征以及全局性的抽象特征,并且對圖像的旋轉(zhuǎn)和平移具有近似不變性,對不同場景具有更好的適應(yīng)性。在AlexNet、VGGNet、GoogLeNet三種經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)中,GoogLeNet因為加入了Inception結(jié)構(gòu),故而具有最小的參數(shù)內(nèi)存;本文算法進一步縮減網(wǎng)絡(luò)結(jié)構(gòu),并使用全局池化代替全連接層,參數(shù)內(nèi)存不到GoogLeNet的1/5,僅為1.1 MB。另外,網(wǎng)絡(luò)模型訓(xùn)練結(jié)束后,在分塊后的單張小圖和原始圖像上分別進行測試,結(jié)果取平均值。對比可知,本文算法具有最低的耗時,識別單張原始圖像耗時僅為0.36 s,只有GoogLeNet模型的53%,本文算法更能滿足工業(yè)實時性的要求。
本文將卷積神經(jīng)網(wǎng)絡(luò)GoogLeNet應(yīng)用于鋅渣識別,通過對鋅渣圖像樣本的分析,設(shè)計了一種適合鋅渣識別的改進深度學(xué)習(xí)算法,然后在專門制作的鋅渣圖像數(shù)據(jù)集上進行訓(xùn)練,通過多次實驗選取最適合的參數(shù),得到最優(yōu)網(wǎng)絡(luò)模型。在測試集上與現(xiàn)有算法進行對比實驗,結(jié)果表明本文算法的分類準(zhǔn)確率較高,且相較于經(jīng)典深度學(xué)習(xí)算法具有更低的空間復(fù)雜度和時間復(fù)雜度,能夠有效地識別出鋅渣,可為冷軋熱鍍鋅生產(chǎn)線無人化作業(yè)提供幫助,具有較好的應(yīng)用前景。未來工作將考慮進一步擴充鋅渣圖像樣本數(shù)據(jù)集,并開展工業(yè)應(yīng)用研究。