李 園,劉嘉程,王冬冬,王恩澤,趙亞鳳
(東北林業大學, 哈爾濱 150040)
晶振在電路系統中為電路提供基本的頻率信號,如果晶振沒有辦法正常工作,對整個設備與系統會產生極大的影響。在晶振生產過程中,晶振總會產生表面損傷、電極錯位、引線缺失、無面膠或面膠覆蓋不均勻、水印等各種問題,多個種類的缺陷可能同時出現在同一個晶振上。目前,晶振檢測主要有以下2種方法:
1)人工目檢和功能測試。由于人眼容易疲倦,工人受外界影響干涉大,使得檢測效率低,錯誤率高、生產所產生的人工成本高。人工方法可以將多個缺陷標注分類并反饋于生產端,針對不同缺陷問題產生的生產環節進行微調,使得生產的晶振質量保持較高的水準,實現精細化。
2)自動光學檢測系統。其主要原理是把從光源反射回來的量與已經編好程的標準進行比較、分析和判斷。其優點在于能夠快速地實現缺陷的判斷。但其缺點表現為其無法標注缺陷的具體種類,因此無法及時反饋于生產端,此外在高倍數的放大情況下,細微的不同也會導致反射量的變化,需要圖片精度高,需要經常地調試設備,且調試周期長、無法長期保持高精度檢測,有不方便部署的弊端。
現有的2種方法缺陷本質上在于多個缺陷的同時出現,導致無法兼顧晶振檢測的速度、自動進行判斷記錄和對于生產端缺陷的及時反饋等3個要素。
早在十多年前,計算機視覺技術剛剛起步,文獻[1-2]就提出了用機器視覺方法代替人工進行晶振檢測。但由于計算機算力不足,以及相關機械設備發展尚早,始終無法進行高速清晰的識別并應用于實際生產環境。目前隨著深度學習技術發展,已經有學者將目標檢測技術用于缺陷檢測。常用的目標檢測算法分為2類:一類是以SSD[3]和YOLO[4]為代表的一段式目標檢測算法,這種算法不需要region proposal,經過1次檢測即可以生成錨框,得到最終檢測結果,其速度較快,廣泛應用于工業領域和視頻實時檢測;另一類是二段式檢測算法,主要代表有Faster R-CNN[5],Mask R-CNN[6]算法,這種算法首先進行region proposals,然后對目標進行分類識別,常常在小目標檢測中得到廣泛應用,其精度較高,但速度較慢,所以常用于圖片方面的處理識別等實時性要求不高的場景。目前已經有多名學者利用目標檢測技術進行缺陷檢測。
為解決晶振檢測過程中人工處理受外界影響大、自動光學檢測系統的部署需要高分辨率圖像且需要經常調試的問題,本文做了以下工作。提出了基于Yolov5的改進算法,根據實際情況去除自適應填充功能;在Neck中增加新的檢測尺度;借鑒加權雙向金字塔的結構將Backbone中的特征信息引入Neck中進行特征圖融合;改變其Neck部的激活函數,加快收斂速度;在檢測部分引入注意力機制,增加通道間的聯系;通過libtorch框架進行編譯和推理,進行集成的部署和系統設計。系統框架圖如圖1所示。

圖1 系統框架圖
1) 多缺陷指的是多個缺陷、多類缺陷可能同時出現于同一個晶振上。目標檢測技術的核心任務是“定位”問題和“分類”問題。應用于缺陷檢測方面的優點在于可以實現定位缺陷用錨框標出,實現不同錨框區域中不同缺陷的分類。這是傳統方法所不具備的優點
在晶振檢測問題下,遇到的問題是如何提升缺陷區域較小缺陷的定位能力和分類能力,即小目標檢測能力。小目標的定義有2種:一是指所占絕對像素少;二是指相對來說在整幅圖片中所占的大小相對較小。晶振檢測任務中,吸嘴印和電極錯位容易漏檢的問題即是小目標檢測能力不足的體現。
通常情況下,模型是通過卷積來提取原始圖片像素中包含的特征的,感受野就反應了單個高層特征的信息與原始像素之間的對應關系,在網絡卷積核確定的情況下,隨著網絡層數的增加,單個高層特征反應原始圖片像素的范圍就越大,視野就越寬,高層信息就越能夠反應原始圖片中物體的宏觀輪廓。然后,隨著網絡層數的增加和感受野的變大,微觀的信息就會丟失,這樣對于小目標的信息就會聚合到一個點,小目標原本包含的像素就少,隨著感受野的增加,聚合后的特征就更少了,比如10*10像素的小目標,經過卷積后的特征可能就只有1*1,甚至出現多個10*10像素的小目標,經過多次卷積核,合并成了一個特征。這樣,小目標就無法識別。因此,深層的多次卷積,對于小目標的微觀特征實際上是不利的。
2) 當前深度學習不斷發展,雖然深度學習技術在工業界不斷應用,但相比于學術界的發展,如何部署于工業界仍是需要解決的問題,在圖像學中,GPU的計算速度更快,更適合于進行深度學習。但是在工業界中,缺少GPU的加持,且在工業界中GPU型號并不靠前,所以需要考慮模型的輕量化。
綜合以上考慮,本文采用Yolov5進行算法的改進。
整個網絡結構由輸入端、主干網絡、Neck網絡、Head輸出層所組成。Yolov5s結構框圖[7]如圖2所示。

