曾 凱,李 響,賈建梅,文繼鋒,王 翔
(南京南瑞繼保電氣有限公司,南京 211102)
隨著印刷電路板行業(yè)的迅速發(fā)展,PCB 板的質(zhì)量檢測(cè)是各企業(yè)非常重視的環(huán)節(jié).目前,主流的檢測(cè)方法是采用人工目檢的方式或者采用基于傳統(tǒng)機(jī)器視覺的PCB 缺陷檢測(cè)(automatic optical inspection,AOI)方式.人工目檢的缺點(diǎn)是顯而易見的,不僅檢測(cè)準(zhǔn)確率不高、還耗費(fèi)大量的人力物力,不是一種很好的應(yīng)用方案.AOI的檢測(cè)方式檢測(cè)速度快、無(wú)損傷,相比于人工目檢,其檢測(cè)范圍更寬、檢測(cè)精度更高.目前AOI的檢測(cè)方法大都依賴于傳統(tǒng)的機(jī)器視覺技術(shù),王玉萍等[1]對(duì)參考圖像使用邊緣檢測(cè)算子提取特征,與待測(cè)缺陷圖像匹配得出缺陷區(qū)域.陳壽宏等[2]先利用方向梯度直方圖(HOG)對(duì)待檢測(cè)的焊點(diǎn)圖像提取形狀紋理等特征,接著使用支持向量機(jī)(SVM)并選擇合適的核函數(shù)進(jìn)行初步分類,對(duì)誤檢焊點(diǎn)采用HOG+SVM 多分類算法進(jìn)行二次分類.
受限于傳統(tǒng)機(jī)器視覺算法的局限性,AOI的檢測(cè)方式還是需要通過(guò)復(fù)雜的參數(shù)調(diào)整與不斷的人工修正來(lái)達(dá)到較好的檢測(cè)效果,而且為了防止漏掉焊接異常的PCB,往往會(huì)將檢測(cè)參數(shù)門檻設(shè)置較高值,這樣會(huì)產(chǎn)生大量的焊接異常誤報(bào)信息,此時(shí)需要經(jīng)驗(yàn)豐富的生產(chǎn)人員去判斷焊接異常信息是否確實(shí)為誤報(bào)信息,會(huì)消耗大量的人力,且檢測(cè)效率不高.
隨著人工智能技術(shù)日益發(fā)展,以深度學(xué)習(xí)為代表的機(jī)器學(xué)習(xí)技術(shù)在圖像識(shí)別領(lǐng)域得到廣泛關(guān)注[3].將基于深度學(xué)習(xí)的圖像分析技術(shù)應(yīng)用在PCB 缺陷檢測(cè)領(lǐng)域具有非常廣闊的前景.王永利等[4]先采用差分算法提取圖像中的缺陷區(qū)域,再設(shè)計(jì)一個(gè)結(jié)構(gòu)簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò)用于缺陷特征的提取及分類,實(shí)現(xiàn)了PCB上缺陷的檢測(cè),但是該方法中缺陷區(qū)域檢測(cè)任務(wù)及分類任務(wù)是割裂開的,且特征提取網(wǎng)絡(luò)簡(jiǎn)單,對(duì)于復(fù)雜場(chǎng)景下的特征提取能力不足.孫燦等[5]同樣是采用差分算法來(lái)識(shí)別缺陷區(qū)域,其采用了結(jié)構(gòu)相對(duì)更復(fù)雜的Inception-ResNet-v2 分類網(wǎng)絡(luò)來(lái)提取更多高層次的特征,但在部分圖像中存在缺陷區(qū)域較小且形狀相近的情況,實(shí)際應(yīng)用識(shí)別準(zhǔn)確率還有待提升.耿振宇[6]提出了應(yīng)用Faster R-CNN 算法來(lái)對(duì)PCB 表面進(jìn)行缺陷檢測(cè),以解決傳統(tǒng)網(wǎng)絡(luò)對(duì)小目標(biāo)的識(shí)別效果較差的問(wèn)題,該算法可以同時(shí)進(jìn)行分類與回歸的任務(wù),但是網(wǎng)絡(luò)冗余度較高,推理效率方面不太理想,對(duì)硬件資源要求較高,部署應(yīng)用的條件較為苛刻.
為了提升深度學(xué)習(xí)模型檢測(cè)識(shí)別的準(zhǔn)確度,如今主流的檢測(cè)算法往往會(huì)采用復(fù)雜且深層次的網(wǎng)絡(luò)結(jié)構(gòu),伴隨而來(lái)的是龐大的計(jì)算量及硬件資源的占用,工業(yè)部署應(yīng)用的條件比較苛刻.因此,為了更好的滿足工業(yè)部署應(yīng)用的要求,一方面需要采用推理效率高、檢測(cè)效果好的深度學(xué)習(xí)檢測(cè)算法,另一方面還需要對(duì)檢測(cè)模型進(jìn)行壓縮優(yōu)化.
深度學(xué)習(xí)模型的壓縮優(yōu)化技術(shù)[7,8]是指利用神經(jīng)網(wǎng)絡(luò)參數(shù)的冗余性和網(wǎng)絡(luò)結(jié)構(gòu)的冗余性來(lái)精簡(jiǎn)模型,在不影響任務(wù)完成度的情況下,得到參數(shù)量更少、結(jié)構(gòu)更精簡(jiǎn)的模型.
綜合上述現(xiàn)狀,本文以深度學(xué)習(xí)目標(biāo)檢測(cè)技術(shù)為核心思想,應(yīng)用工業(yè)界綜合表現(xiàn)優(yōu)秀的YOLOv3-spp目標(biāo)檢測(cè)算法來(lái)構(gòu)建焊接缺陷檢測(cè)模型,并且為了提升檢測(cè)效率、降低部署成本進(jìn)行了模型的裁剪優(yōu)化.基于該優(yōu)化算法設(shè)計(jì)了PCB 焊接缺陷檢測(cè)方案,開發(fā)了PCB-Checker 焊接缺陷檢測(cè)軟件.
基于深度學(xué)習(xí)目標(biāo)檢測(cè)技術(shù)的智能圖像分析功能是本軟件的實(shí)現(xiàn)關(guān)鍵技術(shù)之一.缺陷檢測(cè)模型的好壞直接影響到PCB 板上焊接缺陷的識(shí)別準(zhǔn)確度及識(shí)別速度,采用優(yōu)秀的目標(biāo)檢測(cè)算法、融合以各種模型壓縮優(yōu)化和加速手段,可以極大的提升模型的健壯度、泛化能力及推理效率.
本文基于以下步驟實(shí)現(xiàn)缺陷檢測(cè)模型的訓(xùn)練及部署,整體流程圖如圖1所示.
圖1 基于深度學(xué)習(xí)的缺陷檢測(cè)模型的訓(xùn)練及部署流程圖
基于AOI 機(jī)器識(shí)別導(dǎo)出的大量有焊接缺陷的圖像樣本,建立初始樣本庫(kù).對(duì)存在有焊接缺陷的圖像樣本進(jìn)行人工分類.本文中,將焊接缺陷共分為以下13 類:芯片虛焊、電阻電容虛焊、少錫、橋接、偏移、管腳偏移、缺件、反貼、電阻立碑、芯片立碑、電容立碑、側(cè)立和缺錫.統(tǒng)計(jì)樣本庫(kù)中各分類的樣本數(shù)量,梳理出樣本庫(kù)中的正負(fù)樣本、難易樣本.針對(duì)少分類、難識(shí)別的圖像樣本,通過(guò)復(fù)制圖像后的隨機(jī)數(shù)據(jù)增強(qiáng)方法來(lái)擴(kuò)充樣本得到分類相對(duì)均衡的訓(xùn)練樣本庫(kù).
采用的數(shù)據(jù)增強(qiáng)方法包括光學(xué)變換、幾何變換、增加噪聲、數(shù)據(jù)源擴(kuò)充等4 大類方法.其中,光學(xué)變換包括亮度、對(duì)比度等調(diào)節(jié)方法;幾何變換包括擴(kuò)展、裁剪和鏡像等操作方法;增加噪聲表示在原始圖像上增加一定的擾動(dòng),比如高斯噪聲;數(shù)據(jù)源擴(kuò)充表示將檢測(cè)的目標(biāo)背景進(jìn)行替換.
利用專家經(jīng)驗(yàn)對(duì)訓(xùn)練樣本庫(kù)中焊接缺陷的關(guān)鍵區(qū)域使用開源工具進(jìn)行人工標(biāo)注,標(biāo)注后使用腳本轉(zhuǎn)換形成YOLOv3-spp 算法支持的標(biāo)注文件.訓(xùn)練樣本庫(kù)按4:1的比例隨機(jī)建立訓(xùn)練樣本集和測(cè)試樣本集.
目標(biāo)檢測(cè)領(lǐng)域的深度學(xué)習(xí)方法[9,10]主要分為兩類:two-stage的目標(biāo)檢測(cè)算法;one-stage的目標(biāo)檢測(cè)算法.前者是先由算法生成一系列作為樣本的候選框,再通過(guò)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行樣本分類;后者則不用產(chǎn)生候選框,直接將目標(biāo)邊框定位的問(wèn)題轉(zhuǎn)化為回歸問(wèn)題處理.相對(duì)來(lái)說(shuō)two-stage 在檢測(cè)準(zhǔn)確率和定位精度上占優(yōu),one-stage 在算法速度上占優(yōu).YOLO 系列算法[11]在實(shí)際應(yīng)用中是one-stage 目標(biāo)檢測(cè)方法中性能及精度最好的方法之一.YOLOv3[12,13]是YOLO 系列中成熟且優(yōu)秀的算法,它整合了大量的計(jì)算機(jī)視覺前沿技術(shù),能顯著改善目標(biāo)檢測(cè)的性能.YOLOv3-spp 算法在標(biāo)準(zhǔn)的YOLOv3 算法基礎(chǔ)上增加了SPP 模塊,該模塊借鑒了空間金字塔的思想,通過(guò)SPP 模塊實(shí)現(xiàn)了局部特征和全局特征的融合,豐富了特征圖的表達(dá)能力.尤其是對(duì)于YOLOv3 這種復(fù)雜的多目標(biāo)檢測(cè),YOLOv3-spp算法相比YOLOv3 標(biāo)準(zhǔn)算法在精度等指標(biāo)上都有幾個(gè)百分點(diǎn)的提升.
本文采用Ultralytics 官方提供的PyTorch 框架下的YOLOv3-spp 開源算法,在訓(xùn)練樣本集中訓(xùn)練得到中間模型文件.
在測(cè)試樣本集中,對(duì)中間模型文件進(jìn)行模型評(píng)估,評(píng)估指標(biāo)綜合考慮深度學(xué)習(xí)模型的mAP (多分類平均精度)、Precision (準(zhǔn)確率)、Recall (召回率)等主流指標(biāo).如果評(píng)估指標(biāo)未達(dá)到技術(shù)規(guī)范或推廣應(yīng)用的要求,針對(duì)指標(biāo)效果不佳的分類采取各類優(yōu)化方法,比如細(xì)分類、重新標(biāo)注、數(shù)據(jù)增強(qiáng)等方式來(lái)重新建立訓(xùn)練樣本集和測(cè)試樣本集.通過(guò)反復(fù)迭代訓(xùn)練、評(píng)估的過(guò)程,得到最優(yōu)的基礎(chǔ)模型文件及訓(xùn)練樣本庫(kù).
本文設(shè)置標(biāo)準(zhǔn)訓(xùn)練的epoch為250 輪,訓(xùn)練結(jié)果如表1所示.本文表格中,P表示準(zhǔn)確率、R表示召回率、mAP@0.5 表示在交并比為0.5 時(shí)的多分類平均精度、Params 表示參數(shù)量、Size of weights 表示模型文件的大小、Infer_time 表示單張圖像在硬件配置為Tesla T4的GPU 服務(wù)器上的推理耗時(shí).
表1 標(biāo)準(zhǔn)訓(xùn)練模型的參數(shù)
稀疏化訓(xùn)練就是精度和稀疏度的博弈過(guò)程,即需要保證稀疏后的模型在保持高精度的同時(shí)實(shí)現(xiàn)高稀疏度.
本文采用L1 正則化施加到BN 層的縮放因子γ上的方法來(lái)進(jìn)行稀疏訓(xùn)練[14].L1 正則化可以對(duì)模型參數(shù)進(jìn)行限制,產(chǎn)生稀疏化的模型,同時(shí)增加模型的泛化能力.在YOLO 算法的損失函數(shù)中疊加了針對(duì)縮放因子γ的L1 正則表達(dá)式,因此在訓(xùn)練過(guò)程中很多通道的縮放因子γ正則項(xiàng)都會(huì)逐漸趨于0.
設(shè)置epoch為350 輪,在訓(xùn)練集上進(jìn)行稀疏化訓(xùn)練.訓(xùn)練過(guò)程中BN 層權(quán)值的分布情況如圖2所示.圖2(a)為正常訓(xùn)練時(shí)的BN 權(quán)值變化圖,總體上是在1 附近的類正態(tài)分布;圖2(b)為稀疏訓(xùn)練BN 權(quán)值變化圖,訓(xùn)練過(guò)程中大部分值逐漸被壓到接近0,BN 層對(duì)應(yīng)通道輸出值也近似于常量,因此非常適合于后續(xù)的剪枝過(guò)程.
圖2 正常訓(xùn)練和稀疏訓(xùn)練過(guò)程中的BN 權(quán)值值變化
稀疏化模型的評(píng)估結(jié)果如表2所示.
表2 稀疏化訓(xùn)練模型的參數(shù)
可以觀察到,在稀疏化訓(xùn)練后,模型的mAP@0.5指標(biāo)下降了3 個(gè)點(diǎn)左右,模型參數(shù)量、推理耗時(shí)等指標(biāo)基本不變.
模型剪枝[15,16]包括通道剪枝和層剪枝兩種類型,兩者都是利用BN 層的γ系數(shù)評(píng)價(jià)對(duì)應(yīng)通道的重要性來(lái)達(dá)到剪枝的目的.因此,稀疏訓(xùn)練是否充分將直接影響剪枝的效果.
通道剪枝的大致原理是,統(tǒng)計(jì)所有參與剪枝層的BN 參數(shù)γ權(quán)重值并進(jìn)行排序,依據(jù)剪枝率確定參數(shù)閾值,將所有小于閾值的通道全部減掉,如果有依賴則將依賴的對(duì)應(yīng)部分也剪掉.如果一層中所有的通道都需要被移除,為了保證網(wǎng)絡(luò)結(jié)構(gòu)不變,需保留剪枝參數(shù)所設(shè)置的最小通道值.
本文設(shè)置初始通道剪枝率為0.5,對(duì)剪枝后的模型在測(cè)試樣本集中進(jìn)行評(píng)估,與剪枝前的模型比較P、mAP@0.5 等綜合指標(biāo).剪枝率先以0.1的級(jí)差進(jìn)行嘗試性剪枝后評(píng)估,到了臨界值時(shí)再以0.01的級(jí)差進(jìn)行微調(diào),迭代剪枝并評(píng)估找到最佳的通道剪枝率參數(shù).即以犧牲最小的準(zhǔn)確率指標(biāo)為代價(jià),剪除更多的通道來(lái)提升模型性能,得到最佳的通道剪枝率參數(shù)及最佳的通道剪枝模型文件.
本文中,不同的通道剪枝率下檢測(cè)模型的參數(shù)如表3所示.
表3 不同通道剪枝率下模型的參數(shù)
可以觀察到,稀疏化模型在剪枝率為0.66 時(shí),通道剪枝過(guò)程達(dá)到“最佳剪枝點(diǎn)”,mAP@0.5 指標(biāo)僅下降0.01,參數(shù)量及模型文件大小均減少70%左右,單張圖片推理耗時(shí)下降為原來(lái)的60%左右.
通道剪枝能大大減小模型的參數(shù)和計(jì)算量,降低模型對(duì)資源的占用.層剪枝可以進(jìn)一步減小計(jì)算量,提高模型的推理速度.
YOLOv3 層剪枝是對(duì)每一個(gè)殘差單元中shortcut捷徑連接的前一個(gè)CBL (Conv+BN+Leaky_ReLU)的BN 層進(jìn)行評(píng)價(jià),對(duì)各層的γ均值進(jìn)行排序,取最小的進(jìn)行層剪枝.為保證YOLOv3 結(jié)構(gòu)完整,每剪一個(gè)shortcut 捷徑連接結(jié)構(gòu),會(huì)同時(shí)剪掉一個(gè)shortcut和它前面的兩個(gè)CBL 卷積層結(jié)構(gòu).
本文以全局剪枝率為0.66 時(shí)生成的通道剪枝模型文件為基礎(chǔ)執(zhí)行層剪枝.分別嘗試不同層剪枝shortcut個(gè)數(shù)時(shí)的模型指標(biāo),如表4所示.
表4 通道剪枝率0.66 時(shí),不同剪層個(gè)數(shù)下模型的參數(shù)
可以觀察到,隨著shortcut 剪除的個(gè)數(shù)增加,P、R和mAP@0.5 都會(huì)不同程度的下降,當(dāng)剪除shortcut個(gè)數(shù)為8 時(shí),R和mAP@0.5 出現(xiàn)了大幅度的下滑,且差距比較大,如果再提升剪枝層數(shù),效果非常差.為了保持最大化的剪枝效果,采用剪除7 個(gè)shortcut的方式,即為最佳的層剪枝點(diǎn).雖然各項(xiàng)指標(biāo)都下降比較明顯,但是可以在后續(xù)的微調(diào)訓(xùn)練中恢復(fù).經(jīng)過(guò)層剪枝后的模型,參數(shù)量及模型文件大小相比標(biāo)準(zhǔn)模型減少74%左右,單張圖片推理耗時(shí)下降為標(biāo)準(zhǔn)模型的52%左右.
微調(diào)訓(xùn)練的目的在于恢復(fù)剪枝后的模型精度指標(biāo),保證剪枝前后的模型評(píng)估指標(biāo)總體上相差不大.
模型蒸餾[17,18]是指將擁有復(fù)雜網(wǎng)絡(luò)結(jié)構(gòu)的老師模型中學(xué)習(xí)到的知識(shí)遷移到相對(duì)簡(jiǎn)單網(wǎng)絡(luò)結(jié)構(gòu)的學(xué)習(xí)模型中,在蒸餾的過(guò)程中,小模型學(xué)習(xí)到了大模型的泛化能力,保留了接近于大模型的性能.
對(duì)最佳的剪枝模型文件進(jìn)行微調(diào)訓(xùn)練,并引入模型蒸餾技術(shù),將YOLOv3-spp 標(biāo)準(zhǔn)化訓(xùn)練模型作為老師模型,將最佳的剪枝模型作為學(xué)生模型,通過(guò)老師模型指導(dǎo)學(xué)生模型進(jìn)行微調(diào)訓(xùn)練的方式,得到最終的輕量化模型文件.經(jīng)過(guò)微調(diào)訓(xùn)練后,剪枝后的模型文件參數(shù)量保持不變,但是mAP@0.5 等指標(biāo)都有了一定程度的恢復(fù).
本文以全局剪枝率為0.66、層剪枝為7 個(gè)shortcut后生成的模型文件為基礎(chǔ)執(zhí)行微調(diào)訓(xùn)練,設(shè)置epochs為80 輪,訓(xùn)練得到輕量化模型.各階段的模型文件在測(cè)試樣本集上的評(píng)估指標(biāo),如表5所示.
表5 各階段模型指標(biāo)比較表
從表5中對(duì)比數(shù)據(jù)可以看出,稀疏模型相較于標(biāo)準(zhǔn)模型在R、mAP@0.5 下降3 個(gè)多點(diǎn),但是經(jīng)過(guò)剪枝及微調(diào)處理后指標(biāo)會(huì)有所提升.輕量化模型在P、R及mAP@0.5 等指標(biāo)上比標(biāo)準(zhǔn)模型僅下降2 個(gè)點(diǎn)左右,但是參數(shù)量及模型大小減少74%左右,推理時(shí)間下降為標(biāo)準(zhǔn)模型的50%左右,取得了較好的模型壓縮效果.
圖3展示了剪枝微調(diào)后模型在測(cè)試樣本集上的焊接缺陷推理情況.
圖3 推理模型在測(cè)試集上的推理示例
經(jīng)過(guò)微調(diào)訓(xùn)練后的輕量化模型文件的格式是PyTorch,在部署應(yīng)用中,先用腳本將其轉(zhuǎn)換為通用的onnx 格式模型文件.onnx (開放神經(jīng)網(wǎng)絡(luò)交換)是一種針對(duì)深度學(xué)習(xí)所設(shè)計(jì)的開放式的通用文件格式,用于存儲(chǔ)訓(xùn)練好的模型,它使得不同的人工智能框架(如PyTorch、TensorFlow、Mxnet 等)可以采用相同格式存儲(chǔ)模型數(shù)據(jù)并交互,支持模型在不同框架之間進(jìn)行轉(zhuǎn)移.
采用Intel 推出的深度學(xué)習(xí)加速組件OpenVINO的Model Optimizer 模塊對(duì)模型進(jìn)行量化優(yōu)化處理,可以根據(jù)需要將模型中參數(shù)精度由32 位浮點(diǎn)型量化成16 位浮點(diǎn)型,模型大小可以縮小一半,同時(shí)保證有限的精度損失,以進(jìn)一步提升模型在檢測(cè)應(yīng)用時(shí)的推理速度.本文為了保證檢測(cè)的準(zhǔn)確率,未進(jìn)行模型量化處理.
本文調(diào)用OpenVINO 組件提供的Inference Engine C++推理接口函數(shù),加載檢測(cè)模型文件,以待檢測(cè)的初篩局部圖像為輸入,經(jīng)過(guò)檢測(cè)模型的前向推理運(yùn)算,得到缺陷分類及缺陷位置的信息,完成AI 推理的應(yīng)用及展示.一般而言,剪枝微調(diào)后的模型在OpenVINO 加速框架下,使用intel CPU、GPU 等硬件平臺(tái)進(jìn)行推理還可以獲得30%以上的速度提升.
圖4展示了PCB-Checker 軟件的模塊劃分及功能分類,支持缺陷信息展示、缺陷圖瀏覽、缺陷圖智能分析、缺陷圖定位和缺陷過(guò)濾等功能.
圖4 PCB-Checker 軟件模型劃分及功能列表
PCB-Checker 軟件典型的操作流程如圖5所示:① 從AOI 檢測(cè)儀器上導(dǎo)出初篩的缺陷檢測(cè)圖像目錄,利用工程管理模塊新建工程;② 點(diǎn)擊觸發(fā)掃描流程,分析并展示待檢目錄下異常PCB的板卡型號(hào)、異常元件編號(hào)、異常引腳編號(hào)等信息,并開啟基于深度學(xué)習(xí)的分析子線程;③ 在所設(shè)置的間隔時(shí)間內(nèi)(默認(rèn)10 s),對(duì)一部分圖像運(yùn)行推理輸出結(jié)果,并刷新表格化界面的內(nèi)容;④ 持續(xù)對(duì)未進(jìn)行過(guò)智能分析的圖像進(jìn)行推理輸出,直至所有圖像都完成分析,結(jié)束分析子線程;⑤ 導(dǎo)入初篩缺陷圖像所屬PCB的整板圖像文件及元件位置坐標(biāo)文件,標(biāo)記若干組元件名稱及元件像素坐標(biāo),完成整板圖的導(dǎo)入;⑥ 在表格化的缺陷信息展示界面中,對(duì)智能分析后確實(shí)存在缺陷的條目進(jìn)行校核.可以利用缺陷類型過(guò)濾功能進(jìn)行過(guò)濾展示,結(jié)合缺陷局部圖在PCB 整板圖中的定位展示功能,完成PCB 焊接缺陷的定位識(shí)別.
圖5 PCB-Checker 軟件典型操作流程
由于PCB 板上元件的集成度非常高,元件尺寸很小,AOI 檢測(cè)形成的缺陷成像一般是缺陷區(qū)域的特寫,因此需要將缺陷局部圖定位至PCB 整板圖中的具體位置并進(jìn)行可視化的展示,以提升生產(chǎn)效率.本系統(tǒng)基于一元線性回歸算法實(shí)現(xiàn)了局部缺陷圖的定位顯示功能.
PCB 板在設(shè)計(jì)完畢后支持導(dǎo)出一張整板圖像文件及一個(gè)包含各元件坐標(biāo)分布的文本文件.在PCB-Checker軟件中導(dǎo)入該整板原圖或者是經(jīng)過(guò)裁切、翻轉(zhuǎn)、縮放等處理后的整板圖,并同時(shí)導(dǎo)入元件坐標(biāo)文件,以PCB板類型和正反面標(biāo)識(shí)為索引,存儲(chǔ)每一對(duì)導(dǎo)入的信息到配置文件中.
基于導(dǎo)入的整板圖及元件坐標(biāo)文件,提供可視化界面允許在PCB 整板圖中鼠標(biāo)左鍵單擊標(biāo)記若干枚元件的位置坐標(biāo),以獲取多組包含元件名稱及坐標(biāo)的信息,如圖6所示.若干組必須是兩組及以上的信息,一般來(lái)說(shuō)記錄的信息越多,擬合出來(lái)的函數(shù)系數(shù)能更具有泛化能力,但是過(guò)多也存在過(guò)擬合的情況,建議是標(biāo)記4 組或者5 組信息即可.
圖6 PCB 整板圖中元件坐標(biāo)標(biāo)記界面
采用一元線性回歸算法,推算出PCB 整板圖像中元件的像素坐標(biāo)與坐標(biāo)文件中記錄的坐標(biāo)之間的關(guān)系表達(dá)式為:
其中,yp表示圖像中某元件的像素y坐標(biāo)值;yf表示坐標(biāo)文件中某元件的像素y坐標(biāo)值;xp表示圖像中某元件的像素x坐標(biāo)值;xf表示坐標(biāo)文件中某元件的像素x坐標(biāo)值;k1、k2、b1、b2為需要進(jìn)行計(jì)算的一元線性回歸方程的參數(shù)值.
從標(biāo)記元件的名稱及坐標(biāo)信息中,通過(guò)若干組包含元件名稱及像素坐標(biāo)的散點(diǎn)信息,分別擬合出y坐標(biāo)、x坐標(biāo)的線性關(guān)系,計(jì)算得到的k1、k2、b1、b2參數(shù)值.
從PCB 焊接缺陷局部圖像所對(duì)應(yīng)的缺陷描述文件中,獲取該局部圖像所對(duì)應(yīng)的元件名稱.再?gòu)腜CB元件坐標(biāo)文本文件中查找到該名稱所對(duì)應(yīng)的坐標(biāo)位置,即yf、xf的值.基于推導(dǎo)出的坐標(biāo)關(guān)系表達(dá)式及元件名稱、坐標(biāo)位置,計(jì)算出該元件在PCB 整板圖像中的像素坐標(biāo)位置,即yp、xp的值.
PCB-Checker 提供了界面并列展示PCB 焊接異常局部圖及其在PCB 整板圖中的定位位置,達(dá)到可以在PCB 整板圖上快速定位異常局部圖位置的目的.軟件采用組件式架構(gòu)設(shè)計(jì)[19,20],其主界面如圖7所示.
圖7 PCB-Checker 軟件主界面
本文介紹了一種基于深度學(xué)習(xí)技術(shù)的PCB 焊接缺陷檢測(cè)識(shí)別系統(tǒng).系統(tǒng)以YOLOv3-spp的目標(biāo)檢測(cè)算法為基礎(chǔ),設(shè)計(jì)采用模型剪枝、模型蒸餾及模型量化等手段來(lái)壓縮模型,以犧牲有限準(zhǔn)確率為代價(jià)大幅提升了AI 缺陷檢測(cè)的速度.另外,本系統(tǒng)還基于一元線性回歸算法實(shí)現(xiàn)了焊接缺陷局部圖的定位展示功能.PCB-Checker 系統(tǒng)界面簡(jiǎn)潔、運(yùn)行穩(wěn)定,在南瑞繼保電氣有限公司智能制造中心多條電力PCB 生產(chǎn)線進(jìn)行了實(shí)際應(yīng)用,結(jié)果表明該軟件提升了生產(chǎn)效率和質(zhì)量管控能力.