文 峰,陳禹銘
(沈陽理工大學(xué)信 息科學(xué)與工程學(xué)院,沈陽110159)
電子元器件表面的缺陷檢測是深度學(xué)習(xí)應(yīng)用的一個重要組成部分,其精準(zhǔn)度、檢測速度與訓(xùn)練速度會直接影響電子元器件產(chǎn)品的最終品質(zhì)與生產(chǎn)節(jié)奏。人工檢測的方法早已不能滿足電子元器件現(xiàn)代化生產(chǎn)制造的需求。近些年,基于深度學(xué)習(xí)的缺陷檢測已經(jīng)有了廣泛應(yīng)用,如布匹表面缺陷檢測[1]、磁環(huán)表面缺陷檢測[2]、陶瓷磚表面缺陷檢測[3]以及鋼軌表面缺陷檢測[4]等。因此,可以設(shè)計基于深度學(xué)習(xí)的目標(biāo)檢測方法,實現(xiàn)電子元器件表面的缺陷檢測。
目前根據(jù)檢測思路的不同將基于深度學(xué)習(xí)的目標(biāo)檢測網(wǎng)絡(luò)框架分成兩大類:
一類是基于候選區(qū)域的兩階段深度學(xué)習(xí)目標(biāo)檢測算法,主要有SPP-Net[5]、R-CNN[6]、Fast-RCNN、Faster-RCNN[7],及以此為基礎(chǔ)的優(yōu)化算法,其共同特點是先找到圖片中物體的邊界框,再用分類器確定框里的物體類別,并回歸精修邊界框的位置;
另一類是基于回歸方法的端到端單階段深度學(xué)習(xí)目標(biāo)檢測算法,主要有YOLO[8-10]、SSD[11]、FPN、RetinaNet[12-13]、RefineDet[14]、CornerNe等,其中YOLO系列算法在檢測精度與速度方面表現(xiàn)突出,得到了廣泛的應(yīng)用。
在原有YOLOv3算法基礎(chǔ)上,YOLOv4 算法從數(shù)據(jù)的處理方法、主干網(wǎng)絡(luò)結(jié)構(gòu)、網(wǎng)絡(luò)的訓(xùn)練方式、激活函數(shù)優(yōu)化、優(yōu)化損失函數(shù)等方面進行大幅調(diào)整,如自對抗訓(xùn)練、DropBlock正則化、SPP(Spatial Pyramid Pooling,空間金字塔池化)等,使得模型在檢測速度和精度上取得較大提升。
YOLOv4 網(wǎng)絡(luò)架構(gòu)由主干網(wǎng)絡(luò)(backbone)、頸部網(wǎng)絡(luò)(neck)、頭部網(wǎng)絡(luò)(head)三部分組成。主干網(wǎng)絡(luò)的作用是對圖像進行特征提取;頸部網(wǎng)絡(luò)的作用是通過自上而下或自下而上的方式對各層的特征進行融合,如FPN(Feature Pyramid Networks、特征金字塔網(wǎng)絡(luò))、PAN(Path Aggregation Network,路徑聚合網(wǎng)絡(luò))等;頭部網(wǎng)絡(luò)的作用是接收主干網(wǎng)絡(luò)和頸部網(wǎng)絡(luò)提取加工后的特征信息,進行分析計算后輸出預(yù)測的結(jié)果。YOLOv4的網(wǎng)絡(luò)架構(gòu)如圖1所示。
圖1 YOLOv4網(wǎng)絡(luò)架構(gòu)
YOLOv4算法首先通過主干網(wǎng)絡(luò)提取輸入樣本的特征,之后通過頸部網(wǎng)絡(luò)進行特征融合,最后輸入到頭部網(wǎng)絡(luò)中進行檢測。YOLOv4頭部網(wǎng)絡(luò)與YOLOv3頭部網(wǎng)絡(luò)相同,均將輸入圖像劃分成(S,S)的網(wǎng)格,S由最終進入頭部網(wǎng)絡(luò)的特征圖尺寸決定,如(76,76)尺寸的特征圖,S值為76,每個單元格負責(zé)檢測中心點落在該格子內(nèi)的目標(biāo)。為完成總共C個類別目標(biāo)的檢測,YOLOv4頭部網(wǎng)絡(luò)初始設(shè)定每個網(wǎng)格預(yù)測3個邊界框以及邊界框的置信度Conf(Object)[15-16],置信度的計算公式為
Conf(Object)=P(Object)×IOU
(1)
式中:P(Object)表示目標(biāo)落入該候選網(wǎng)格中的概率;IOU(Intersection Over Union)代表真實框與預(yù)測框之間的交并比,公式為
(2)
式中:box(Pred)代表預(yù)測框;box(Truth)代表真實框;area()代表面積。每個預(yù)測框包含五個參數(shù),分別為x、y、w、h、Conf(Object),其中x、y代表預(yù)測框中心與真實框中心的x軸偏移量與y軸偏移量;w、h分別代表預(yù)測框的寬和高[17]。依據(jù)網(wǎng)格的輸出結(jié)果,單個頭部網(wǎng)絡(luò)最終的輸出為S×S×3(5+C)大小的張量。
原YOLOv4模型有3個頭部分支進行目標(biāo)分類與回歸定位,每個頭部分支對應(yīng)3個尺寸的先驗框。為了適應(yīng)多尺度檢測,較小尺寸的頭部分支對應(yīng)較大尺寸的先驗框;反之,較大尺寸的頭部分支對應(yīng)較小尺寸的先驗框。因此,在實際應(yīng)用中可對實際數(shù)據(jù)集進行缺陷尺寸分析,通過去掉不必要的頭部分支來簡化模型并保障檢測精度。
目標(biāo)檢測算法中先驗框機制的引入摒棄了以往的多尺度滑動窗口遍歷環(huán)節(jié),提升了目標(biāo)檢測的速度和精度[18]。YOLOv4算法的損失由坐標(biāo)損失、IOU損失和分類損失三部分構(gòu)成,使用更符合目標(biāo)尺寸的先驗框可以減少IOU損失,從而降低算法整體的損失值,加快模型的收斂,提升模型的檢測效果。
由于數(shù)據(jù)集的不同,COCO數(shù)據(jù)集聚類得到的先驗框尺寸并不適合實際應(yīng)用。需使用聚類分析方法對實際應(yīng)用數(shù)據(jù)集的標(biāo)注框進行分析,獲取與數(shù)據(jù)集中目標(biāo)尺寸及比例相匹配的先驗框尺寸。聚類算法一般使用歐氏距離作為樣本點到聚類中心的距離,但使用歐式距離衡量標(biāo)簽相似性會導(dǎo)致大尺寸標(biāo)簽產(chǎn)生較大的誤差,嚴重影響聚類的結(jié)果,故本文采用聚類中心與標(biāo)簽的交并比IOU作為聚類的相似度參數(shù)。聚類距離計算公式為
d=1-IOU
(3)
聚類的數(shù)量代表了不同尺寸先驗框的數(shù)量,先驗框的數(shù)量能夠確定頭部網(wǎng)絡(luò)的分支數(shù)量,通過選擇適當(dāng)?shù)木垲悢?shù)量,可對頭部分支進行裁剪。此外,根據(jù)聚類中心的尺寸調(diào)整頭部網(wǎng)絡(luò)中先驗框的尺寸,能夠提升模型的收斂速度與檢測效果。
YOLOv4復(fù)雜的網(wǎng)絡(luò)架構(gòu)能夠?qū)Υ蟛糠謹?shù)據(jù)集都有較高的檢測精度,但復(fù)雜的網(wǎng)絡(luò)架構(gòu)也會帶來計算量的增加。網(wǎng)絡(luò)架構(gòu)的調(diào)整主要是在滿足精度要求的基礎(chǔ)上,最大化地削減網(wǎng)絡(luò)的計算量,提升檢測速度與訓(xùn)練速度。因此,考慮訓(xùn)練速度、檢測速度與檢測精度三者的均衡,本文設(shè)計三種逐步簡化的網(wǎng)絡(luò)模型,分別為模型Ⅰ、模型Ⅱ、模型Ⅲ。對于YOLOv4網(wǎng)絡(luò)模型的調(diào)整主要有以下幾個方面。
(1)頭部網(wǎng)絡(luò)調(diào)整
YOLOv4 模型的原有三個分支,分別用來識別圖像中進入網(wǎng)絡(luò)后的大中小三個尺寸的目標(biāo)。通過對元器件缺陷目標(biāo)尺寸進行聚類分析可知,保留針對大目標(biāo)的頭部檢測分支不能提升精度,可將其去除,保留對中等目標(biāo)和小目標(biāo)檢測效果較好的兩個分支來實現(xiàn)頭部網(wǎng)絡(luò)的裁剪。
(2)頸部網(wǎng)絡(luò)調(diào)整
對頸部網(wǎng)絡(luò)中特征融合方式進行調(diào)整,由于目標(biāo)尺寸主要為小目標(biāo),將大尺寸特征圖下采樣后與中等尺寸特征圖進行融合提升的檢測效果有限,故去除頸部網(wǎng)絡(luò)中用于特征融合的PAN結(jié)構(gòu),可進一步減少網(wǎng)絡(luò)的計算量,提升網(wǎng)絡(luò)模型的訓(xùn)練速度與檢測速度。
(3)主干網(wǎng)絡(luò)裁剪
主干網(wǎng)絡(luò)的深度直接影響特征提取速度與網(wǎng)絡(luò)的整體速度。盡管深層的模型非線性表達能力更好,但同時也帶來計算量的增加。若檢測目標(biāo)特征明顯、背景簡單,可通過適當(dāng)減少主干網(wǎng)絡(luò)殘差結(jié)構(gòu)的數(shù)量,降低網(wǎng)絡(luò)模型的復(fù)雜度。
模型Ⅰ在原網(wǎng)絡(luò)結(jié)構(gòu)基礎(chǔ)上去除針對大目標(biāo)的頭部檢測分支,結(jié)構(gòu)如圖2所示。模型Ⅱ在模型Ⅰ的基礎(chǔ)上去除頸部網(wǎng)絡(luò)中用于特征融合的PAN結(jié)構(gòu)與SPP結(jié)構(gòu),同時調(diào)整主干網(wǎng)絡(luò)中殘差結(jié)構(gòu)的數(shù)量,結(jié)構(gòu)如圖3所示。模型Ⅲ在模型Ⅱ的基礎(chǔ)上進一步降低網(wǎng)絡(luò)的深度,去掉輸出尺寸為(19,19)的殘差結(jié)構(gòu),同時對頸部網(wǎng)絡(luò)進行相應(yīng)調(diào)整,去除(19,19)尺寸的特征圖上采樣后與(38,38)尺寸特征圖進行融合的FPN結(jié)構(gòu),其結(jié)構(gòu)如圖4所示。
圖2 模型Ⅰ架構(gòu)圖
圖3 模型Ⅱ架構(gòu)圖
本文訓(xùn)練和測試的數(shù)據(jù)集來源于某廠拍攝的電子元器件圖像。其中測試集圖片數(shù)量為500,訓(xùn)練集數(shù)量為3000。數(shù)據(jù)集中缺陷類別共為4類,分別為A類(邊緣缺失)、B類(內(nèi)角破損)、C類(多余焊錫)、D類(內(nèi)部弧形區(qū)域破損),各類別之間特征明顯。
圖4 模型Ⅲ架構(gòu)圖
對數(shù)據(jù)集進行聚類分析,能夠?qū)δP偷牟眉襞c先驗框尺寸的設(shè)置提供可靠的依據(jù),本實驗采用K-means++算法對數(shù)據(jù)集進行聚類分析。
使用K-means++算法進行聚類后得到平均IOU(目標(biāo)標(biāo)注框與其所在簇的簇心的平均交并比)與聚類中心k的關(guān)系如圖5所示。
圖5 平均IOU與聚類中心k的關(guān)系曲線
由圖5可見,隨著k的逐漸增大,平均IOU也逐漸增大,但曲線斜率逐漸減小,k大于6時,平均IOU基本不變,故本實驗選擇聚類中心個數(shù)為k=6,在此基礎(chǔ)上得到大小分別為(1,16)、(16,6)、(13,12)、(30,17)、(58,12)、(59,33)的先驗框,并依據(jù)尺寸大小分配給目標(biāo)檢測模型中兩個不同的頭部。
工業(yè)生產(chǎn)中由人工提取的訓(xùn)練樣本數(shù)量有限,嚴重影響模型的實際檢測效果。為提高模型的泛化能力,提升模型的檢測效果,使用樣本增強方法對訓(xùn)練樣本進行數(shù)據(jù)擴增。
本文除使用調(diào)整對比度、曝光度、加噪聲干擾等數(shù)據(jù)增強方式外,根據(jù)所使用數(shù)據(jù)集的特點設(shè)計一種樣本增強方式來擴充訓(xùn)練數(shù)據(jù)集,其過程如下。
(1)將樣本標(biāo)記后產(chǎn)生的掩碼圖以二值圖像的形式讀取,然后將樣本原圖與二值圖像形式的掩碼圖的像素值相加,得到背景為黑色的缺陷圖,如圖6所示。
圖6 生成缺陷圖
(2)對缺陷圖進行物理變換,改變?nèi)毕莸奈锢硇螒B(tài)(多次調(diào)整缺陷的縮放倍數(shù)與角度,使用鄰近插值或雙線性插值等方法徹底改變?nèi)毕菸锢硇螒B(tài),形成新的缺陷)。
(3)先將缺陷圖由彩色圖轉(zhuǎn)換為灰度圖,而后設(shè)置閾值將圖像進行二值化,使圖像變?yōu)楹诎變缮男问剑瞥扇毕輬D的蒙版;與蒙版中黑色區(qū)域重疊的像素將被刪除,與蒙版中白色區(qū)域重疊的像素將被保留,蒙版中黑色像素值是0,白色像素值是255;剔除掉背景圖(不含缺陷的正常樣本)中的缺陷所在區(qū)域和缺陷上的空白區(qū)域,形成新的無缺陷背景圖;最后把新的缺陷補到背景圖中合成一個新的樣本。樣本生成過程示例如圖7所示。
在目標(biāo)檢測領(lǐng)域,為準(zhǔn)確評估模型檢測效果,需要計算被檢目標(biāo)的精準(zhǔn)度(precision)、召回率(recall)及均衡平均數(shù)(f1-score)。
precision度量模型預(yù)測的準(zhǔn)確率,其含義是模型預(yù)測出來的正樣本中實際正樣本數(shù)量,其計算式為
(4)
式中:TP是實際為正樣本且被模型判定為正樣本的數(shù)量;FP是實際為負樣本但被模型判定為正樣本的數(shù)量。
recall度量找到所有正樣本的能力,其計算式為
(5)
式中FN是實際為正樣本但被模型判定為負樣本的數(shù)量。
平均精準(zhǔn)度指標(biāo)(Average Precision,AP)綜合了精準(zhǔn)率和召回率的結(jié)果,用于評估模型在單個檢測類別上的表現(xiàn)。mAP(mean Average Precision)為各類別AP的平均值。
f1-score是precision和recall的調(diào)和平均值,其作用是對precision和recall進行整體評價,其計算式為
(6)
totalBFLOPS描述網(wǎng)絡(luò)進行卷積運算時的計算量,通過統(tǒng)計多次卷積的計算量總和得到,表示模型的復(fù)雜度。
本實驗使用計算機 CPU 為 i7-8750H,內(nèi)存為16GB,GPU 為 NVIDIA GeForce GTX2080Ti,在Ubuntu操作系統(tǒng)下對原始 YOLOv4 網(wǎng)絡(luò)和本文調(diào)整的 YOLOv4 網(wǎng)絡(luò)分別進行訓(xùn)練。學(xué)習(xí)率設(shè)置為0.001,batch size為64,衰減系數(shù)設(shè)置為0.0005,迭代10000次。選擇steps模式更新學(xué)習(xí)率,在訓(xùn)練迭代次數(shù)達到8000和9000 次時,將學(xué)習(xí)率分別降低至初始學(xué)習(xí)率的10%和1%。實驗中測試集數(shù)量為500。A、B、C各組實驗中訓(xùn)練集數(shù)量分別為500、1000、3000,數(shù)據(jù)增強后的訓(xùn)練集數(shù)量分別為1000、3000、9000。
本文設(shè)計3組共18個實驗,分別驗證訓(xùn)練集樣本數(shù)量、網(wǎng)絡(luò)輸入尺寸、模型深度等對網(wǎng)絡(luò)整體檢測效果的影響,實驗結(jié)果如表1、表2、表3所示,其中模型名稱“YOLOv4-416o”代表網(wǎng)絡(luò)輸入尺寸為(416,416)且不使用數(shù)據(jù)增強的YOLOv4網(wǎng)絡(luò);模型名稱“YOLOv4-416”代表網(wǎng)絡(luò)輸入尺寸為(416,416)的YOLOv4網(wǎng)絡(luò);模型名稱“YOLOv4-608”代表網(wǎng)絡(luò)輸入尺寸為(608,608)的YOLOv4網(wǎng)絡(luò);模型名稱“模型Ⅰ”、“模型Ⅱ”、“模型Ⅲ”代表網(wǎng)絡(luò)輸入尺寸為(608,608)的改進YOLOv4網(wǎng)絡(luò)。
表1 A組實驗結(jié)果統(tǒng)計表
表2 B組實驗結(jié)果統(tǒng)計表
表3 C組實驗結(jié)果統(tǒng)計表
對比A、B、C三組實驗中的YOLOv4-416o可知,隨著訓(xùn)練集數(shù)量不斷增多,mAP逐步提升,證實相同實驗條件下訓(xùn)練樣本數(shù)量越多,檢測效果越好。
對比各組實驗中YOLOv4-416o與YOLOv4-416的結(jié)果可見,采用樣本增強方法后,mAP有一定的提升,說明樣本增強方法能夠提高訓(xùn)練的模型對缺陷形態(tài)的適應(yīng)性,進而提升模型對未知缺陷的檢測精度。
對比各組實驗中YOLOv4-416與YOLOv4-608的結(jié)果發(fā)現(xiàn),采用相同的數(shù)據(jù)集進行訓(xùn)練時,將網(wǎng)絡(luò)的輸入尺寸調(diào)整到(608,608)時,mAP與recall都有一定的提升,但totalBFLOPS也上漲67.694;可見提高網(wǎng)絡(luò)的輸入尺寸對網(wǎng)絡(luò)檢測性能有一定的改善,原因是網(wǎng)絡(luò)輸入尺寸的提高影響網(wǎng)絡(luò)最后輸出的特征圖的尺寸,如416×416的訓(xùn)練網(wǎng)絡(luò),輸出的最大特征圖尺寸是52×52,而608×608的訓(xùn)練網(wǎng)絡(luò),輸出的最大特征圖尺寸是76×76;在目標(biāo)檢測過程中由于小目標(biāo)本身含有的像素點較少,在卷積過程中容易造成信息的丟失,而尺寸比較大的特征圖相對于小尺寸特征圖能夠更好地保留小目標(biāo)的特征信息,故雖然尺寸的增加會帶來計算量的增加,但特征圖尺寸越大對小目標(biāo)的檢測效果越好。
對比各組實驗中的YOLOv4-608、模型Ⅰ、模型Ⅱ、模型Ⅲ的結(jié)果發(fā)現(xiàn),隨著模型的簡化,計算量大幅降低,而mAP僅有少量的損失;針對中小尺寸的目標(biāo)檢測可以通過裁剪頭部分支達到簡化模型的目的,當(dāng)檢測目標(biāo)具有特征明顯、背景簡單的特點時,并不需要十分復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)就能達到良好的檢測效果;recall與f1-score并沒有顯著的變化,說明本文提出的模型調(diào)整方法對電子元器件表面缺陷具有較好的檢測效果。檢測實例效果如圖8所示。
圖8 各類缺陷檢測圖
實驗過程中,在保證每個模型訓(xùn)練時batch size為64且迭代次數(shù)為10000的情況下,統(tǒng)計每個模型訓(xùn)練所消耗的平均時間,結(jié)果如表4所示。
表4 模型訓(xùn)練時間統(tǒng)計表
由表4可見,模型Ⅱ與模型Ⅲ相比于其他模型訓(xùn)練所消耗的平均時間節(jié)省60%以上,極大縮減模型訓(xùn)練所需要的時間成本。
根據(jù)電子元器件數(shù)據(jù)集,提出基于改進YOLOv4的目標(biāo)檢測網(wǎng)絡(luò)模型。根據(jù)實驗數(shù)據(jù)集的聚類分析結(jié)果,將原YOLOv4算法中3個頭部分支裁剪為2個,縮減了網(wǎng)絡(luò)的模型參數(shù);通過裁剪主干網(wǎng)絡(luò)中的殘差結(jié)構(gòu),降低了網(wǎng)絡(luò)的深度,提升了網(wǎng)絡(luò)模型訓(xùn)練速度和檢測速度;通過提高網(wǎng)絡(luò)模型訓(xùn)練與檢測時的網(wǎng)絡(luò)輸入尺寸提升了網(wǎng)絡(luò)模型對小目標(biāo)的檢測能力;通過設(shè)計樣本增強方法提升了模型的泛化能力,進而提升了模型的實際檢測效果。
實驗結(jié)果表明,使用本文提出的基于改進YOLOv4的電子元器件表面缺陷檢測方法,能夠滿足工業(yè)生產(chǎn)中對模型檢測精度、模型訓(xùn)練速度和模型檢測速度的需求。