圖2 Yolov5s結構框圖
輸入端Yolov5s采用了Mosaic方法進行數據增強,增強魯棒性。采用自適應填充的辦法,減少了信息冗余,進一步提高運行速度。
主干網絡Backbone通常由特征提取網絡構成,其中典型網絡包括ResNet[8]、DenseNet[9]、EfficientNet[10],其主要的作用是提取特征。主干網絡引入了注意力機制[11],注意力機制的引入使神經網絡能更好地提取特征[12],提高系統的精度。CSP結構引入了與DenseNet相似的的跳層連接思想[13]。CSP結構解決了其他大型卷積神經網絡框架Backbone中網絡優化的梯度信息重復問題,既保證了推理速度和準確率,又減小了模型尺寸。
Yolov5 的 Neck 部分采用了PANet結構[14],Neck 主要用于生成特征金字塔。特征金字塔會增強模型對于不同縮放尺度對象的檢測,從而能夠識別不同大小和尺度的同一個物體。PANet結構是在FPN的基礎上引入了 Bottom-up path augmentation 結構。PANet在 FPN 的基礎上加了一個自底向上方向的增強,使得頂層 feature map 也可以享受到底層帶來的豐富的位置信息,從而提升了大物體的檢測效果。
Head 進行最終檢測部分,輸出的特征圖上會應用錨定框,并生成帶有類別概率、置信度得分和包圍框的最終輸出向量。
1.3.1Input模塊的優化
加入裁剪模塊并啟用多尺度大小訓練。在Yolov5s算法中,輸入圖片會自適應大小為640*640的大小,受限于相機的配置參數,無法拍攝為正方形圖片,圖片原大小為2 480*2 056,在自適應縮放圖片大小的過程中,會在2 056的邊長處增加黑色長度,然后縮放至640*640,這樣的處理無意間增加了多余的冗余信息,對于訓練并不友好,在dataset模塊中,根據所拍攝圖片的大小,加入裁剪模塊,將整幅圖像裁剪為2 056*2 056的比例。訓練圖片輸入大小對比如圖3所示。

圖3 訓練圖片輸入大小對比
這一改進同時增加了一個圖中多個缺陷區域的相對面積,改善目標較小難以定位的難題。在一定程度上這一改進增強了算法的定位能力。
1.3.2Backbone和Neck的改進
由上文描述的問題可知,要進一步提高目標檢測的精度,既要確保網絡層次夠深,又要避免過度降維以至于損失特征的問題,在以下的改進中,主要思想是增加新的檢測尺度和特征圖融合的方法來增加特征并進一步增加網絡深度。
在晶振檢測的環境背景下,很多目標本身就很小,原始的Yolov5在檢測過程中可能會被覆蓋或是忽略,為了解決小目標檢測的問題,在主干網絡和頸部網絡的部分增加新的尺度檢測層連接。通過新的卷積采樣的增加,使得新的尺度檢測的增加,更加適用于密集出現的缺陷。新的檢測層參數經過卷積和通道數的變化,新的檢測層為160*160*255。新添加的檢測層在Neck中生成新的特征金字塔結構,原本的特征金字塔層數較少,新的檢測層的特征金字塔層數將更多,將更小的目標信息映射。
以上進行的增加尺度檢測模塊改進主要是為了加強網絡的特征融合能力,但是同時存在問題是所有的特征信息都將是處理后得到的,原始信息很少參與到特征金字塔的生成。為了進一步減少偏差,增強特征圖的融合信息能力,使得主干網絡中的原始特征信息參與到學習訓練學習中,在此借鑒了加權雙向特征金字塔(BiFPN)[15]中的結構,進行特征融合。增強不同尺寸的特征圖,不同信息量的特征圖的融合。BiFPN的結構圖如圖4所示,在此結構中,原本是將不同的特征圖按照不同的權值進行交融,在此次的改進中,主要借鑒其結構思想進行改進。改進后的yolov5結構圖如圖5所示。

