安勝彪,楊 旭,陳書旺,趙立欣,李亞航,白 宇
(河北科技大學 信息科學與工程學院,河北 石家莊 050018)
隨著無人駕駛、5G和物聯(lián)網(wǎng)等新興技術的發(fā)展,芯片被廣泛應用在計算機、移動電話、智能終端和其他數(shù)字電器等設備中。芯片排序、出廠前的缺陷質量檢測、芯片封裝前的定位和尺寸檢測等都需要對芯片進行識別。常用的芯片識別方法可分為經(jīng)典的圖像處理方法和深度學習方法。傳統(tǒng)圖像處理方法中如周偉等[1]改進Harris角點檢測算法,求得芯片的角度信息并對圖像進行校正;Hou等[2]利用模板匹配和鄰域比較算法實現(xiàn)芯片缺陷檢測。深度學習方法中如肖磊[3]將全局平均池化層與Alexnet[4]卷積神經(jīng)網(wǎng)絡相結合,對6種缺陷類型的壓敏電阻進行缺陷分類;Zhu等[5]在對IC芯片圖像進行預處理后獲得單個字符圖像,改進輕量化的LeNet-5[6]對2個方向的芯片表面字符進行檢測。
由于芯片種類較多,傳統(tǒng)圖像處理算法需要對每種芯片設計特定的特征提取算法,耗費大量的人力物力,效率較低。而深度學習方法可以自動從樣本中學習特征,無需人工提取特征和參數(shù)設置,與傳統(tǒng)方法相比更加具有適應性,可以減小外界客觀因素造成的誤檢情況。因此本文基于深度學習的方法對芯片進行識別定位。
近年來基于深度學習的目標檢測方法被大量提出,其中具有代表的有單階段的YOLO[7-10]系列和雙階段的Faster R-CNN[11]。本文的圖像來自智能排料系統(tǒng)中的芯片,運動控制模塊根據(jù)芯片的位置和角度對芯片進行轉移排序。常用的水平目標檢測并不能檢測出物體的角度,因此有學者提出了旋轉目標檢測方法,如Liu等[12]提出的R2CNN方法使用Faster R-CNN[11]框架,設計了帶斜框的非極大值抑制操作;Ma等[13]采用RRPN將旋轉因素融入到區(qū)域提取網(wǎng)絡中實現(xiàn)多方向的文字檢測,將RoI Pooling[11]改為帶角度的RoI Pooling,提取旋轉目標特征。旋轉目標檢測大多用于遙感圖像和文字檢測中,目前沒有文獻將旋轉目標檢測應用在芯片檢測中,且很多旋轉目標檢測方法是基于二階段的Faster R-CNN[11]檢測網(wǎng)絡,在區(qū)域建議部分引入旋轉錨框得到旋轉候選區(qū)域,大量的旋轉候選區(qū)域在后續(xù)的計算和非極大值抑制過程中大大增加了計算量,降低了檢測速度。
本文以排料系統(tǒng)中的芯片為實驗對象,求得芯片位置和角度信息,為自動化抓取模塊提供準確的數(shù)據(jù)支持,提出了一種級聯(lián)式卷積神經(jīng)網(wǎng)絡的芯片檢測方法,主要貢獻有以下3點:
① 采用級聯(lián)的工作方式將芯片檢測分為目標檢測和角度檢測2個階段。第1級網(wǎng)絡為芯片目標檢測網(wǎng)絡,采用改進的YOLOv5s模型檢測芯片位置;第2級網(wǎng)絡為關鍵點回歸網(wǎng)絡,對芯片的4個角頂點進行回歸求取角度信息。第1級網(wǎng)絡可以為第2級網(wǎng)絡的任務提供輸入圖像,級聯(lián)的工作方式通用性強、靈活性高。
② 在第2級網(wǎng)絡中,提出使用關鍵點回歸的方式求取角度信息。根據(jù)芯片的顯著形狀特征,回歸出芯片的4個角頂點,再對角頂點進行計算得到角度信息。這種方式可以避免傳統(tǒng)圖像處理中的特征設計環(huán)節(jié),同時減少深度學習算法中旋轉目標檢測復雜的旋轉錨框計算。
③ 針對大尺寸目標密集型圖像,提出疊加式裁剪算法進行數(shù)據(jù)預處理,在不改變圖像質量的同時引入較少的計算量。在數(shù)據(jù)整合和YOLOv5s模型的預測框篩選階段使用DIou-NMS[14],提高了小目標和密集目標的檢測精度。
本文采用級聯(lián)的工作方式,第1級網(wǎng)絡為芯片目標檢測網(wǎng)絡,第2級網(wǎng)絡為關鍵點回歸網(wǎng)絡??傮w框架設計如圖1所示,大尺寸圖像為原始數(shù)據(jù)集。首先對大尺寸圖像進行疊加式裁剪處理,得到小尺寸的子圖作為芯片目標檢測網(wǎng)絡的輸入。芯片目標檢測網(wǎng)絡利用結合DIoU-NMS[14]的YOLOv5s模型對子圖進行檢測,將子圖檢測結果進行數(shù)據(jù)整合處理后獲得大尺寸圖像上每個芯片的水平目標框。接下來對水平目標框進行擴邊處理后將只包含單個芯片的圖像裁剪下來作為關鍵點回歸網(wǎng)絡的輸入。芯片的表面結構主要由塑封體和引腳組成,顏色單一,且位于中心的塑封體多為黑色的正方形或長方形,特征單調。因此,第2級網(wǎng)絡將芯片的4個角頂點作為回歸對象,最后根據(jù)回歸出的4個角頂點計算每個芯片的角度。求得芯片位置和角度后,將信息傳給后續(xù)的運動控制系統(tǒng)來完成芯片的轉移。
圖1 總體框架Fig.1 Overall architecture
1.2.1 芯片目標檢測網(wǎng)絡
為更好地滿足工業(yè)上對檢測速度和精度的要求,芯片目標檢測網(wǎng)絡選用輕量化的YOLOv5s模型。YOLOv5s沒有使用 RPN生成候選區(qū)域,而是直接在卷積神經(jīng)網(wǎng)絡中提取特征來預測物體分類和位置信息,是一種端到端的目標檢測算法,主要分為主干網(wǎng)絡、neck層和預測層。其中,主干網(wǎng)絡采用CSPDarknet53結構,同時引入Focus模塊,大大減少層數(shù)和參數(shù)量;neck網(wǎng)絡包含PAN[15]和SPP[16]模塊,將高層特征信息與不同層的輸出特征進行聚合,加強特征融合能力。經(jīng)過特征提取后,預測層共得到3種不同尺度的特征圖。YOLOv5s中引入了自適應錨框,直接在特征圖上設置大小不同的錨框并進行回歸和分類。
YOLOv5共有4種不同深度和寬度的模型,為考慮工業(yè)中的部署條件,本文采用模型最小的YOLOv5s進行訓練,模型結構如圖2所示。其中CBL由Conv,BN和LeakyRelu組成,CSP1結構與YOLOv4[10]中的CSP結構一致。實際應用中,芯片種類復雜但形狀上具有一定的相似性,如塑封芯片多由矩形塑封體和數(shù)量不等的引腳組成。某些特殊情況下芯片同為矩形且引腳數(shù)目也相同,此時需要根據(jù)更細節(jié)的信息如表面的數(shù)字標識來判斷類型。YOLOv5在類間差異較小的情況下可能會造成類型的誤檢,因此本文把不同類型的芯片歸為一類,專注識別芯片的位置。網(wǎng)絡的預測層(YOLOHead)輸出為S×S×(5+C)×K,其中S為3種不同尺度的特征圖大小,分別為80,40,20,C為對象類別數(shù),取值為1,K為每種尺度下的錨框個數(shù),取值為3。以輸出的最大特征圖為例,網(wǎng)絡的預測層輸出大小為(80 pixel×80 pixel×18)。
圖2 YOLOv5s網(wǎng)絡結構Fig.2 YOLOv5s network structure
在采用YOLOv5s模型對子圖進行目標檢測后,使用數(shù)據(jù)整合處理對子圖上的結果進行整合,得到大尺寸圖像上每個芯片的位置。首先根據(jù)芯片位置將單個芯片圖像裁剪下來并進行保存,之后按照裁剪順序將圖像傳給關鍵點回歸網(wǎng)絡進行檢測。
1.2.2 關鍵點回歸網(wǎng)絡結構
根據(jù)芯片的形狀特征,本文將單個芯片的4個角頂點作為檢測對象,專注識別芯片的4個角頂點。關鍵點回歸網(wǎng)絡的具體結構如圖3所示。
圖3 關鍵點回歸網(wǎng)絡結構Fig.3 Key points regression network structure
該模型采用全卷積的結構,網(wǎng)絡的輸入端為128 pixel×128 pixel×3大小的圖像。經(jīng)過多個大小為3×3的卷積操作和卷積核大小為2×2的最大池化操作來提取芯片特征和降低特征圖大小。網(wǎng)絡最后輸出為大小1×1、通道數(shù)為8的特征圖,8通道代表4個關鍵點坐標po=(x1,y1;x2,y2;x3,y3;x4,y4)。網(wǎng)絡最后一層用1×1的卷積替代了全連接層,減小了計算參數(shù)。損失函數(shù)采用smoothL1,計算如下:
(1)
式中,x為真實的點坐標和預測出的點坐標的差值。smoothL1使損失函數(shù)值對于離群點更加魯棒[23],相比于L2損失函數(shù),其對離群點、異常值不敏感,可以有效解決梯度爆炸問題。
疊加式裁剪算法是芯片目標檢測網(wǎng)絡的數(shù)據(jù)預處理過程。本文的芯片盛放在透明亞克力防靜電成像專用托盤,該托盤同時還是一個翻轉機構。為給后續(xù)的檢測任務提供高清數(shù)據(jù)集,采用工業(yè)CCD掃描儀進行拍攝,得到的圖像大小為14 032 pixel×10 208 pixel。其中最小的芯片為140 pixel×70 pixel,最大的為482 pixel×482 piexl。將大尺寸圖像輸入到YOLOv5s模型中,32倍下采樣后的特征圖為438 pixel×319 pixel,大于最小芯片所占的像素,由于下采樣倍數(shù)太大無法保證小目標的檢測精度。下采樣倍數(shù)過小(為8倍)時,網(wǎng)絡前向傳播需要在內存中保存大尺寸的特征圖,會大量耗費GPU資源,容易造成顯存爆炸,無法進行正常的訓練及推理。因此在圖像輸入到網(wǎng)絡之前,對大尺寸圖像進行了疊加式裁剪處理,在保證圖像質量的同時引入較少的計算量,適用于檢測不同大小的芯片。該算法的輸入為1張14 032 pixel×10 208 pixel大小的圖像,輸出為49張877 pixel×638 pixel大小的子圖。在裁剪前,需要先將高分辨率圖像的長寬都縮小為原來的1/4,圖像大小變?yōu)? 016 pixel×5 104 pixel,7 106記作ho,5 104記作wo。裁剪步驟如下:
① 將長寬比4∶4進行圖像裁剪,確定出子圖大小為877 pixel×638 pixel,877記作hs,638記作ws;
② 將wo的左右2端各留出ws/2的距離,對剩下的寬邊(wo-ws)進行三等分,對長邊進行四等分;
③ 將ho的左右2端留出hs/2的距離,對剩下的長邊(ho-hs)進行三等分,對寬邊進行四等分;
④ 將wo,ho的左右2端各留出ws/2,hs/2的距離,對剩余圖像的長寬進行三等分。
本文的疊加式裁剪算法使圖像之間的重疊程度變?yōu)?0%,加大了重疊面積,減少了位于圖像邊緣的冗余子圖,可以確保不同大小的芯片都能完整地出現(xiàn)在每一張子圖上,減少漏檢情況。圖4是對實際圖像進行裁剪后的效果圖,圖4(a)為原圖,圖4(b)~(e)為按上述4步切割后的子圖。該方法適同樣用于其他大尺寸的圖像,只需要確定出子圖的標準長寬,即可生成相應的子圖。
(a) 原始圖像
(b) 裁剪1
(c) 裁剪2
(d) 裁剪3
(e) 裁剪4
關鍵點回歸網(wǎng)絡的輸入圖像中只包含單個芯片,為確保芯片的4個角頂點都能完整地出現(xiàn)在圖像中,避免芯片4個角頂點位于圖片邊緣而影響檢測效果,本文需要裁剪出只包含單個芯片的圖像。該方法作為關鍵點回歸網(wǎng)絡的數(shù)據(jù)預處理過程,以芯片的原始水平框為基準,將水平目標框的長寬向外擴展最大邊長的10%。圖5為裁剪示例,即將圖中紅色水平框擴展為綠色水平框,并將綠色水平框所包含的圖像裁剪下來進行保存。
圖5 單個芯片裁剪示例Fig.5 Example of cutting out a single chip
在訓練階段需要求得對應于裁剪圖像中芯片的4個角頂點坐標信息。推理測試階段,第1級網(wǎng)絡的檢測結果進行單個芯片裁剪處理后將作為第2級網(wǎng)絡的輸入數(shù)據(jù)。
本文拍攝的圖像尺寸較大,因此在推理測試過程中,先使用疊加式裁剪算法對大尺寸圖像進行裁剪得到子圖,再調用YOLOv5s對每張子圖進行目標檢測。數(shù)據(jù)整合處理是將每張子圖的檢測結果根據(jù)裁剪規(guī)律映射到其對應的大尺寸圖像上,由于子圖間有疊加且芯片比較密集,同一個芯片在不同子圖上可能會被重復檢測到,存在一個目標有多個預測框的情況。針對這種情況,傳統(tǒng)的NMS只利用IoU作為評判標準,對大于閾值的框進行剔除,該閾值的選取是靠經(jīng)驗選取,且IoU的計算只考慮了2個框的重疊面積,對于重疊預測框的關系表達不夠全面。因此在數(shù)據(jù)整合階段,選用DIoU-NMS[14]進行預測框的篩選,DIoU計算如下:
(2)
式中,d為預測框和真實框的中心點之間的距離;c為預測框和真實框組成的最小外接矩形的對角線長度。DIoU考慮了2個預測框中心點的距離,若相鄰框的中心點越靠近當前最大得分框的中心點,則更有可能是冗余框,對重疊的目標框有較好的篩選效果,DIoU的原理如圖6所示。利用DIoU-NMS[14]對整合后的預測框進行篩選即可得到圖像上每個芯片的水平目標框。
圖6 DIoU原理Fig.6 DIoU principle diagram
數(shù)據(jù)集包括3種不同類型芯片,分別為小外形晶體管、中形封裝芯片和無引腳芯片載體。使用rolabelimg對大尺寸圖像進行標記,可根據(jù)標記信息求出每個芯片的4個角頂點坐標。為獲取兩級網(wǎng)絡的輸入數(shù)據(jù)集,首先對大尺寸圖像進行疊加式裁剪共得到7 840張子圖,類別統(tǒng)一設置為0,作為第1級網(wǎng)絡的輸入。其次,根據(jù)高分辨率圖像的標記信息進行單個芯片裁剪處理,得到6 000張包含單個芯片的圖像,同時生成帶有芯片角頂點坐標的txt文件,作為第2級網(wǎng)絡的訓練輸入。2個網(wǎng)絡所用的數(shù)據(jù)集都按8∶1∶1的比例劃分成訓練集、驗證集和測試集。
本文的網(wǎng)絡訓練在GeForce GTX 2080硬件平臺下進行。芯片目標檢測網(wǎng)絡的輸入圖像大小為640 pixel×640 pixel,關鍵點回歸網(wǎng)絡輸入圖像大小為128 pixel×128 pixel。均采用Adam優(yōu)化方法,初始學習率設置為0.001,學習率采用指數(shù)衰減方式,批量大小設置為64。
本文的芯片大小不一,無引腳芯片體積約是小外形晶體管體積的2~3倍,密集程度也不相同。YOLOv5s中引入了FPN[17]和PAN[15]結構進行多尺度預測,將高層次的語義信息和低層次的位置信息進行融合,同時利用DIoU-NMS對預測框進行篩選,提高了小目標及密集物體檢測的精度,能夠滿足芯片檢測的要求。
小外形晶體管和無引腳芯片的部分檢測結果如圖7所示,當芯片大于其面積的一半出現(xiàn)在圖像中時,芯片都可以被檢測出來。中型封裝器件的子圖檢測結果經(jīng)過數(shù)據(jù)整合后,得到大尺寸圖像中的每個芯片的位置,結果如圖8所示。
(a) 小外形晶體管
(b) 無引腳芯片
圖8 數(shù)據(jù)整合結果Fig.8 Data integration results
關鍵點回歸網(wǎng)絡的損失函數(shù)變化情況如圖9所示,經(jīng)過200輪訓練后網(wǎng)絡逐漸穩(wěn)定,訓練集損失約0.06,驗證集損失約0.08。
圖9 損失函數(shù)曲線Fig.9 Loss function curve
芯片的旋轉角度根據(jù)點計算得到:
θ=arctan((y2-y1)/(x2-x1)),
(3)
式中,θ為所求的角度;(x1,y1),(x2,y2)分別為芯片的左上角坐標及其順時針方向的第1個點坐標值,如圖10所示。若y2-y1<0,則角度θ為負值,反之θ為正值。物料排序系統(tǒng)中只需要把芯片擺正即可,因此沒有考慮字符方向,式(3)求的角度為相對角度。
圖10 角度計算示例Fig.10 Angle solution example
關鍵點回歸網(wǎng)絡的點回歸結果如圖11中的第1行所示。由圖可知,網(wǎng)絡較為準確地回歸出了芯片的4個角頂點。利用式(3)求得圖11 (a)~(c)的3個芯片的角度分別為39°,13°,-20°。得到角度后,利用旋轉矩陣函數(shù)來驗證角度[18]是否正確。旋轉后的結果如圖11(d)~(f)所示,3個圖像中的芯片都已歸正。
圖11 關鍵點回歸檢測結果Fig.11 Key point regression detection results
為驗證級聯(lián)卷積神經(jīng)網(wǎng)絡對芯片的檢測效果,選取3種不同類型的芯片各40張,一共120張圖片進行實驗,分別以平均角度誤差、平均精度、推理時間、模型大小、計算量(GFLOPs)作為實驗的評價指標。角度誤差是圖像的真實角度與預測角度之間的差值,平均精度(AP)是精確率(Precision)與召回率(Recall)曲線與坐標軸圍成的面積,計算如下:
(4)
(5)
(6)
式中,TP為真正例;TN為真反例;FP為假正例;FN為假反例。本文將YOLOv5s模型應用于第1級網(wǎng)絡進行芯片目標檢測。在相同配置條件下使用相同數(shù)量的測試集,與目前常用的雙階段目標檢測方法Faster R-CNN[9]和單階段目標檢測方法YOLOv3[9]進行了對比實驗,分別從平均精度、推理時間和模型大小3個方面進行比較。在進行芯片識別定位時,先對大尺寸圖像進行疊加式裁剪處理,即3個模型的輸入都為小尺寸子圖,再對子圖的結果進行數(shù)據(jù)整合,因此本文的推理時間指的是裁剪、檢測和數(shù)據(jù)整合共同需要的時間。具體實驗結果如表1所示。
表1 多種目標檢測模型結果對比Tab.1 Comparison of results of multiple target detection models
由表1可以看出,YOLOv5模型的檢測精度最高,達到91.5%,其模型遠遠小于 Faster R-CNN和YOLOv3,檢測時間也相對較短。驗證了單階段目標檢測模型的檢測速度優(yōu)于雙階段的目標檢測。從工業(yè)上對檢測精度和速度的要求出發(fā),本文選用YOLOv5s進行檢測。
為驗證疊加式切割算法和DIoU-NMS方法對YOLOv5s模型檢測效果的影響,進行了消融實驗。第1組實驗中對大尺寸圖像不進行任何處理,直接輸入到模型中進行檢測,后3組實驗為分別加入不同改進方法后的結果,從平均精度和參數(shù)量2個方面進行評估。實驗結果如表2所示。
表2 不同改進方法的結果對比Tab.2 Comparison of the results of different improved methods
由表2可以看出,當直接將大尺寸圖像輸入到YOLOv5s模型中時,檢測精度相對較低為81.7%,計算量為264 GFLOPs。經(jīng)觀察發(fā)現(xiàn),該方法對小外形晶體管的檢測效果較差,可能是由于將大尺寸圖像進行32倍下采樣時,造成了小目標信息的丟失,在8倍下采樣中,由于輸入尺寸較大,需要保留較大的特征圖,造成了計算量相對較大。在對大尺寸圖像進行疊加式裁剪后, AP值提高了9.8%,計算量為16.5 GFLOPs,經(jīng)過疊加式裁剪處理后模型檢測的是小尺寸的子圖,因此計算量大大減少;加入DIoU-NMS后,AP值提高了7.6%;同時加入2種方法后AP值為94.6%,計算量為17 GFLOPs。由實驗結果可知,DIoU-NMS提高了重疊物體和密集物體的檢測效果,雖然加入DIoU-NMS后帶來了0.5 GFLOPs的計算量,但從精度和計算量2個角度綜合考慮,本文選用疊加式裁剪和DIoU-NMS結合的方式。
為驗證第2級網(wǎng)絡關鍵點回歸方法對角度的檢測效果,將關鍵點回歸網(wǎng)絡與傳統(tǒng)圖像處理方法中的Hough變換、最小外接矩形法在角度誤差和推理時間上進行對比實驗,實驗結果如表3所示。
表3 不同角度求解方法的檢測結果Tab.3 Detection results of different angle solution methods
由表3可以看出,Hough變換求解傾斜角度時間為321.4 ms,最小外接矩形法求解傾斜角度時間為126.2 ms,本文提出的關鍵點回歸網(wǎng)絡的方法僅使用43.5 ms就完成了角度求解,且平均角度誤差小于其他2種方法。Hough變換根據(jù)物體的直線進行角度求解,若圖像中有其他干擾芯片出現(xiàn),檢測結果會大大降低;使用最小外接矩形算法時,需要對圖像先進行一定的降噪處理,該方法受圖像質量的影響較大。關鍵點回歸網(wǎng)絡利用較強的泛化能力,不需要對檢測圖像做其他處理就可以對不同類型的芯片進行檢測。
級聯(lián)后的模型大小為126.3 MB,比原始YOLOv3模型要小很多,完成1張大尺寸圖像的位置和角度檢測的時間為0.5 s,滿足排料需求。最后部署到Jetson Agx Xavier上,將檢測到的位置和角度傳送給后續(xù)的運動控制裝置。
本文從提高排料系統(tǒng)自動化裝配效率和排料準確度出發(fā),提出了1種級聯(lián)式卷積神經(jīng)網(wǎng)絡的芯片檢測方法。該方法采用級聯(lián)方式,分步檢測芯片的位置和角度,第1級網(wǎng)絡基于改進的YOLOv5s模型檢測芯片位置,并給第2級網(wǎng)絡提供輸入圖像。第2級網(wǎng)絡通過關鍵點回歸的方式,以更簡潔快速的方法求得芯片角度。針對大尺寸圖像設計了疊加式裁剪算法,在YOLOv5s的預測框篩選和數(shù)據(jù)整合階段加入了DIoU-NMS,提高了小目標和密集型目標的檢測精度。實驗結果表明,基于級聯(lián)式的芯片檢測方法的檢測精度高達94.6%,單張圖片的檢測時間為0.5 s,能夠滿足排料系統(tǒng)中對檢測精度和速度的要求。提升級聯(lián)網(wǎng)絡的檢測速度,設計輕量化模型結構將是下一階段的研究方向。