李 園,劉嘉程,王冬冬,王恩澤,趙亞鳳
(東北林業(yè)大學(xué), 哈爾濱 150040)
晶振在電路系統(tǒng)中為電路提供基本的頻率信號(hào),如果晶振沒(méi)有辦法正常工作,對(duì)整個(gè)設(shè)備與系統(tǒng)會(huì)產(chǎn)生極大的影響。在晶振生產(chǎn)過(guò)程中,晶振總會(huì)產(chǎn)生表面損傷、電極錯(cuò)位、引線缺失、無(wú)面膠或面膠覆蓋不均勻、水印等各種問(wèn)題,多個(gè)種類(lèi)的缺陷可能同時(shí)出現(xiàn)在同一個(gè)晶振上。目前,晶振檢測(cè)主要有以下2種方法:
1)人工目檢和功能測(cè)試。由于人眼容易疲倦,工人受外界影響干涉大,使得檢測(cè)效率低,錯(cuò)誤率高、生產(chǎn)所產(chǎn)生的人工成本高。人工方法可以將多個(gè)缺陷標(biāo)注分類(lèi)并反饋于生產(chǎn)端,針對(duì)不同缺陷問(wèn)題產(chǎn)生的生產(chǎn)環(huán)節(jié)進(jìn)行微調(diào),使得生產(chǎn)的晶振質(zhì)量保持較高的水準(zhǔn),實(shí)現(xiàn)精細(xì)化。
2)自動(dòng)光學(xué)檢測(cè)系統(tǒng)。其主要原理是把從光源反射回來(lái)的量與已經(jīng)編好程的標(biāo)準(zhǔn)進(jìn)行比較、分析和判斷。其優(yōu)點(diǎn)在于能夠快速地實(shí)現(xiàn)缺陷的判斷。但其缺點(diǎn)表現(xiàn)為其無(wú)法標(biāo)注缺陷的具體種類(lèi),因此無(wú)法及時(shí)反饋于生產(chǎn)端,此外在高倍數(shù)的放大情況下,細(xì)微的不同也會(huì)導(dǎo)致反射量的變化,需要圖片精度高,需要經(jīng)常地調(diào)試設(shè)備,且調(diào)試周期長(zhǎng)、無(wú)法長(zhǎng)期保持高精度檢測(cè),有不方便部署的弊端。
現(xiàn)有的2種方法缺陷本質(zhì)上在于多個(gè)缺陷的同時(shí)出現(xiàn),導(dǎo)致無(wú)法兼顧晶振檢測(cè)的速度、自動(dòng)進(jìn)行判斷記錄和對(duì)于生產(chǎn)端缺陷的及時(shí)反饋等3個(gè)要素。
早在十多年前,計(jì)算機(jī)視覺(jué)技術(shù)剛剛起步,文獻(xiàn)[1-2]就提出了用機(jī)器視覺(jué)方法代替人工進(jìn)行晶振檢測(cè)。但由于計(jì)算機(jī)算力不足,以及相關(guān)機(jī)械設(shè)備發(fā)展尚早,始終無(wú)法進(jìn)行高速清晰的識(shí)別并應(yīng)用于實(shí)際生產(chǎn)環(huán)境。目前隨著深度學(xué)習(xí)技術(shù)發(fā)展,已經(jīng)有學(xué)者將目標(biāo)檢測(cè)技術(shù)用于缺陷檢測(cè)。常用的目標(biāo)檢測(cè)算法分為2類(lèi):一類(lèi)是以SSD[3]和YOLO[4]為代表的一段式目標(biāo)檢測(cè)算法,這種算法不需要region proposal,經(jīng)過(guò)1次檢測(cè)即可以生成錨框,得到最終檢測(cè)結(jié)果,其速度較快,廣泛應(yīng)用于工業(yè)領(lǐng)域和視頻實(shí)時(shí)檢測(cè);另一類(lèi)是二段式檢測(cè)算法,主要代表有Faster R-CNN[5],Mask R-CNN[6]算法,這種算法首先進(jìn)行region proposals,然后對(duì)目標(biāo)進(jìn)行分類(lèi)識(shí)別,常常在小目標(biāo)檢測(cè)中得到廣泛應(yīng)用,其精度較高,但速度較慢,所以常用于圖片方面的處理識(shí)別等實(shí)時(shí)性要求不高的場(chǎng)景。目前已經(jīng)有多名學(xué)者利用目標(biāo)檢測(cè)技術(shù)進(jìn)行缺陷檢測(cè)。
為解決晶振檢測(cè)過(guò)程中人工處理受外界影響大、自動(dòng)光學(xué)檢測(cè)系統(tǒng)的部署需要高分辨率圖像且需要經(jīng)常調(diào)試的問(wèn)題,本文做了以下工作。提出了基于Yolov5的改進(jìn)算法,根據(jù)實(shí)際情況去除自適應(yīng)填充功能;在Neck中增加新的檢測(cè)尺度;借鑒加權(quán)雙向金字塔的結(jié)構(gòu)將Backbone中的特征信息引入Neck中進(jìn)行特征圖融合;改變其N(xiāo)eck部的激活函數(shù),加快收斂速度;在檢測(cè)部分引入注意力機(jī)制,增加通道間的聯(lián)系;通過(guò)libtorch框架進(jìn)行編譯和推理,進(jìn)行集成的部署和系統(tǒng)設(shè)計(jì)。系統(tǒng)框架圖如圖1所示。
圖1 系統(tǒng)框架圖
1) 多缺陷指的是多個(gè)缺陷、多類(lèi)缺陷可能同時(shí)出現(xiàn)于同一個(gè)晶振上。目標(biāo)檢測(cè)技術(shù)的核心任務(wù)是“定位”問(wèn)題和“分類(lèi)”問(wèn)題。應(yīng)用于缺陷檢測(cè)方面的優(yōu)點(diǎn)在于可以實(shí)現(xiàn)定位缺陷用錨框標(biāo)出,實(shí)現(xiàn)不同錨框區(qū)域中不同缺陷的分類(lèi)。這是傳統(tǒng)方法所不具備的優(yōu)點(diǎn)
在晶振檢測(cè)問(wèn)題下,遇到的問(wèn)題是如何提升缺陷區(qū)域較小缺陷的定位能力和分類(lèi)能力,即小目標(biāo)檢測(cè)能力。小目標(biāo)的定義有2種:一是指所占絕對(duì)像素少;二是指相對(duì)來(lái)說(shuō)在整幅圖片中所占的大小相對(duì)較小。晶振檢測(cè)任務(wù)中,吸嘴印和電極錯(cuò)位容易漏檢的問(wèn)題即是小目標(biāo)檢測(cè)能力不足的體現(xiàn)。
通常情況下,模型是通過(guò)卷積來(lái)提取原始圖片像素中包含的特征的,感受野就反應(yīng)了單個(gè)高層特征的信息與原始像素之間的對(duì)應(yīng)關(guān)系,在網(wǎng)絡(luò)卷積核確定的情況下,隨著網(wǎng)絡(luò)層數(shù)的增加,單個(gè)高層特征反應(yīng)原始圖片像素的范圍就越大,視野就越寬,高層信息就越能夠反應(yīng)原始圖片中物體的宏觀輪廓。然后,隨著網(wǎng)絡(luò)層數(shù)的增加和感受野的變大,微觀的信息就會(huì)丟失,這樣對(duì)于小目標(biāo)的信息就會(huì)聚合到一個(gè)點(diǎn),小目標(biāo)原本包含的像素就少,隨著感受野的增加,聚合后的特征就更少了,比如10*10像素的小目標(biāo),經(jīng)過(guò)卷積后的特征可能就只有1*1,甚至出現(xiàn)多個(gè)10*10像素的小目標(biāo),經(jīng)過(guò)多次卷積核,合并成了一個(gè)特征。這樣,小目標(biāo)就無(wú)法識(shí)別。因此,深層的多次卷積,對(duì)于小目標(biāo)的微觀特征實(shí)際上是不利的。
2) 當(dāng)前深度學(xué)習(xí)不斷發(fā)展,雖然深度學(xué)習(xí)技術(shù)在工業(yè)界不斷應(yīng)用,但相比于學(xué)術(shù)界的發(fā)展,如何部署于工業(yè)界仍是需要解決的問(wèn)題,在圖像學(xué)中,GPU的計(jì)算速度更快,更適合于進(jìn)行深度學(xué)習(xí)。但是在工業(yè)界中,缺少GPU的加持,且在工業(yè)界中GPU型號(hào)并不靠前,所以需要考慮模型的輕量化。
綜合以上考慮,本文采用Yolov5進(jìn)行算法的改進(jìn)。
整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)由輸入端、主干網(wǎng)絡(luò)、Neck網(wǎng)絡(luò)、Head輸出層所組成。Yolov5s結(jié)構(gòu)框圖[7]如圖2所示。
圖2 Yolov5s結(jié)構(gòu)框圖
輸入端Yolov5s采用了Mosaic方法進(jìn)行數(shù)據(jù)增強(qiáng),增強(qiáng)魯棒性。采用自適應(yīng)填充的辦法,減少了信息冗余,進(jìn)一步提高運(yùn)行速度。
主干網(wǎng)絡(luò)Backbone通常由特征提取網(wǎng)絡(luò)構(gòu)成,其中典型網(wǎng)絡(luò)包括ResNet[8]、DenseNet[9]、EfficientNet[10],其主要的作用是提取特征。主干網(wǎng)絡(luò)引入了注意力機(jī)制[11],注意力機(jī)制的引入使神經(jīng)網(wǎng)絡(luò)能更好地提取特征[12],提高系統(tǒng)的精度。CSP結(jié)構(gòu)引入了與DenseNet相似的的跳層連接思想[13]。CSP結(jié)構(gòu)解決了其他大型卷積神經(jīng)網(wǎng)絡(luò)框架Backbone中網(wǎng)絡(luò)優(yōu)化的梯度信息重復(fù)問(wèn)題,既保證了推理速度和準(zhǔn)確率,又減小了模型尺寸。
Yolov5 的 Neck 部分采用了PANet結(jié)構(gòu)[14],Neck 主要用于生成特征金字塔。特征金字塔會(huì)增強(qiáng)模型對(duì)于不同縮放尺度對(duì)象的檢測(cè),從而能夠識(shí)別不同大小和尺度的同一個(gè)物體。PANet結(jié)構(gòu)是在FPN的基礎(chǔ)上引入了 Bottom-up path augmentation 結(jié)構(gòu)。PANet在 FPN 的基礎(chǔ)上加了一個(gè)自底向上方向的增強(qiáng),使得頂層 feature map 也可以享受到底層帶來(lái)的豐富的位置信息,從而提升了大物體的檢測(cè)效果。
Head 進(jìn)行最終檢測(cè)部分,輸出的特征圖上會(huì)應(yīng)用錨定框,并生成帶有類(lèi)別概率、置信度得分和包圍框的最終輸出向量。
1.3.1Input模塊的優(yōu)化
加入裁剪模塊并啟用多尺度大小訓(xùn)練。在Yolov5s算法中,輸入圖片會(huì)自適應(yīng)大小為640*640的大小,受限于相機(jī)的配置參數(shù),無(wú)法拍攝為正方形圖片,圖片原大小為2 480*2 056,在自適應(yīng)縮放圖片大小的過(guò)程中,會(huì)在2 056的邊長(zhǎng)處增加黑色長(zhǎng)度,然后縮放至640*640,這樣的處理無(wú)意間增加了多余的冗余信息,對(duì)于訓(xùn)練并不友好,在dataset模塊中,根據(jù)所拍攝圖片的大小,加入裁剪模塊,將整幅圖像裁剪為2 056*2 056的比例。訓(xùn)練圖片輸入大小對(duì)比如圖3所示。
圖3 訓(xùn)練圖片輸入大小對(duì)比
這一改進(jìn)同時(shí)增加了一個(gè)圖中多個(gè)缺陷區(qū)域的相對(duì)面積,改善目標(biāo)較小難以定位的難題。在一定程度上這一改進(jìn)增強(qiáng)了算法的定位能力。
1.3.2Backbone和Neck的改進(jìn)
由上文描述的問(wèn)題可知,要進(jìn)一步提高目標(biāo)檢測(cè)的精度,既要確保網(wǎng)絡(luò)層次夠深,又要避免過(guò)度降維以至于損失特征的問(wèn)題,在以下的改進(jìn)中,主要思想是增加新的檢測(cè)尺度和特征圖融合的方法來(lái)增加特征并進(jìn)一步增加網(wǎng)絡(luò)深度。
在晶振檢測(cè)的環(huán)境背景下,很多目標(biāo)本身就很小,原始的Yolov5在檢測(cè)過(guò)程中可能會(huì)被覆蓋或是忽略,為了解決小目標(biāo)檢測(cè)的問(wèn)題,在主干網(wǎng)絡(luò)和頸部網(wǎng)絡(luò)的部分增加新的尺度檢測(cè)層連接。通過(guò)新的卷積采樣的增加,使得新的尺度檢測(cè)的增加,更加適用于密集出現(xiàn)的缺陷。新的檢測(cè)層參數(shù)經(jīng)過(guò)卷積和通道數(shù)的變化,新的檢測(cè)層為160*160*255。新添加的檢測(cè)層在Neck中生成新的特征金字塔結(jié)構(gòu),原本的特征金字塔層數(shù)較少,新的檢測(cè)層的特征金字塔層數(shù)將更多,將更小的目標(biāo)信息映射。
以上進(jìn)行的增加尺度檢測(cè)模塊改進(jìn)主要是為了加強(qiáng)網(wǎng)絡(luò)的特征融合能力,但是同時(shí)存在問(wèn)題是所有的特征信息都將是處理后得到的,原始信息很少參與到特征金字塔的生成。為了進(jìn)一步減少偏差,增強(qiáng)特征圖的融合信息能力,使得主干網(wǎng)絡(luò)中的原始特征信息參與到學(xué)習(xí)訓(xùn)練學(xué)習(xí)中,在此借鑒了加權(quán)雙向特征金字塔(BiFPN)[15]中的結(jié)構(gòu),進(jìn)行特征融合。增強(qiáng)不同尺寸的特征圖,不同信息量的特征圖的融合。BiFPN的結(jié)構(gòu)圖如圖4所示,在此結(jié)構(gòu)中,原本是將不同的特征圖按照不同的權(quán)值進(jìn)行交融,在此次的改進(jìn)中,主要借鑒其結(jié)構(gòu)思想進(jìn)行改進(jìn)。改進(jìn)后的yolov5結(jié)構(gòu)圖如圖5所示。
圖4 BiFPN結(jié)構(gòu)圖
圖5 Backbone與Neck部分的聯(lián)合改進(jìn)
圖5中顏色最深的模塊是新添加的小目標(biāo)檢測(cè)層,較粗的連接線是為了添加此模塊所進(jìn)行的連接,此結(jié)構(gòu)增加了一層不同尺度的檢測(cè),旨在增加小目標(biāo)檢測(cè)能力。雖然增加了小目標(biāo)的檢測(cè)層,但是本身結(jié)構(gòu)仍然是PANet的普通結(jié)構(gòu),在經(jīng)過(guò)處理后,會(huì)造成原始特征的丟失。
這一部分改進(jìn)特意增加了更適合檢測(cè)小目標(biāo)的小尺度檢測(cè)層,以改善在網(wǎng)絡(luò)深度過(guò)深時(shí)小目標(biāo)所攜帶的信息被稀釋。此后,在生成的新的特征金字塔結(jié)構(gòu)中進(jìn)行結(jié)構(gòu)改進(jìn),旨在將原始特征更多地引入,避免原始特征信息經(jīng)過(guò)多次處理后的丟失。相較于未改進(jìn),經(jīng)過(guò)改進(jìn)使得模型中的特征信息更多,增加定位能力,為檢測(cè)分類(lèi)提供幫助。
1.3.3Neck部分的改進(jìn)
在許多實(shí)驗(yàn)中使用Hard-swish激活函數(shù)都提高了模型的收斂速度,使得神經(jīng)網(wǎng)絡(luò)的性能得到很大的提高。H-Swish函數(shù)公式為:
Swish(x)=x·sigmoid(βx)
(1)
由上述公式可知,本函數(shù)具有非單調(diào)和有下界無(wú)上界的特點(diǎn),且計(jì)算量小,有助于加快收斂,增加模型的準(zhǔn)確程度。同時(shí)這一改進(jìn)有利于解決在深度學(xué)習(xí)中常見(jiàn)的區(qū)域最優(yōu)解問(wèn)題,幫助模型更快跳出區(qū)域最優(yōu)解。
1.3.4Predesition部分改進(jìn)
引入了ECA[16]注意力機(jī)制。注意力機(jī)制的有效性已經(jīng)被廣泛證明,ECA注意力機(jī)制在SE注意力機(jī)制的基礎(chǔ)上提出,其主要特點(diǎn)是在不降維前提下增加通道之間的聯(lián)系,并且不用對(duì)網(wǎng)絡(luò)的模型參數(shù)做出修改,可以隨時(shí)方便引用。其計(jì)算結(jié)構(gòu)如圖6所示。其中的GAP代表進(jìn)行全局池化操作,進(jìn)行卷積核大小為k的一維卷積操作,并經(jīng)過(guò)Sigmod函數(shù)得到不同的通道權(quán)重大小。
圖6 ECA注意力機(jī)制結(jié)構(gòu)圖
在1.3.3節(jié)的改進(jìn)中,在網(wǎng)絡(luò)結(jié)構(gòu)方面已經(jīng)進(jìn)行了多次特征圖的融合,特征圖的信息量相較于原網(wǎng)絡(luò)更多,為了讓通道之間相互關(guān)聯(lián),進(jìn)一步提高檢測(cè)精度,在輸出部分引入注意力機(jī)制,使得特征圖的注意力信息能被更好地利用。完整的改進(jìn)后結(jié)構(gòu)圖如圖7所示。
圖7 改進(jìn)模型圖
引入ECA注意力機(jī)制后,各個(gè)通道間相互關(guān)聯(lián),在特征信息增多的前提條件下,更有效地利用原有信息,且并沒(méi)有過(guò)多的增加計(jì)算量,使得檢測(cè)的分類(lèi)能力提升,能更加準(zhǔn)確地識(shí)別出缺陷的種類(lèi)。增強(qiáng)了檢測(cè)多缺陷時(shí)的分類(lèi)能力。
本次實(shí)驗(yàn)相機(jī)型號(hào)為T(mén)S5MCL-156M,生產(chǎn)廠家為合肥??乒怆娍萍脊煞萦邢薰?在相機(jī)的配置過(guò)程中,要在個(gè)人計(jì)算機(jī)安裝圖像采集卡,為最大限度貼合實(shí)際生產(chǎn)環(huán)境,安裝圖像采集卡的個(gè)人計(jì)算機(jī)不再另外配有顯卡,采用英特爾i9cpu進(jìn)行推理運(yùn)算。相機(jī)及圖像采集卡如圖8所示。
圖8 實(shí)驗(yàn)場(chǎng)景搭建
進(jìn)行訓(xùn)練的個(gè)人計(jì)算機(jī)配置:網(wǎng)絡(luò)語(yǔ)言基于python3.7的Pytorch框架實(shí)現(xiàn),軟件平臺(tái)為Pycharm,主機(jī)基于linux系統(tǒng)配置,共16G內(nèi)存,cpu配置為i9,顯卡為NVIDIA GEFORCE GTX1080Ti,顯存為11G,CUDA版本為10.2。
本次采用圖像均用工業(yè)相機(jī)進(jìn)行采集照片共2 142張,其中700張為工廠環(huán)境進(jìn)行采集的,其余在實(shí)驗(yàn)室自行采集,以2種圖片混合進(jìn)行數(shù)據(jù)集制作。
工業(yè)環(huán)境中對(duì)于結(jié)果影響最大的是光照因素,目標(biāo)檢測(cè)技術(shù)更像是模仿人眼在一定程度上進(jìn)行定位和分類(lèi)2個(gè)任務(wù)。雖然室內(nèi)是一個(gè)相對(duì)封閉且光源相對(duì)穩(wěn)定的空間,但是流水線不同的檢測(cè)位置仍然會(huì)影響晶振的成像,根據(jù)實(shí)驗(yàn),在放大倍數(shù)很大但不使用補(bǔ)光燈的情況下,往往需要不斷地調(diào)節(jié)鏡頭以及設(shè)備的位置來(lái)保證成像的合格。這也是自動(dòng)光學(xué)檢測(cè)設(shè)備對(duì)晶振無(wú)法保持高精度的檢測(cè),并且必須經(jīng)常重新調(diào)試設(shè)備的原因。為了保持設(shè)備在一定范圍內(nèi)的穩(wěn)定性,所以采用圈型的補(bǔ)光燈將光照強(qiáng)度控制在一定程度內(nèi)。
數(shù)據(jù)集標(biāo)注,標(biāo)注格式有yolo、VOC等格式,為了方便使用,此處標(biāo)注格式為VOC格式,標(biāo)注完成后,通過(guò)data文件夾下的txt_make.py和label_make.py轉(zhuǎn)為指定的格式要求。缺陷分類(lèi)共5類(lèi),分別為吸嘴印、電極錯(cuò)位、引線缺失、水印、無(wú)面膠或面膠不均。晶振出現(xiàn)的缺陷種類(lèi)如圖9所示。
圖9 晶振典型缺陷檢出
各種典型缺陷的特征描述如下:
1) 吸嘴印:表現(xiàn)為在電極上(上圖中面積最大的灰白色或灰黑色部分)與周遭顏色不同的小黑塊或者黑點(diǎn),大小為0.2~0.8 mm的不規(guī)則區(qū)域。
2) 引線缺失:表現(xiàn)為面膠(圖中的圓形黑色部分)與晶片(圖9左下的圓形面膠與電極之間的亮銀色部分)中間呈現(xiàn)出未分層的現(xiàn)象。
3) 電極錯(cuò)位:表現(xiàn)為電極與晶片的不對(duì)齊,大小不定。
4) 面膠問(wèn)題:面膠未呈現(xiàn)相互對(duì)稱(chēng)或接近于完整圓的狀態(tài)。
5) 水印:在黑色的的晶振電極上呈現(xiàn)出白色的小圓。其大小通常為0.2~0.4 mm的圓。
多缺陷可能同時(shí)出現(xiàn)在同一晶振,同一缺陷也可能反復(fù)出現(xiàn)在同一個(gè)晶振的不同區(qū)域。數(shù)據(jù)集劃分比例采用1:9劃分訓(xùn)練集與驗(yàn)證集,除2142張缺陷標(biāo)記圖片外,其中插入70張無(wú)缺陷晶振圖片于訓(xùn)練集,以提高模型的魯棒性和泛化性。
本文中主要采用mosaic數(shù)據(jù)增強(qiáng)技術(shù), mosaic主要采用多張圖片隨機(jī)裁剪、縮放、翻轉(zhuǎn)后,再隨機(jī)排列拼接形成1張圖片,實(shí)現(xiàn)豐富數(shù)據(jù)集的同時(shí),增加了小樣本目標(biāo),提升網(wǎng)絡(luò)的訓(xùn)練速度。訓(xùn)練完成后,重新采集100張圖片進(jìn)行驗(yàn)證,根據(jù)評(píng)估參數(shù)評(píng)估試驗(yàn)結(jié)果。
主要用以下4個(gè)指標(biāo)對(duì)實(shí)驗(yàn)進(jìn)行評(píng)估。
1) 精確率P(Precession),其計(jì)算公式為:
式中:TP表示把正類(lèi)預(yù)測(cè)為正類(lèi);FP表示表示把負(fù)類(lèi)預(yù)測(cè)為正類(lèi)。參數(shù)表示正確預(yù)測(cè)占全部預(yù)測(cè)為正的的比例。
2) 召回率R(Recall),其表示預(yù)測(cè)為正占全部樣本的比例,FN表示把正類(lèi)預(yù)測(cè)為負(fù)類(lèi)。其計(jì)算公式為:
3)mAP@0.5:0.95:AP表示的是單類(lèi)別的平均準(zhǔn)確度,mAP表示對(duì)所有類(lèi)別求均值,mAP@0.5:0.95表示在不同閾值下平均的mAP值。
4)Speed(cpu),其是預(yù)測(cè)在cpu上的表現(xiàn)速度。為考慮部署過(guò)程中的實(shí)際應(yīng)用,圖像的采集和其相關(guān)數(shù)據(jù)的存儲(chǔ)一定會(huì)耗費(fèi)時(shí)間,在沒(méi)有GPU加速的前提下,在cpu上的表現(xiàn)速度十分關(guān)鍵。
3.1.1實(shí)驗(yàn)超參數(shù)設(shè)計(jì)
將data文件夾下的mydata.yaml文件的類(lèi)別數(shù)改為5,分類(lèi)具體類(lèi)別為:“NG1、NG2、NG3、NG4、NG5,分別對(duì)應(yīng)不同的缺陷種類(lèi)。此次共5種缺陷,所以修改yolo5s.yaml文件類(lèi)別數(shù)為5,訓(xùn)練輪次為300,batchsize為8。SGD[17]優(yōu)化算法沒(méi)有使用動(dòng)量,容易陷入局部極值。使用Adam優(yōu)化算法[18],利用梯度的1階矩估計(jì)和2階矩估計(jì)動(dòng)態(tài)調(diào)節(jié)每個(gè)參數(shù)的學(xué)習(xí)率。此外打開(kāi)多尺度訓(xùn)練,超參數(shù)進(jìn)化的選項(xiàng)。
3.1.2改進(jìn)模型前后對(duì)比
實(shí)驗(yàn)中對(duì)ECA注意力機(jī)制的引入進(jìn)行了多次實(shí)驗(yàn),分別在預(yù)測(cè)部分、主干網(wǎng)絡(luò)部分和頸部網(wǎng)絡(luò)中進(jìn)行引入,但只有在預(yù)測(cè)部分,其有正優(yōu)化的效果,因此表1中列出的僅僅是在預(yù)測(cè)部分引入的效果。
表1 不同改動(dòng)所產(chǎn)生的效果
改進(jìn)模型部分分別以以下字母代表改進(jìn)部分。O代表未進(jìn)行任何改進(jìn)進(jìn)行訓(xùn)練的模型網(wǎng)絡(luò),I代表改進(jìn)Input模塊,H代表主干網(wǎng)絡(luò)和頸部網(wǎng)絡(luò)的聯(lián)合改進(jìn),N代表改動(dòng)Neck部分的激活函數(shù),E代表引入注意力機(jī)制。例如I代表改進(jìn)Input模塊的模型。表1為分別改進(jìn)后的模型訓(xùn)練結(jié)果。
從表1可以得出,優(yōu)化的每一部分都為正向優(yōu)化,在損失可接受范圍內(nèi)的計(jì)算速度的同時(shí),在頸部網(wǎng)絡(luò)和主干網(wǎng)絡(luò)進(jìn)行特征圖的融合帶來(lái)了巨大的提升效果。在Input網(wǎng)絡(luò)方面雖然成效不大,但是也仍然帶來(lái)了一定的提升。此對(duì)比實(shí)驗(yàn)成功證明了改進(jìn)網(wǎng)絡(luò)所進(jìn)行優(yōu)化是可行的。尤其是在進(jìn)行特征圖的融合后,在計(jì)算量增大有限的前提下,使得檢測(cè)的精度大幅度地提升。
最終將4種改進(jìn)同時(shí)進(jìn)行,改進(jìn)后的模型命名為IHNE_Yolov5s,改進(jìn)前后的實(shí)驗(yàn)結(jié)果如表2所示。
表2 改進(jìn)前后評(píng)估對(duì)比
在實(shí)驗(yàn)中,改進(jìn)后的網(wǎng)絡(luò)在一定程度上犧牲了運(yùn)算時(shí)間,這是為了提升精度不可避免地一部分,但其在cpu上地運(yùn)算速度表現(xiàn)仍然控制在0.3 s以?xún)?nèi),其準(zhǔn)確率提升了約7%,召回率提升了2%左右,證明了本文改進(jìn)的有效性。
此外,在訓(xùn)練過(guò)程中發(fā)現(xiàn),召回率的收斂速度相似,但是總體上改進(jìn)后的網(wǎng)絡(luò)收斂速度更快,圖10為訓(xùn)練過(guò)程中Yolov5s改進(jìn)前后的Pression曲線變化,通過(guò)觀察曲線趨勢(shì),發(fā)現(xiàn)改進(jìn)后的網(wǎng)絡(luò)收斂速度更快,證明了雖然有計(jì)算量的加大,在進(jìn)一步數(shù)據(jù)集擴(kuò)充情況下,我們可以適當(dāng)減少訓(xùn)練輪次,將其更快更準(zhǔn)確地應(yīng)用于缺陷的檢測(cè)。
圖10 改進(jìn)前后的精度對(duì)比
3.1.3人工檢測(cè)結(jié)果對(duì)比
本次人工檢測(cè)過(guò)程共采集100張圖片,其中50張由工廠工人采集,50張?jiān)趯?shí)驗(yàn)室進(jìn)行采集。采集到的圖片缺陷由雙方共同認(rèn)定缺陷數(shù)量和種類(lèi)。其中,工人檢測(cè)由另外一批不參加圖像采集的工人進(jìn)行識(shí)別,確保實(shí)驗(yàn)結(jié)果不受干擾。實(shí)驗(yàn)結(jié)果如表3所示。
表3 人工檢測(cè)結(jié)果
從表3可以看出,利用改進(jìn)后的模型進(jìn)行檢測(cè)缺陷是可行的,在工人未長(zhǎng)時(shí)間工作的前提下,總體人工檢出的準(zhǔn)確率仍然低于系統(tǒng)檢出的準(zhǔn)確率,其中3項(xiàng)缺陷,系統(tǒng)檢出比人工更高,系統(tǒng)檢出率全部高于95%。根據(jù)檢出比來(lái)看,無(wú)論哪一類(lèi)缺陷,系統(tǒng)都能夠準(zhǔn)確識(shí)別,除電極錯(cuò)位以外,系統(tǒng)檢測(cè)比人工更加準(zhǔn)確可靠。系統(tǒng)能準(zhǔn)確地識(shí)別錯(cuò)誤,根據(jù)圖10所示,當(dāng)多缺陷出現(xiàn)在同一晶振上時(shí),也可以準(zhǔn)確判斷識(shí)別。表明本文給出的方法能成功地做到精確識(shí)別,精準(zhǔn)分類(lèi)。
模型部署過(guò)程中首先進(jìn)行模型剪枝工作,原Yolov5模型已經(jīng)很小,但其仍然包括了反饋部分進(jìn)行l(wèi)oss的計(jì)算,在剪枝過(guò)程中,僅保留其前向計(jì)算部分和訓(xùn)練參數(shù)部分,進(jìn)行l(wèi)ibtorch的推理工作。主要步驟如下:① 進(jìn)行opencv安裝;② 對(duì)項(xiàng)目進(jìn)行l(wèi)ibtorch環(huán)境的配置;③ 生成onnx中間文件;④ 編譯文件,進(jìn)行推理加速。
本文界面采用QT進(jìn)行界面的編寫(xiě),并最終集成,這樣做的好處是每一個(gè)函數(shù)部分相對(duì)獨(dú)立,后期仍然可以基于此界面添加其他功能。在編寫(xiě)過(guò)程中,引入中文,實(shí)現(xiàn)缺陷中文名稱(chēng)的顯示,使得方便統(tǒng)計(jì)。主要包含了圖像讀取以及預(yù)測(cè)2個(gè)功能模塊,圖像讀取包含2種方式:一種是通過(guò)程序接口與工業(yè)相機(jī)進(jìn)行連接,直接從工業(yè)相機(jī)中讀取晶振圖像;另一種是通過(guò)讀取計(jì)算機(jī)本地存儲(chǔ)的圖像,通過(guò)“選擇文件夾”來(lái)打開(kāi)圖片,并通過(guò)“上一張”和“下一張”按鈕來(lái)選擇文件夾里的圖像。
預(yù)測(cè)模塊將圖像輸入進(jìn)網(wǎng)絡(luò)并進(jìn)行預(yù)測(cè)以及生成預(yù)測(cè)框,并將對(duì)應(yīng)缺陷位置顯示出來(lái),將預(yù)測(cè)結(jié)果顯示在文本框內(nèi),這樣就可以清晰地顯示出晶振具體出現(xiàn)的缺陷,預(yù)測(cè)結(jié)果效果圖如圖11所示。
圖11 檢測(cè)效果圖
同時(shí)在預(yù)測(cè)過(guò)程中,后臺(tái)會(huì)自動(dòng)統(tǒng)計(jì)缺陷的種類(lèi)及累計(jì)的個(gè)數(shù)生成csv文件,csv文件中主要包括圖片缺陷檢測(cè)種類(lèi)的總數(shù)統(tǒng)計(jì)以及缺陷圖片的位置路徑。方便將其反饋于生產(chǎn)端,使得其生產(chǎn)工藝進(jìn)一步提高,減少不良品的百分比。
1) 以電子工業(yè)相機(jī)拍攝晶振照片進(jìn)行數(shù)據(jù)采集,在拍攝過(guò)程中適度調(diào)整光照強(qiáng)度,在訓(xùn)練過(guò)程中進(jìn)行反轉(zhuǎn)裁剪等數(shù)據(jù)增強(qiáng)。
2) 為解決晶振檢測(cè)中細(xì)小的表面損傷和電極錯(cuò)位難以檢出的情況,對(duì)模型進(jìn)行強(qiáng)化改進(jìn),保留其輕量化的同時(shí),增強(qiáng)了定位和分類(lèi)能力,實(shí)現(xiàn)了檢出率高于95%,單張速度小于0.3 s,實(shí)現(xiàn)檢測(cè)精細(xì)化和高速化。
3) 根據(jù)工廠需求設(shè)計(jì)可視化界,進(jìn)行模型剪枝加速,并將模型、相機(jī)控制程序和檢錯(cuò)統(tǒng)計(jì)的程序集成,實(shí)現(xiàn)晶振檢測(cè)的精細(xì)化管理。
鳴謝:在此特別感謝應(yīng)達(dá)利電子股份有限公司的合作,為本次實(shí)驗(yàn)提供數(shù)據(jù)集支持。