圖4 BiFPN結構圖

圖5 Backbone與Neck部分的聯合改進
圖5中顏色最深的模塊是新添加的小目標檢測層,較粗的連接線是為了添加此模塊所進行的連接,此結構增加了一層不同尺度的檢測,旨在增加小目標檢測能力。雖然增加了小目標的檢測層,但是本身結構仍然是PANet的普通結構,在經過處理后,會造成原始特征的丟失。
這一部分改進特意增加了更適合檢測小目標的小尺度檢測層,以改善在網絡深度過深時小目標所攜帶的信息被稀釋。此后,在生成的新的特征金字塔結構中進行結構改進,旨在將原始特征更多地引入,避免原始特征信息經過多次處理后的丟失。相較于未改進,經過改進使得模型中的特征信息更多,增加定位能力,為檢測分類提供幫助。
1.3.3Neck部分的改進
在許多實驗中使用Hard-swish激活函數都提高了模型的收斂速度,使得神經網絡的性能得到很大的提高。H-Swish函數公式為:
Swish(x)=x·sigmoid(βx)
(1)
由上述公式可知,本函數具有非單調和有下界無上界的特點,且計算量小,有助于加快收斂,增加模型的準確程度。同時這一改進有利于解決在深度學習中常見的區域最優解問題,幫助模型更快跳出區域最優解。
1.3.4Predesition部分改進
引入了ECA[16]注意力機制。注意力機制的有效性已經被廣泛證明,ECA注意力機制在SE注意力機制的基礎上提出,其主要特點是在不降維前提下增加通道之間的聯系,并且不用對網絡的模型參數做出修改,可以隨時方便引用。其計算結構如圖6所示。其中的GAP代表進行全局池化操作,進行卷積核大小為k的一維卷積操作,并經過Sigmod函數得到不同的通道權重大小。

圖6 ECA注意力機制結構圖
在1.3.3節的改進中,在網絡結構方面已經進行了多次特征圖的融合,特征圖的信息量相較于原網絡更多,為了讓通道之間相互關聯,進一步提高檢測精度,在輸出部分引入注意力機制,使得特征圖的注意力信息能被更好地利用。完整的改進后結構圖如圖7所示。

圖7 改進模型圖
引入ECA注意力機制后,各個通道間相互關聯,在特征信息增多的前提條件下,更有效地利用原有信息,且并沒有過多的增加計算量,使得檢測的分類能力提升,能更加準確地識別出缺陷的種類。增強了檢測多缺陷時的分類能力。
本次實驗相機型號為TS5MCL-156M,生產廠家為合肥??乒怆娍萍脊煞萦邢薰?在相機的配置過程中,要在個人計算機安裝圖像采集卡,為最大限度貼合實際生產環境,安裝圖像采集卡的個人計算機不再另外配有顯卡,采用英特爾i9cpu進行推理運算。相機及圖像采集卡如圖8所示。

圖8 實驗場景搭建
進行訓練的個人計算機配置:網絡語言基于python3.7的Pytorch框架實現,軟件平臺為Pycharm,主機基于linux系統配置,共16G內存,cpu配置為i9,顯卡為NVIDIA GEFORCE GTX1080Ti,顯存為11G,CUDA版本為10.2。
本次采用圖像均用工業相機進行采集照片共2 142張,其中700張為工廠環境進行采集的,其余在實驗室自行采集,以2種圖片混合進行數據集制作。
工業環境中對于結果影響最大的是光照因素,目標檢測技術更像是模仿人眼在一定程度上進行定位和分類2個任務。雖然室內是一個相對封閉且光源相對穩定的空間,但是流水線不同的檢測位置仍然會影響晶振的成像,根據實驗,在放大倍數很大但不使用補光燈的情況下,往往需要不斷地調節鏡頭以及設備的位置來保證成像的合格。這也是自動光學檢測設備對晶振無法保持高精度的檢測,并且必須經常重新調試設備的原因。為了保持設備在一定范圍內的穩定性,所以采用圈型的補光燈將光照強度控制在一定程度內。
數據集標注,標注格式有yolo、VOC等格式,為了方便使用,此處標注格式為VOC格式,標注完成后,通過data文件夾下的txt_make.py和label_make.py轉為指定的格式要求。缺陷分類共5類,分別為吸嘴印、電極錯位、引線缺失、水印、無面膠或面膠不均。晶振出現的缺陷種類如圖9所示。

