陳城 CHEN Cheng;陳煒峰 CHEN Wei-feng;張世杰 ZHANG Shi-jie
(南京信息工程大學(xué),南京 210000)
隨著以智能手機為代表的智能電子設(shè)備在過往十余年的蓬勃發(fā)展,極大提高了我們生活和工作的方便程度,這和智能設(shè)備功能的完善有著直接關(guān)系,良好的人機交互給用戶帶來舒適的使用體驗[1],也是智能設(shè)備能夠普及的重要因素之一。目前,電子設(shè)備與用戶交互的內(nèi)容主要通過顯示器進(jìn)行可視化展示,顯示器就是設(shè)備與用戶之間交流的橋梁。我國開始研發(fā)與生產(chǎn)液晶玻璃基板起步較晚[2],技術(shù)不夠成熟,現(xiàn)有產(chǎn)線也是基于國外相關(guān)企業(yè)產(chǎn)線模仿,但是關(guān)鍵技術(shù)沒有對我國開放,造成生產(chǎn)出的產(chǎn)品容易出現(xiàn)瑕疵,所以在產(chǎn)品出產(chǎn)線前十分有必要對其進(jìn)行質(zhì)量檢測,對于液晶玻璃基板這類產(chǎn)品最直觀的質(zhì)量檢測方法就是先對表面進(jìn)行觀察,看是否有氣泡、結(jié)石、條紋、裂紋等缺陷特征。目前生產(chǎn)線上產(chǎn)品檢測主要是以人工檢測為主,人工檢測成本高,人在長時間工作下容易造成漏檢誤檢等不良情況,為了進(jìn)一步提高檢測效率與產(chǎn)線的自動化水準(zhǔn),用新一代機器視覺檢測代替人工檢測已經(jīng)成為工業(yè)界的共識[3]。本文主要針對液晶玻璃基板缺陷檢測領(lǐng)域進(jìn)行相關(guān)算法的搭建與改進(jìn),經(jīng)實驗驗證表明,基于深度學(xué)習(xí)的液晶玻璃基板檢測準(zhǔn)確率與效率相較于人工檢測均有可觀的提高,對于企業(yè)降低人力成本提高自動化生產(chǎn)水平的角度來說,具有十分重要的意義。
本文提出了一種基于SSD[4]的液晶玻璃缺陷檢測方法,主要工作內(nèi)容為以下三點:①建立了液晶玻璃常見缺陷的數(shù)據(jù)集;②在SSD 的特征提取主干網(wǎng)絡(luò)中引入了ResNet[5]殘差模塊;③對提取到的特征進(jìn)行了跨通道多尺度融合。
SSD 算法全稱為Single Shot MultiBox Detector,由名可知SSD 是單階段多尺度目標(biāo)檢測算法,單階段目標(biāo)檢測算法不同于兩階段目標(biāo)檢測,如Faster RCNN[6]網(wǎng)絡(luò)需要先用RPN 網(wǎng)絡(luò)生成目標(biāo)建議框再進(jìn)行目標(biāo)概率預(yù)測及邊界框回歸,這種方式一定程度上限制了實時目標(biāo)檢測的需求,而SSD 算法利用在輸入圖像上不同尺度的先驗框和主干網(wǎng)絡(luò)提取到的特征直接完成目標(biāo)預(yù)測。
SSD 算法是一個采用多先驗框分別從不同特征層預(yù)測的單階段目標(biāo)檢測算法。單階段目標(biāo)檢測網(wǎng)絡(luò)如SSD、YOLO[7-9]最顯著的特征是不再使用RPN 結(jié)構(gòu)生成目標(biāo)建議框,雖然放棄使用RPN 結(jié)構(gòu)可能會影響點目標(biāo)檢測的精度,但是檢測速度得到了很大的提升,SSD 算法與Faster RCNN 的不同之處除了RPN 外,SSD 在不同特征層預(yù)測目標(biāo)的思想改善了Faster RCNN 對小目標(biāo)物體檢測效果不好的狀況,通過多層的特征提取網(wǎng)絡(luò)后在最后一個特征層上預(yù)測體現(xiàn)出的細(xì)節(jié)信息較少,而低層特征圖的抽象程度不高細(xì)節(jié)信息丟失較少,所以在低層特征圖上預(yù)測這樣有利于小目標(biāo)的檢測,高層特征圖上抽象程度高用來提取圖像的語義信息及大目標(biāo)檢測。另外SSD 在不同的特征層上使用數(shù)量不同,大小和比例不同的先驗框也符合目標(biāo)檢測的需求。
SSD 網(wǎng)絡(luò)是以VGG 作為特征提取的主干網(wǎng)絡(luò),通過VGG 和5 個額外添加層得到尺寸大小不同的預(yù)測特征圖,這6 個預(yù)測特征圖大小分別為38×38、19×19、10×10、5×5、3×3,接著在這6 個特征圖上生成大小比例不用的先驗框用于框選圖像中可能存在的目標(biāo),絕大多數(shù)的先驗框中其實并不存在檢測的目標(biāo),為了提高目標(biāo)檢測的效率需要對所有的先驗框進(jìn)行非極大值處理,最后網(wǎng)絡(luò)輸出預(yù)測目標(biāo)的類別與定位信息。
先驗框指的就是在特征圖上按照預(yù)一定的尺寸與比例生成的一系列目標(biāo)候選框,如圖1 所示。
圖1 先驗框生成
這些候選框中可能包含了需要被檢測的目標(biāo),在圖1中(b)、(c)所示的特征層上,以每個單元格的中心為中心點生成了4 個不同的先驗框,在SSD 中共設(shè)置了6 個不同的預(yù)測特征層,先驗框生成的尺寸、寬高比和數(shù)量在每個特征層都不一樣,同一個預(yù)測層中每個單元格的先驗框尺寸、寬高比和數(shù)量相同,一般先驗框?qū)捀弑仍O(shè)有{1/2, 1,2}和{1/3,1/2,1,2,3}具體的如表1 所示。
表1 先驗框在不同層分布
在SSD 網(wǎng)絡(luò)訓(xùn)練時,并不是所有生成的8732 個先驗框都參與訓(xùn)練過程,正樣本在SSD 中的選取準(zhǔn)則有兩種,第一種是對圖像中的每一個真實標(biāo)注框匹配IOU 值最大的先驗框,但是僅靠這種方式得到的正樣本數(shù)量有限,為了補充第一種方法匹配到正樣本的數(shù)量,第二種是對任意的先驗框只要和任何一個真實標(biāo)注框的IOU 值大于設(shè)定的閾值,也可以將其算作為正樣本。除正樣本外的所有先驗框都可以作為負(fù)樣本,但是將剩下的先驗框全部當(dāng)成負(fù)樣本參與訓(xùn)練,這會帶來樣本極不平衡的狀況,負(fù)樣本的選取原則是在剩下的先驗框中計算置信度損失,將置信度損失排在前面的先驗框選取為負(fù)樣本,負(fù)樣本的數(shù)量按正樣本的3 倍選取。
在特征提取主干網(wǎng)絡(luò)中隨著卷積層的增加可以有效地表示圖像語義信息,但是直接加深網(wǎng)絡(luò)并不能使得效果很好,還可能帶來網(wǎng)絡(luò)退化現(xiàn)象同時也容易造成小目標(biāo)和細(xì)節(jié)特征的丟失,隨著網(wǎng)絡(luò)的加深更容易帶來梯度消失與梯度爆炸現(xiàn)象,傳統(tǒng)的解決方法通常是通過對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,權(quán)重初始化,以及BN 標(biāo)準(zhǔn)化處理。引入殘差模塊可以很好地解決網(wǎng)絡(luò)退化現(xiàn)象,殘差模塊結(jié)構(gòu)如圖2 所示,(a)圖針對網(wǎng)絡(luò)層數(shù)較少使用的殘差結(jié)構(gòu),(b)圖是對深層網(wǎng)絡(luò)使用的殘差結(jié)構(gòu),殘差模塊將輸入特征分成兩條線路,側(cè)分支采用跳躍連接不改變輸入信息恒等映射至輸出,主分支使用卷積提取特征與側(cè)分支的輸入矩陣直接相加后用ReLu 函數(shù)激活,主分支與側(cè)分支的輸出特征矩陣的高寬及通道數(shù)必須相同,這樣才能將主分支與側(cè)分支的輸出特征矩陣直接相加,(b)圖與(a)圖相比只多了1×1 卷積用來升維或降維,當(dāng)輸入矩陣為256 維使用(a)和(b)殘差模塊時,(b)結(jié)構(gòu)運算量比(a)結(jié)構(gòu)少約17 倍。
圖2 殘差模塊
殘差結(jié)構(gòu)的恒等映射分支在反向傳播中的梯度一直是1,這樣可以把底層的信號傳入深層,也可以把深層的梯度傳回底層,可以有效地防止梯度消失,傳統(tǒng)線性結(jié)構(gòu)很難擬合恒等映射,跳躍連接可以讓模型自行選擇更新,殘差結(jié)構(gòu)彌補了高度非線性造成的不可逆的信息損失。
FPN 結(jié)構(gòu)(Feature Pyramid Networks)增加了高層特征于低層特征之間的融合[10],在融合之后的特征圖上進(jìn)行目標(biāo)預(yù)測。FPN 網(wǎng)絡(luò)結(jié)構(gòu)可以分成三個部分,從底層到頂層,再從頂層到低層以及側(cè)向連接。從底層到頂層是以ResNet 作為主干網(wǎng)絡(luò)通過卷積池化提取不同尺寸的特征圖,自底到頂主要是提取輸入圖像的語義信息,F(xiàn)PN 網(wǎng)絡(luò)的輸入特征{C2、C3、C4、C5}分別為每個殘差卷積塊的輸出特征層。從頂層到低層是通過上采樣線性插值算法將高特征層的尺寸調(diào)整與低特征層一致,通過1×1 卷積后保證相鄰兩層之間的通道數(shù)一致,如此相鄰兩層間的特征矩陣就可以相加融合,這種由底到頂再從頂?shù)降滓约安煌卣鲗娱g的元素融合操作,將高層抽象出的語義信息傳至了低特征層從而增強了低特征層語義表征能力,最后通過3×3,步距為1 的卷積核對每個預(yù)測層融合之后的特征層卷積操作后得到{P2,P3,P4,P5,P6}特征層用于最終檢測,這樣可以降低上采樣時可能帶來的重疊效應(yīng)。雖然這種自頂?shù)降椎腇PN 結(jié)構(gòu)融合了不同層的特征在一定程度上提高了檢測精度,但是這種結(jié)構(gòu)只是把頂層的語義傳入了低層而且傳入的也不夠全面,因為高特征層在下采樣過程中容易丟失小目標(biāo)的特征,所以對于低特征層并沒有傳回所需要的小目標(biāo)的語義信息。為了讓將低特征層的定位信息融入到高層特征,解決定位信息不充分的問題,PANet 對FPN 結(jié)構(gòu)進(jìn)行了補充從P2 到P5 再次使用3×3 卷積,如圖3 所示。
圖3 PANet 結(jié)構(gòu)
由于有缺陷的液晶玻璃在產(chǎn)線生產(chǎn)中并不多見,目前還沒有公開的玻璃數(shù)據(jù)集,所以本課題所用數(shù)據(jù)集圖片是于現(xiàn)場拍攝采集,根據(jù)液晶玻璃常見的表面缺陷特征,將數(shù)據(jù)集分為夾雜、氣泡、錫點、節(jié)瘤、裂痕這5 種常見缺陷類別,將數(shù)據(jù)集按照3∶1 的比例分成訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集,如表2 所示。
表2 訓(xùn)練數(shù)據(jù)集與測試數(shù)據(jù)集
本實驗在windows 操作系統(tǒng)上基于Pytorch1.11.0 深度學(xué)習(xí)框架進(jìn)行,使用的Python 編程語言,使用的操作系統(tǒng) 為windows10,CPU 為Intel Core i7-1165G7 4.7GHz,GPU 為Nvidia P100-16G,本實驗使用的數(shù)據(jù)集為表1 液晶玻璃缺陷數(shù)據(jù)集,包含了常見的5 中缺陷類別共計3950 張圖像,訓(xùn)練數(shù)據(jù)集為3195 張,測試數(shù)據(jù)集755 張,網(wǎng)絡(luò)訓(xùn)練時設(shè)Ir 為0.005,momentum 為0.9,weight_decay為0.0005,batch_size 為4,每進(jìn)行5 個epoch 學(xué)習(xí)率調(diào)整為原來的0.33 倍。
分別使用SSD、Faster RCNN 、YOLOv3 和本文提出的改進(jìn)SSD 的目標(biāo)檢測網(wǎng)絡(luò),基于相同的超參數(shù)設(shè)置在給出的表2 玻璃缺陷數(shù)據(jù)集上訓(xùn)練,并在測試集上測試模型預(yù)測準(zhǔn)確率,各個目標(biāo)檢測網(wǎng)絡(luò)在5 種不同缺陷類別上的測試結(jié)果如表3 所示。
從表3 中可以看出SSD、Faster RCNN、YOLOv3 都存在共同的問題,相對較小對錫點檢缺陷測精度不高,而引入殘差模塊以及跨通道特征融合后的改進(jìn)SSD 網(wǎng)絡(luò)對所有缺陷類別的檢測精度都很高,尤其是對小目標(biāo)檢測,相較于沒有改進(jìn)的SSD 檢測網(wǎng)絡(luò)整體精度提升了15.7%,對錫點的提升更為明顯提升約20%,圖4 為不同網(wǎng)絡(luò)對裂痕的檢測顯示。
表3 不同目標(biāo)檢測網(wǎng)絡(luò)準(zhǔn)確率對比
圖4 裂痕檢測效果
本文提出的改進(jìn)SSD 缺陷檢測算法有效的提升了檢測精度,特別是對不容易發(fā)現(xiàn)的小缺陷檢測精度提升明顯,殘差模塊的引入增加了特征提取網(wǎng)絡(luò)的深度,使得網(wǎng)絡(luò)可以抽象出更深層次的含義,引入PANet 將高特征層的語義信息傳入了低層,將低層定位信息傳入了高特征層,使得在各個預(yù)測特征層都有不錯的檢測效果。