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