圖9 晶振典型缺陷檢出
各種典型缺陷的特征描述如下:
1) 吸嘴印:表現為在電極上(上圖中面積最大的灰白色或灰黑色部分)與周遭顏色不同的小黑塊或者黑點,大小為0.2~0.8 mm的不規則區域。
2) 引線缺失:表現為面膠(圖中的圓形黑色部分)與晶片(圖9左下的圓形面膠與電極之間的亮銀色部分)中間呈現出未分層的現象。
3) 電極錯位:表現為電極與晶片的不對齊,大小不定。
4) 面膠問題:面膠未呈現相互對稱或接近于完整圓的狀態。
5) 水印:在黑色的的晶振電極上呈現出白色的小圓。其大小通常為0.2~0.4 mm的圓。
多缺陷可能同時出現在同一晶振,同一缺陷也可能反復出現在同一個晶振的不同區域。數據集劃分比例采用1:9劃分訓練集與驗證集,除2142張缺陷標記圖片外,其中插入70張無缺陷晶振圖片于訓練集,以提高模型的魯棒性和泛化性。
本文中主要采用mosaic數據增強技術, mosaic主要采用多張圖片隨機裁剪、縮放、翻轉后,再隨機排列拼接形成1張圖片,實現豐富數據集的同時,增加了小樣本目標,提升網絡的訓練速度。訓練完成后,重新采集100張圖片進行驗證,根據評估參數評估試驗結果。
主要用以下4個指標對實驗進行評估。
1) 精確率P(Precession),其計算公式為:
式中:TP表示把正類預測為正類;FP表示表示把負類預測為正類。參數表示正確預測占全部預測為正的的比例。
2) 召回率R(Recall),其表示預測為正占全部樣本的比例,FN表示把正類預測為負類。其計算公式為:
3)mAP@0.5:0.95:AP表示的是單類別的平均準確度,mAP表示對所有類別求均值,mAP@0.5:0.95表示在不同閾值下平均的mAP值。
4)Speed(cpu),其是預測在cpu上的表現速度。為考慮部署過程中的實際應用,圖像的采集和其相關數據的存儲一定會耗費時間,在沒有GPU加速的前提下,在cpu上的表現速度十分關鍵。
3.1.1實驗超參數設計
將data文件夾下的mydata.yaml文件的類別數改為5,分類具體類別為:“NG1、NG2、NG3、NG4、NG5,分別對應不同的缺陷種類。此次共5種缺陷,所以修改yolo5s.yaml文件類別數為5,訓練輪次為300,batchsize為8。SGD[17]優化算法沒有使用動量,容易陷入局部極值。使用Adam優化算法[18],利用梯度的1階矩估計和2階矩估計動態調節每個參數的學習率。此外打開多尺度訓練,超參數進化的選項。
3.1.2改進模型前后對比
實驗中對ECA注意力機制的引入進行了多次實驗,分別在預測部分、主干網絡部分和頸部網絡中進行引入,但只有在預測部分,其有正優化的效果,因此表1中列出的僅僅是在預測部分引入的效果。

表1 不同改動所產生的效果
改進模型部分分別以以下字母代表改進部分。O代表未進行任何改進進行訓練的模型網絡,I代表改進Input模塊,H代表主干網絡和頸部網絡的聯合改進,N代表改動Neck部分的激活函數,E代表引入注意力機制。例如I代表改進Input模塊的模型。表1為分別改進后的模型訓練結果。
從表1可以得出,優化的每一部分都為正向優化,在損失可接受范圍內的計算速度的同時,在頸部網絡和主干網絡進行特征圖的融合帶來了巨大的提升效果。在Input網絡方面雖然成效不大,但是也仍然帶來了一定的提升。此對比實驗成功證明了改進網絡所進行優化是可行的。尤其是在進行特征圖的融合后,在計算量增大有限的前提下,使得檢測的精度大幅度地提升。
最終將4種改進同時進行,改進后的模型命名為IHNE_Yolov5s,改進前后的實驗結果如表2所示。

