胡金良, 李俊峰
(浙江理工大學(xué) 機械與自動控制學(xué)院, 杭州 310018)
由于導(dǎo)光板(LGP) 具有超薄、高透明度、高反射、導(dǎo)光均勻且明亮等優(yōu)點, 被普遍應(yīng)用于手機、平板、電腦等液晶屏中. 導(dǎo)光板作為液晶屏背光模組中關(guān)鍵組成部分, 其質(zhì)量的好壞直接影響畫面的品質(zhì)效果, 然而導(dǎo)光板在生產(chǎn)過程中, 由于原材料、溫度等因素影響, 無法避免出現(xiàn)點傷、白污、線劃傷、暗影等缺陷, 會導(dǎo)致顯示異常并影響用戶使用. 因此, 對其進行缺陷檢測非常必要. 傳統(tǒng)機器視覺缺陷檢測[1]方法主要有支持向量機(SVM)、鄰近算法(KNN)、決策樹等[2], 這些傳統(tǒng)機器視覺方法需要人工提取特征, 對于每類產(chǎn)品甚至每種缺陷都需要編寫專門的檢測算法.而且, 容易受到光照、灰塵等環(huán)境因素干擾, 穩(wěn)定性、魯棒性比較差.
近年來, 深度學(xué)習(xí)算法廣泛應(yīng)用于圖像目標(biāo)檢測.能在復(fù)雜背景下進行檢測的算法主要分為基于端到端的一階段目標(biāo)檢測算法和基于區(qū)域的二階段目標(biāo)檢測算法.
二階段目標(biāo)檢測算法先生成RPN (region proposal network)候選框, 然后預(yù)測目標(biāo)的位置和類別信息, 速度較慢, 不能保證檢測的實時性. 主要代表有R-CNN系列, 在此基礎(chǔ)上發(fā)展了Fast R-CNN[3], Faster R-CNN[4].
一階段目標(biāo)檢測算法沒有生成候選框, 直接利用卷積神經(jīng)網(wǎng)絡(luò)提取特征, 預(yù)測目標(biāo)的位置和類別信息.具有更高的檢測速度, 但是對小目標(biāo)檢測精度相對較低. 具有代表性的算法主要有SSD、YOLO 系列等.
深度學(xué)習(xí)方法具有強大的特征提取和自我學(xué)習(xí)能力, 可提取深層次更具有代表性的特征信息, 泛化能力更強, 檢測準(zhǔn)確率更高. 近年來, 深度學(xué)習(xí)廣泛應(yīng)用于鋼材、芯片、液晶屏、等各種缺陷檢測領(lǐng)域[5–8], 取得不錯的效果. 如柳鋒等人[9]結(jié)合深度學(xué)習(xí)語義分割方法進行導(dǎo)光板表面缺陷檢測, 該方法在簡單的背景下可進行較好的檢出缺陷, 但面對復(fù)雜的背景容易產(chǎn)生誤檢; Deitsch 等人[10]等通過改進VGG19 網(wǎng)絡(luò)結(jié)構(gòu)檢測太陽能面板缺陷, 采用直連結(jié)構(gòu)使得網(wǎng)絡(luò)參數(shù)量較大, 算法效率較低; He 等人[11]針對鋼材表面缺陷, 提出多級融合網(wǎng)絡(luò)融合多層次特征, 獲得更豐富的缺陷細(xì)節(jié)特征, 進一步提升檢測準(zhǔn)確率; Ding 等人[12]提出了一種針對PCB 表面缺陷檢測網(wǎng)絡(luò), 通過使用k均值聚類出合理錨框, 并將多尺度金字塔網(wǎng)絡(luò)引入到Fater RCNN 中, 增強來自底層特征信息的融合, 提升網(wǎng)絡(luò)對微小缺陷的檢測精度; 李維剛等人[13]提出的基于改進的YOLOv3 實現(xiàn)帶鋼表面缺陷檢測, 主要改進在于加權(quán)K-means 聚類算法, 優(yōu)化先驗框參數(shù). 融合淺層和深層的特征, 生成更大尺度檢測圖層, 在NEU-DET 數(shù)據(jù)集上平均準(zhǔn)確率達到80%; He 等人[14]提出了混合全卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于木材缺陷檢測, 分類準(zhǔn)確率達到了99.14%; 張廣世等人[15]在YOLOv3 網(wǎng)絡(luò)中引入Dense-Net 網(wǎng)絡(luò)用于檢測齒輪缺陷, 提高模型提取特征能力,擴展預(yù)測尺度, 提升對小尺寸目標(biāo)檢測能力; 沈曉海等人[16]基于Faster RCNN 設(shè)計了一種多任務(wù)深度學(xué)習(xí)模型檢測鋁材表面缺陷, 包括區(qū)域分割、缺陷的分類和目標(biāo)檢測, 有效提升檢測效率.
單邊側(cè)入式大尺寸導(dǎo)光板網(wǎng)點分散不均, 背景紋理復(fù)雜; 而且, 其缺陷種類繁多, 大小和形態(tài)各異, 主要有白點、黑點、線劃傷、白污、壓傷、暗影等數(shù)十種.根據(jù)對大尺寸導(dǎo)光板生產(chǎn)廠家調(diào)研和導(dǎo)光板缺陷的統(tǒng)計分析, 白點、輕微線劃傷等小目標(biāo)缺陷占比較非常高, 特別是白點缺陷; 而且, 白點缺陷與灰塵成像特點非常接近, 僅僅是灰度與大小上存在細(xì)微差別. 基于此,本文在一階段目標(biāo)檢測算法YOLOv3[17]的基礎(chǔ)上, 提出一種基于改進YOLOv3 算法來實現(xiàn)導(dǎo)光板缺陷的分類與定位檢測, 同時滿足高檢測精度和速度要求.
首先, 由于缺陷目標(biāo)的尺度較小, 并且YOLOv3 網(wǎng)絡(luò)中淺層特征層的感受野較小, 通過在淺層特征層引入改進多分支RFB 模塊, 提升網(wǎng)絡(luò)的感受野從而提升對小目標(biāo)缺陷檢測精度; 其次, 為了縮減模型大小和計算量, 提升網(wǎng)絡(luò)模型的運行速度, 利用深度可分離卷積替換標(biāo)準(zhǔn)卷積; 進而, 針對導(dǎo)光板缺陷成像特點, 為了進一步提高模型微小缺陷的檢測能力, 使用改進Kmeans 算法聚類出合適的錨框, 并對中小尺度的錨框進行線性縮放, 使之更加貼近目標(biāo), 以便獲得更高的準(zhǔn)確率. 實驗結(jié)果表明, 本文提出的大尺寸導(dǎo)光板缺陷檢測算法平均精度達到98.92%.
YOLOv3 是基于端到端的目標(biāo)檢測網(wǎng)絡(luò), 使用Darknet-53 作為主干網(wǎng)絡(luò)進行特征提取, 并借鑒殘差網(wǎng)絡(luò)ResNet (residual network)[18]的思想, 在主干網(wǎng)絡(luò)中融入了1、2、8、8、4 個殘差模塊. 殘差結(jié)構(gòu)可以緩解深層網(wǎng)絡(luò)訓(xùn)練時候的梯度消失問題, 并且加強收斂效果; 而且, 通過上采樣充分融合小特征圖的深層語義信息和大特征圖的目標(biāo)位置信息, 并進行兩次特征融合, 可以獲得更好的細(xì)粒度特征及更有意義的語義信息. 但是, 在YOLOv3 網(wǎng)絡(luò)中, 常規(guī)標(biāo)準(zhǔn)卷積會帶來比較大的參數(shù)量, 淺層特征層的感受野較小. 基于此, 本文提出了一種改進的YOLOv3 網(wǎng)絡(luò), 結(jié)構(gòu)如圖1 所示.為了擴大網(wǎng)絡(luò)模型的感受視野, 分別在預(yù)測層Y2 和預(yù)測層Y3 前引入改進后的RFB 感受野增強模塊.RFB 模塊多分支結(jié)構(gòu)模擬人眼視覺感受野構(gòu)造, 以不同尺度的卷積核增強提取特征, 并以不同膨脹率的空洞卷積提升感受野; 為了縮減模型大小和計算量, 利用深度可分離卷積替換普通卷積; 為了進一步提高模型微小缺陷的檢測能力, 使用改進K-means 算法聚類出合適的錨框, 并分別對中小尺度的錨框進行不同線性縮放.
圖1 改進后的YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)圖
人眼視覺系統(tǒng)是由多個不同的感受野組成,RFB[19]模塊的多分支結(jié)構(gòu)模擬人眼視覺感受野, 能使網(wǎng)絡(luò)模型感受視野擴大. RFB 模塊網(wǎng)絡(luò)是由多種不同的不同尺寸卷積核的卷積層構(gòu)成, 每個分支采用不同尺度的卷積核和不同膨脹率的空洞卷積組合, 使得各個分支的感受野以不同的程度擴大. 首先, 通過1×1 的卷積降維; 其次, 分別進行1×1、3×3 和5×5 卷積, 模擬不同尺度的感受野, 不同大小的卷積核對應(yīng)連接(串聯(lián))對應(yīng)膨脹率為1、3、5 的空洞卷積; 最后, 把各個分支的輸出進行Concat 拼接, 融合不同特征, 提升網(wǎng)絡(luò)模型對不同尺寸缺陷目標(biāo)特征表達能力. 此外, 在RFB 模塊中還采用了ResNet 中的shortcut 連接方式,可以有效減輕梯度消失, 使梯度能夠很好地傳遞到淺層, 降低網(wǎng)絡(luò)的復(fù)雜度, 提升網(wǎng)絡(luò)的訓(xùn)練效果. 在保證網(wǎng)絡(luò)感受野的前提下, 為了進一步減少計算量, 本文采用兩個級聯(lián)的3×3 卷積代替5×5 卷積. 改進后的RFB 模塊如圖2 所示. 為了提升小目標(biāo)的檢測準(zhǔn)確率,可以在特征層和預(yù)測層之間引入RFB 模塊[20]. 本文對在網(wǎng)絡(luò)不同位置引入改進的RFB 模塊進行了大量的實驗. 實驗結(jié)果表明, 分別在預(yù)測層Y2 和預(yù)測層Y3 前引入改進后的RFB 模塊增強特征提取, 檢測準(zhǔn)確率最高, 可以進一步提升網(wǎng)絡(luò)的檢測性能.
圖2 改進后的RFB 模塊結(jié)構(gòu)圖
MobileNet[21–23]系列網(wǎng)絡(luò)作為輕量級卷積神經(jīng)網(wǎng)絡(luò)的典型代表, 普遍應(yīng)用于目標(biāo)檢測和圖像分割、分類等任務(wù). 其核心是引入深度可分離卷積, 深度可分離卷積是將神經(jīng)網(wǎng)絡(luò)中卷積層的標(biāo)準(zhǔn)卷積分離為1 個深度卷積(depthwise convolution, DW)和1 個1×1 的點卷積(pointwise convolution, PW)[24]. 深度卷積作用于每一個通道, 每個濾波器只提取單一通道的特征, 然后1×1 的點卷積用來組合深度卷積后輸出的特征圖. 在卷積操作中, 標(biāo)準(zhǔn)卷積的卷積操作是直接進行濾波組合輸出特征圖; 而深度可分離卷積則分為兩步, 一步用來濾波, 一步用來組合. 如圖3 所示, 這類分解過程可以顯著地縮減模型大小和計算量.
圖3 標(biāo)準(zhǔn)卷積和深度可分離卷積
在計算量上, 假設(shè)輸入圖片的尺寸為DP×DP, 卷積核的尺寸為DK×DK, 分別用M、N表示輸入和輸出的通道數(shù), 若使用標(biāo)準(zhǔn)卷積, 計算量為式(1)所示:
若使用深度可分離卷積完成相同的任務(wù), 計算量為式(2)所示:
由此可見, 使用深度可分離卷積相比于標(biāo)準(zhǔn)卷積可縮減大幅度計算量. 如果使用大小為3×3 的卷積核,與標(biāo)準(zhǔn)卷積相比, 深度可分離卷積最多可以將計算量減少至1/9, 而精度只有極少量的下降. 基于此, 為了縮減本文網(wǎng)絡(luò)模型大小和計算量, 利用深度可分離卷積替換普通卷積.
在YOLOv3 算法中引入了錨框(anchor box)的思想, 這些設(shè)定錨框尺寸是基于COCO 數(shù)據(jù)集, 主要面向行人、汽車和日常物品等多尺度目標(biāo), 物種尺寸多樣,與導(dǎo)光板缺陷目標(biāo)尺寸差異過大. 因此, 利用K-means算法聚類出與導(dǎo)光板缺陷目標(biāo)相符的錨框尺寸. 錨框的尺寸與真實框的尺寸越靠近, 則檢測效果越好. Kmeans 聚類算法是一種經(jīng)典的無監(jiān)督機器學(xué)習(xí)算法, 是使用距離作為數(shù)據(jù)對象相似度的評價指標(biāo), 當(dāng)兩個對象相距越近, 則表明相似度越高.
K-means 具體算法流程如算法1.
算法1. K-means 聚類算法(1) 在數(shù)據(jù)中任意選擇k 個樣本, 當(dāng)作初始聚類中心.x d S x(2) 然后計算余下各點到聚類中心的距離, 把各個樣本劃分到距離最近的聚類中心 所在集合.yn(3) 重新計算每個集合的聚類中心 .(4) 回到步驟(2)按照順序繼續(xù)執(zhí)行, 直到所有的集合的中心點的變化趨向穩(wěn)定, 則聚類結(jié)束.
在YOLOv3 中, K-means 算法中使用IOU來衡量標(biāo)注框的距離關(guān)系, 如式(4)所示:
其中,IOU是真實框x和與距離最近的聚類中心錨框Sx的交并比. 當(dāng)IOU的值越大, 則表明距離d越小.
聚類中心的計算公式如式(5)所示:
其中,yn是第n個聚類的中心, |Cn|是第n個集合中樣本的數(shù)量,xi是Cn集合中的第i個對象.
最終利用K-means 聚類得到9 組錨框, 按照大小分為3 組, 如表1 所示. 在13×13 特征圖上使用最大的一組, 在52×52 特征圖上使用最小的一組.
表1 錨框尺寸分配
在YOLOv3 中通過特征融合輸出3 個尺度特征圖進行預(yù)測, 在小尺度的特征圖檢測較大目標(biāo), 在中等尺度的特征圖檢測中大小目標(biāo), 在大尺度的特征圖檢測較小目標(biāo). 在導(dǎo)光板缺陷數(shù)據(jù)集小目標(biāo)缺陷占比較高,并且尺度大小是均勻集中, 沒有體現(xiàn)YOLOv3 網(wǎng)絡(luò)多尺度預(yù)測的優(yōu)勢[25]. 根據(jù)大尺寸導(dǎo)光板的缺陷成像特點, 對聚類得到的中小尺度的6 組錨框進行線性縮放,中心思想是使得錨框靠近真實框, 以錨框中心點對寬高以一定比例放大和縮小, 如圖4 所示, 使得小的錨框尺寸更小, 大的錨框尺寸更大. 線性縮放公式如式(6)和(7)所示:
圖4 錨框線性縮放原理圖
其中,xi、yi是原始錨框的寬和高數(shù)值,是錨框進行線性縮放后的寬和高數(shù)值. α的值為0.9, β的值為1.2.
導(dǎo)光板缺陷檢測實驗設(shè)備如圖5 所示, 整個設(shè)備主要由圖像采集部分、傳送部分和圖像處理部分構(gòu)成.工業(yè)相機采集導(dǎo)光板圖片, 傳送到工控機判斷處理, 然后控制機械手臂將導(dǎo)光板放在OK 區(qū)域或NG 區(qū)域.
圖5 實驗設(shè)備圖
實驗環(huán)境配置如表2 所示, 模型的訓(xùn)練與實驗均在以下環(huán)境下進行, 在訓(xùn)練中采用隨機梯度下降(SGD)優(yōu)化算法. 設(shè)置輸入圖片大小為416×416, 初始學(xué)習(xí)率和最終學(xué)習(xí)率為0.01 和0.0001, 動量大小為0.9, 權(quán)重衰減系數(shù)為0.0005, 批量大小16. 在網(wǎng)絡(luò)訓(xùn)練過程中,訓(xùn)練集和驗證集的loss 的變化曲線如圖6 所示.
圖6 loss 變化曲線
表2 實驗環(huán)境配置
數(shù)據(jù)集來自于導(dǎo)光板生產(chǎn)現(xiàn)場, 通過16K 線掃相機采集, 數(shù)據(jù)集總共有2236 張. 使用LabelImg 軟件按照PASCAL VOC 數(shù)據(jù)集格式對每張圖片上缺陷進行標(biāo)注, 并且命名缺陷類別名, 生成XML 格式文件, 包含圖像路徑、框的坐標(biāo)信息、缺陷的類別名等信息, 然后寫程序轉(zhuǎn)換成txt 文件數(shù)據(jù)集. 訓(xùn)練集、驗證集和測試集的劃分為7:1:2.
在本文中, 均使用準(zhǔn)確率P(precision)、召回率R(recall)、AP(average precision)、mAP(mean average precision)、F1 值作為評價指標(biāo).TP為檢測正確, 即正確檢測出來的目標(biāo)個數(shù).FP為檢測錯誤, 即錯誤檢測出來的目標(biāo)個數(shù),FN為沒有被檢測出的目標(biāo)個數(shù). 準(zhǔn)確率和召回率的計算公式如式(12) 和式(13) 所示:
以P為橫坐標(biāo),R為縱坐標(biāo)軸組成的曲線被稱為P-R曲線, 并對其積分得到曲線下的面積即為AP. 多個類別AP的平均值就是mAP, 其值越大則表明該算法檢測準(zhǔn)確率越高. 計算公式如式(14)和式(15)所示:
F1 值作為用來評價分類模型的一種指標(biāo), 兼顧精確率和召回率, 作為算法的綜合性能評估指標(biāo). 計算公式如式(16)所示:
3.4.1 在不同位置引入RFB 模塊的檢測效果
在YOLOv3 網(wǎng)絡(luò)中引入RFB 模塊的作用主要是擴大網(wǎng)絡(luò)的感受野, 增強網(wǎng)絡(luò)的特征提取能力, 表3 為分別在不同位置引入RFB 模塊的檢測結(jié)果對比. 可見,在預(yù)測層Y1 之前加入RFB 模塊mAP沒有較大提高;在預(yù)測層Y2 之前加入RFB 模塊,mAP提高了2.29%,F1 值提高了5.04%; 在預(yù)測層Y3 之前加入RFB 模塊點缺陷準(zhǔn)確率提高了4.98%, 線缺陷準(zhǔn)確率提高了1.28%,mAP有較大提升, 提高了6.38%,F1 值提高了7.15%.; 在預(yù)測層Y2 和預(yù)測層Y3 之前均加入RFB 模塊,mAP提升最大, 提高了7.28%, 點缺陷、線缺陷準(zhǔn)確率分別提高了6.01%、8.83%,F1 值提高了8.35%.在預(yù)測層Y2 和預(yù)測層Y3 前引入RFB 模塊可有效提升網(wǎng)絡(luò)模型的性能.
表3 不同位置引入RFB 模塊結(jié)果對比 (%)
3.4.2 改進K-means 算法的檢測結(jié)果對比
改進K-means 算法的YOLOv3 和YOLOv3 檢測結(jié)果對比如表4 所示. 可見, 點缺陷、線缺陷準(zhǔn)確率分別提升了4.62%、2.87%,mAP提高了5.09%,F1 值提高了5.83%. 因此, 改進K-means 算法可以有效提升YOLOv3 網(wǎng)絡(luò)缺陷檢測的準(zhǔn)確率, 對小目標(biāo)點缺陷準(zhǔn)確率提升效果明顯.
表4 改進K-means 算法前后檢測結(jié)果對比 (%)
3.4.3 不同算法對比
以上兩處改進均能提升準(zhǔn)確率, 并且這些改進是互補的, 將其結(jié)合能夠進一步提升算法的性能. 為了進一步檢驗本文算法的性能, 將本文算法與Faster RCNN、SSD、YOLOv3 等檢測算法進行了比較. 以準(zhǔn)確率、平均準(zhǔn)確率、F1 值作為算法評估指標(biāo), 結(jié)果對比如表5 所示.
表5 不同算法結(jié)果對比
由表5 可知, 改進后的YOLOv3 算法和YOLOv3相比, 在點缺陷準(zhǔn)確率、線缺陷準(zhǔn)確率和F1 分別提升了7.71%、11.24%和10.76%,mAP提升了8.55%, 縮減了模型大小, 檢測速度可達71.6 fps, 與SSD、Faster R-CNN 算法相比, 本文算法具有更高的檢測精度, 實時性強. 由此說明, 在網(wǎng)絡(luò)中引入RFB 模塊、引入深度可分離卷積, 改進K-means 算法結(jié)合能夠有效提升檢測效果. 不同算法預(yù)測結(jié)果對比如圖7 所示.
圖7 不同算法預(yù)測結(jié)果對比
導(dǎo)光板質(zhì)量檢測是導(dǎo)光板生產(chǎn)過程中必要的環(huán)節(jié),針對大尺寸導(dǎo)光板缺陷, 本文提出了一種基于改進YOLOv3 的檢測算法. 在YOLOv3 網(wǎng)絡(luò)引入多分支RFB 模塊, 提升特征提取能力; 改進K-means 算法, 對中小尺度的錨框進行線性縮放, 加快了模型收斂同時提高了平均精度. 實驗結(jié)果表明, 與原YOLOv3 相比,改進后的算法在平均準(zhǔn)確率及和F1 值分別提升了8.55% 和10.76%, 檢測速度達到71.6 fps, 算法的mAP高達98.92%. 可滿足工業(yè)生產(chǎn)缺陷檢測要求, 有一定的應(yīng)用前景.