李俊杰, 周 驊, 唐綱浩
(貴州大學 大數(shù)據(jù)與信息工程學院, 貴陽 550025)
鉭電容是一種體積小、電容量大、使用壽命長、耐受性強的優(yōu)異電容器,在軍事通訊、航天、工業(yè)控制等領域中都有著不可替代的重要作用[1]。 在鉭電容的生產(chǎn)過程中,會出現(xiàn)表面具有污點、劃痕、凹痕、擦痕等缺陷的殘次品,一般通過人工檢測篩選出合格產(chǎn)品。 但人工檢測代價較高,且容易發(fā)生誤檢,因此研發(fā)一種高效鉭電容表面缺陷檢測方法是十分必要的。
近年來,深度學習技術已成為研究熱點,并在工業(yè)自動檢測方面取得了可觀進展。 在目標檢測領域,學者們提出了多種多樣深度學習目標檢測算法,其效果普遍優(yōu)于傳統(tǒng)的需要對圖像特征進行手工提取的目標檢測方法[2]。 深度學習目標檢測算法按照不同的設計思想主要可分為兩大類,即:Twostage 系列算法和One-stage 系列算法。 其中,Twostage 系列算法在生成候選區(qū)域后,再將生成的一系列候選區(qū)域送入卷積神經(jīng)網(wǎng)絡進行預測與識別,代表 性 的 算 法 有 R - CNN ( Regions with CNN features)[3-5]系列算法等,這一系列算法的準確率和定位精度相對較高,但檢測速度較慢,無法實現(xiàn)實時檢測。 One-stage 系列算法能夠端到端地通過輸入圖像推理得出圖中所包含目標的位置與類別信息,主要有YOLO(you only look once)[6-9]系列算法、SSD(single shot multibox detector)[10]、RetinaNet[11]等。 One-stage 系列算法在性能精度上和Two-stage系列算法相比要略為遜色一些,但檢測速度更快,可以滿足實時檢測的要求。
基于深度學習的表面缺陷檢測方法有助于提高工業(yè)產(chǎn)品缺陷檢測的準確性,現(xiàn)已廣泛應用于表面缺陷檢測[12]。 戚銀城等學者[13]在Faster R-CNN 網(wǎng)絡上嵌入雙注意力機制,實現(xiàn)航拍輸電線路螺栓的缺陷檢測。 王宸等學者[14]將YOLOv3 應用于輪轂焊縫缺陷的智能化檢測,通過優(yōu)化激活函數(shù)等方法改進網(wǎng)絡,檢測精度高于傳統(tǒng)機器視覺檢測方法。 李鑫等學者[15]對YOLOv5 網(wǎng)絡中的卷積模塊進行優(yōu)化,提高了鋼材表面缺陷檢測的檢測精度與速度。 劉群坡等學者[16]從多尺度特征融合的角度改良單次多框檢測器(SSD)算法,對微精密玻璃封裝電連接器的缺陷進行檢測。
為了滿足實際生產(chǎn)環(huán)境中鉭電容表面缺陷檢測的要求,本文在YOLOv3 算法的基礎上,對模型進行改進,增強YOLOv3 的檢測能力,從而實現(xiàn)了對鉭電容表面缺陷的有效檢測。
YOLOv3 主要包含2 部分,分別為:特征提取網(wǎng)絡DarkNet-53 與多尺度預測網(wǎng)絡(Feature Pyramid Network,F(xiàn)PN)。 研究可知,特征提取網(wǎng)絡DarkNet-53 實際為去除最后一層全連接層的其余部分(詳見圖1(a)),由大量卷積結構與殘差塊堆疊而成。 卷積結構由普通卷積層、BN(Batch Normalization)層、LeakyReLU 層 級 聯(lián) 而 成(詳 見 圖 1 (c) 中 的Convolutional),用來解決網(wǎng)絡的梯度爆炸與梯度消失問題,并能夠加速網(wǎng)絡收斂。 殘差塊包含1×1 和3×3 的2 個卷積結構,通過先降維再升維的方式輕化模型,殘差塊的首尾兩端通過殘差結構的跳躍連接方式進行連接(詳見圖1(d)中的Residual),改善隨著網(wǎng)絡層數(shù)不斷加深帶來的梯度彌散問題。 普通卷積層穿插于卷積塊之間,實現(xiàn)特征圖尺寸的變化,相比于使用池化層,減少了特征信息的丟失。 多尺度預測網(wǎng)絡FPN 部分,選取經(jīng)過8 倍、16 倍下采樣后的特征圖,分別與對應的由上采樣后所得相同大小的特征圖進行特征融合,再經(jīng)過一系列卷積層的計算完成對20×20、40×40、80×80 三個不同尺度的特征層上大、中、小目標的檢測。 YOLOv3 網(wǎng)絡結構所涉及的部分網(wǎng)絡結構參見圖1。
圖1 YOLOv3 網(wǎng)絡的部分結構Fig. 1 Partial structure of YOLOv3 network
改 進 YOLOv3 中 的 SPP ( Spatial Pyramid Pooling)模塊借鑒于SPPnet[17]中的SPP 結構,有4條分支,見圖1(b)。 第一個分支直接由輸入接到輸出,第2、3、4 個分支分別為池化核為5×5、9×9、13×13 的最大池化結構,步距均為1,意味著池化前進行padding 填充,在池化后得到的特征圖尺寸大小和深度不變。 在DarkNet-53 的輸出與第一個預測特征層前加入SPP 結構,通過上一級輸入與5、9、13 三個最大池化下采樣,實現(xiàn)了不同尺度的特征融合,顯著增加了感受野,并且?guī)缀醪粫档途W(wǎng)絡運行速度。
YOLOv3-SPP 網(wǎng)絡中的損失函數(shù)L 由置信度損失Lconf、分類損失Lcla、定位損失Lloc三部分構成,損失函數(shù)可用如下公式來描述:
其中,λ1、λ2、λ3為平衡系 數(shù)。 置信度損 失Lconf、 分類損失lcla均由二值交叉熵損失(Binary Cross Entropy)計算得出,以及Lloc、Confidence、LIoU的系列計算公式具體如下:
其中,oi∈[0,1],為預測框與真實框的IoU值;為預測的置信度;N為正負樣本總個數(shù);Npos為正樣本個數(shù);Oij∈{0,1},表示第i個預測框中是否存在第j類目標;C^ij為預測目標概率。
交并比(Intersection-over-Union,IoU) 是衡量預測框與真實框重合度的評價指標,其值為目標框與真實框交集與并集的比值,如圖2 所示。IoU值可由如下公式來求得:
圖2 IoU 計算Fig. 2 IoU calculation
在置信度誤差計算中,見前文式(5),IoU的大小直接決定了預測框與真實框的相似度情況,對損失函數(shù)的計算有著重要影響。 置信度損失與定位損失的計算均依賴于IoU,但是使用IoU時對于預測框和真實框不相交、2 個邊框的真實重疊情況等問題,無法有效做出判斷,直接用IoU計算損失有一定問題:
(1)當預測框和真實框交集為空時,IoU值簡單地等于0,無法反映出兩者的偏差大小。
(2) 對于面積不變的一組真實框與預測框,改變預測框的尺寸與位置,當真實框與預測框的交集大小相同時,其IoU值恒定,即無論預測框與真實框的位置關系如何、尺寸比例如何,損失都不變,無法對預測框與真實框的重合中心點位置、尺寸差異做出有效反饋。 如圖3 所示。
圖3 IoU 的計算缺陷Fig. 3 Calculation flaws of IoU
為了解決這一問題,隨之衍生出多種基于IoU的 損 失 計 算 方 式, 如 文 獻[18] 中 的GIoU(Generalized-IoU)、DIoU(Distance-IoU)以及CIoU(Complete-IoU)。 其中,GIoU通過預測框與真實框的最小外接矩形面積來反映預測框與真實框的遠近。DIoU采用真實框和預測框的中心點距離與兩者最小外接矩形對角線長度作為衡量標準,兼顧了預測框與真實框的遠近與重合中心點位置兩種因素。 與DIoU相比,CIoU進一步考慮了預測框與真實框的長寬比因素對損失計算的影響,加入了長寬比懲罰因子,CIoU的計算公式如式(3):
其中,b、bgt分別表示預測框、真實框的中心點坐標;ρ2表示兩點間的歐氏距離;av表示預測框與真實框的長寬比因子。 相比于GIoU、DIoU,CIoU對于預測框與真實框的差異問題解決得更全面、效果更好,所以本文使用CIoU。
在不同的數(shù)據(jù)集上,GIoU、DIoU、CIoU的預測結果可能因數(shù)據(jù)集的不同而有所差異,因此,對GIoU、DIoU,CIoU在本文使用的電容數(shù)據(jù)集上的運行效果進行驗證,驗證結果表明使用CIoU在訓練的收斂速度及最終結果兩方面效果更佳。
Mosaic 數(shù)據(jù)增強方法是在一個與圖片大小相同的矩形中,隨機選取一點作為拼接點,形成4 個不同的小區(qū)域,4 個區(qū)域內分別填充隨機4 張圖片上對應區(qū)域的圖像信息,形成一張融合后的圖像,接著通過隨機縮放、隨機裁減等方式進行數(shù)據(jù)增強。Mosaic 數(shù)據(jù)增強方法通過4 張圖像的部分融合,豐富了小目標和檢測物體的背景,增加了數(shù)據(jù)的多樣性,并且在進行計算時,一次會計算4 張圖像的數(shù)據(jù),相當于變相增加了batch_size。 Mosaic 數(shù)據(jù)增強實現(xiàn)過程如圖4 所示。
圖4 Mosaic 數(shù)據(jù)增強Fig. 4 Mosaic data enhancement
YOLOv3 存在預設的3 組先驗框,分別決定了在3 個預測特征層上預測框的大小,直接影響著預測結果的好壞。 貼合實際情況的先驗框,在訓練中能夠使模型更快地收斂,定位也更加精確。 研究時,根據(jù)ImageNet 數(shù)據(jù)集設計得到了YOLOv3 中的先驗框,但和本文所使用的電容數(shù)據(jù)集卻并不通用。因此,為了得出更加適用的先驗框,使用K-means聚類算法重新計算電容數(shù)據(jù)集的先驗框。
K-means 算法通過距離來反映數(shù)據(jù)間的相似性,兩者距離越近則越相似,以此劃分出不同的類。先驗框與數(shù)據(jù)集中真實框的相似程度與兩者的IoU息息相關,但兩者越相似,IoU值越大,為了達到距離越近、數(shù)據(jù)間的相似度越高的效果,使用1 -IoU作為“距離”,得到的先驗框大小見表1。
表1 先驗框尺寸Tab. 1 Prior box size
在特征提取網(wǎng)絡中,輸入的圖像信息經(jīng)過多層卷積計算,形成了多種不同分辨率的特征圖,這也導致了不同深度出現(xiàn)了語義差異。 高層特征圖中具有強大的語義信息,可以提高識別能力,但特征圖的分辨率降低。
層與層之間信息的傳播在深度學習網(wǎng)絡中至關重要,語義信息豐富的高層特征圖分辨率較低,識別能力必然受限。 YOLOv3 使用特征金字塔網(wǎng)絡[19](Feature Pyramid Network, FPN)來融合不同層次的特征信息,將低分辨率、強語義特征與高分辨率、弱語義特征通過從上至下的路徑以及橫向連接進行融合,使得各個尺度上的語義信息都得到了增強。 如圖5 所示。
圖5 特征金字塔網(wǎng)絡Fig. 5 Feature Pyramid Network
特征金字塔網(wǎng)絡采用自上而下的路徑進行特征融合,實現(xiàn)了對各個層級語義學習的豐富,但是在這一過程中定位信息并未得到增強。 針對這一點,使用PANet(Path Aggregation Network)[20]結構對檢測器及不同主干通過自下而上的路徑進行特征融合,增強定位信息。 采用自上而下與自下而上的路徑增強方式,在FPN 結構后添加PANet 結構,通過融合低層特征中包含的豐富定位信息,實現(xiàn)特征增強。具體來說,通過自下而上的路徑以及橫向連接,縮短較低層特征和最頂層特征之間的路徑,實現(xiàn)定位信息的傳遞,使整個網(wǎng)絡的層次結構更加合理。 通過這2 種連接方式,F(xiàn)PN 層由上至下傳達語義特征,PANet 結構由下至上傳達定位特征,完成了不同檢測層的特征融合,大大增強了模型的目標檢測能力。改進的特征融合網(wǎng)絡結構如圖6 所示。 改進后整體網(wǎng)絡結構如圖7 所示。
圖6 改進的特征融合網(wǎng)絡Fig. 6 Improved feature fusion network
圖7 改進算法的網(wǎng)絡結構Fig. 7 Improved algorithm network structure
本文算法在Ubuntu16.04 操作系統(tǒng)上使用pytorch 深度學習框架實現(xiàn),實驗使用的硬件設備為:Intel?Xeon(R) CPU E5-2650v2@ 2.60 GHz 32 G CPU,NVIDIA GeForce GTX TITAN X GPU 12 G顯存。 初始學習率為0.01,采用warmup 策略對學習率進行動態(tài)調整,batch_size為8, 訓練300 個Epoch。
在鉭電容的生產(chǎn)過程中,會出現(xiàn)表面具有污點、劃痕、凹痕、擦痕等缺陷的殘次品,這些缺陷出現(xiàn)在鉭電容的各個表面,因此,若想完成鉭電容的表面缺陷檢測,必須了解其6 個表面的狀況。 本文實驗中使用的鉭電容由某鉭電容生產(chǎn)商提供,通過電子照相機對鉭電容6 個表面進行拍攝,得到1 164 張鉭電容照片,并用標記軟件LabelImg 對圖像中鉭電容的污點、劃痕、凹痕、表皮脫落四種缺陷進行標記,再按10 ∶1 的比例劃分為訓練集與測試集,形成本文使用的鉭電容數(shù)據(jù)集。 幾種缺陷類型如圖8 所示。
圖8 數(shù)據(jù)缺陷類型Fig. 8 Data defects type
本文采用(mean Average Precision,mAP) 平均準確率均值以及(Frames Per Second,F(xiàn)PS) 每秒檢測幀數(shù)來評估本文算法的性能。 圖9 為改進算法與未改進算法訓練過程中的Loss值。 由圖9 可以看出,改進算法不僅損失值更低,而且收斂速度也相對較快。 為了評估本文改進算法的性能,將目前主流的目標檢測網(wǎng)絡與本文算法在同一數(shù)據(jù)集的運行性能進行比較,對比結果見表2。
圖9 改進前后loss 曲線Fig. 9 The loss curve before and after the improvement
通過表2 可以看出,本文算法的mAP值達到了89.70%,在各類算法中有著最高的平均準確率均值,相比于改進前的YOLOv3-SPP 算法,mAP值提高了4.79%,并且檢測單張圖片所消耗的時間也只多出0.008 s。 與Faster_RCNN 算法相比,本文算法的mAP值有3.82 個百分點的提升,單張圖片的檢測時間快出近2.4 倍。 與RetinaNet 算法相比,mAP值提升了約7%,F(xiàn)PS高出19.55。 在平均準確率均值與檢測速度兩方面,本文算法均優(yōu)于上述2 種算法。 SSD 算法檢測速度快,單張圖片的檢測時間僅為本文算法的二分之一,但其mAP值僅為80.67%,為本次實驗各類算法中的最低值,低于本文算法9.03%。YOLOv5 算法是目前YOLO 系列算法的代表性成果,而本文算法的mAP值要比其高出3.54 個百分點,單張圖片的檢測時間則要低9 ms。 綜合前文論述可知,相比于其他幾類算法,本文算法平均準確率均值最高,檢測速度雖然有待改進,但仍可滿足實時檢測的要求,具有一定的優(yōu)越性。
表2 算法性能對比Tab. 2 Performance comparison of algorithms
為了滿足實際生產(chǎn)環(huán)境中鉭電容表面缺陷檢測的要求,基于YOLOv3 網(wǎng)絡模型做出了一些改進,以提升模型在鉭電容表面缺陷檢測任務中的檢測能力,使用K-means 聚類算法優(yōu)化先驗框。 使用CIoU進行損失函數(shù)的計算,加速收斂、提高定位精度;使用Mosaic 數(shù)據(jù)增強方法強化數(shù)據(jù)集,提升了模型的檢測能力。 采用了FPN+PANet 結構的特征融合層,增強了模型的語義信息與定位信息,加強了模型的檢測效果。 實驗結果表明,改進的YOLOv3 算法的mAP值達到了89.70%,比原YOLOv3-SPP 算法提升了4.79 個百分點。 相比于其他主流算法,該算法在電容表面缺陷檢測中有更高的平均準確率均值,且能滿足實時檢測的要求。 本文算法也存在一些不足,在網(wǎng)絡模型Head 部分增加模塊的設計雖然提升了mAP值,但也導致了檢測速度的下降,如何能夠做到兩者兼顧,是后續(xù)亟待深入研究的主要課題。