表2 改進前后評估對比
在實驗中,改進后的網絡在一定程度上犧牲了運算時間,這是為了提升精度不可避免地一部分,但其在cpu上地運算速度表現仍然控制在0.3 s以內,其準確率提升了約7%,召回率提升了2%左右,證明了本文改進的有效性。
此外,在訓練過程中發現,召回率的收斂速度相似,但是總體上改進后的網絡收斂速度更快,圖10為訓練過程中Yolov5s改進前后的Pression曲線變化,通過觀察曲線趨勢,發現改進后的網絡收斂速度更快,證明了雖然有計算量的加大,在進一步數據集擴充情況下,我們可以適當減少訓練輪次,將其更快更準確地應用于缺陷的檢測。

圖10 改進前后的精度對比
3.1.3人工檢測結果對比
本次人工檢測過程共采集100張圖片,其中50張由工廠工人采集,50張在實驗室進行采集。采集到的圖片缺陷由雙方共同認定缺陷數量和種類。其中,工人檢測由另外一批不參加圖像采集的工人進行識別,確保實驗結果不受干擾。實驗結果如表3所示。

表3 人工檢測結果
從表3可以看出,利用改進后的模型進行檢測缺陷是可行的,在工人未長時間工作的前提下,總體人工檢出的準確率仍然低于系統檢出的準確率,其中3項缺陷,系統檢出比人工更高,系統檢出率全部高于95%。根據檢出比來看,無論哪一類缺陷,系統都能夠準確識別,除電極錯位以外,系統檢測比人工更加準確可靠。系統能準確地識別錯誤,根據圖10所示,當多缺陷出現在同一晶振上時,也可以準確判斷識別。表明本文給出的方法能成功地做到精確識別,精準分類。
模型部署過程中首先進行模型剪枝工作,原Yolov5模型已經很小,但其仍然包括了反饋部分進行loss的計算,在剪枝過程中,僅保留其前向計算部分和訓練參數部分,進行libtorch的推理工作。主要步驟如下:① 進行opencv安裝;② 對項目進行libtorch環境的配置;③ 生成onnx中間文件;④ 編譯文件,進行推理加速。
本文界面采用QT進行界面的編寫,并最終集成,這樣做的好處是每一個函數部分相對獨立,后期仍然可以基于此界面添加其他功能。在編寫過程中,引入中文,實現缺陷中文名稱的顯示,使得方便統計。主要包含了圖像讀取以及預測2個功能模塊,圖像讀取包含2種方式:一種是通過程序接口與工業相機進行連接,直接從工業相機中讀取晶振圖像;另一種是通過讀取計算機本地存儲的圖像,通過“選擇文件夾”來打開圖片,并通過“上一張”和“下一張”按鈕來選擇文件夾里的圖像。
預測模塊將圖像輸入進網絡并進行預測以及生成預測框,并將對應缺陷位置顯示出來,將預測結果顯示在文本框內,這樣就可以清晰地顯示出晶振具體出現的缺陷,預測結果效果圖如圖11所示。

圖11 檢測效果圖
同時在預測過程中,后臺會自動統計缺陷的種類及累計的個數生成csv文件,csv文件中主要包括圖片缺陷檢測種類的總數統計以及缺陷圖片的位置路徑。方便將其反饋于生產端,使得其生產工藝進一步提高,減少不良品的百分比。
1) 以電子工業相機拍攝晶振照片進行數據采集,在拍攝過程中適度調整光照強度,在訓練過程中進行反轉裁剪等數據增強。
2) 為解決晶振檢測中細小的表面損傷和電極錯位難以檢出的情況,對模型進行強化改進,保留其輕量化的同時,增強了定位和分類能力,實現了檢出率高于95%,單張速度小于0.3 s,實現檢測精細化和高速化。
3) 根據工廠需求設計可視化界,進行模型剪枝加速,并將模型、相機控制程序和檢錯統計的程序集成,實現晶振檢測的精細化管理。
鳴謝:在此特別感謝應達利電子股份有限公司的合作,為本次實驗提供數據集支持。