關(guān)鍵詞:LabVIEW;Python;PCB;缺陷檢測(cè)
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2024)28-0124-03
印制電路板(Printed Circuit Board,PCB) 是電子產(chǎn)品中各種電子元器件的載體,也是電子產(chǎn)品可靠性的重要組成部分。然而,PCB的生產(chǎn)過(guò)程涉及多道工序,可能會(huì)出現(xiàn)各種缺陷,如短路、漏焊、開(kāi)路等。由于這些缺陷可能導(dǎo)致電子產(chǎn)品無(wú)法正常工作,對(duì)PCB 進(jìn)行表面缺陷檢測(cè)至關(guān)重要。傳統(tǒng)的基于圖像處理和機(jī)器學(xué)習(xí)的視覺(jué)缺陷檢測(cè)技術(shù)在面對(duì)不同缺陷類型或環(huán)境變化時(shí),通常需要重新調(diào)整參數(shù)和重新訓(xùn)練模型,其泛化能力較差。深度學(xué)習(xí)算法能夠自動(dòng)學(xué)習(xí)特征,具有較強(qiáng)的泛化能力,可以有效解決傳統(tǒng)方法泛化性差的問(wèn)題。LabVIEW作為虛擬儀器開(kāi)發(fā)平臺(tái),擁有豐富的機(jī)器視覺(jué)處理功能,被廣泛應(yīng)用于自動(dòng)檢測(cè)系統(tǒng),但在深度學(xué)習(xí)方面的支持尚不完善。
本文針對(duì)上述問(wèn)題,將深度學(xué)習(xí)YOLOv5算法導(dǎo)入LabVIEW開(kāi)發(fā)環(huán)境,利用NI IMAQ和NI Vision的函數(shù)采集攝像機(jī)視頻圖像,經(jīng)過(guò)預(yù)處理后由Python編寫的YOLOv5推理函數(shù)進(jìn)行PCB缺陷檢測(cè),最終結(jié)果傳回LabVIEW。該方法提高了PCB缺陷檢測(cè)的泛化能力,擴(kuò)展了LabVIEW的應(yīng)用場(chǎng)景。
1 PCB 缺陷的視覺(jué)檢測(cè)技術(shù)
1.1 傳統(tǒng)視覺(jué)檢測(cè)技術(shù)
早期的PCB表面缺陷檢測(cè)方法主要是人工目視檢測(cè),這種方法存在主觀因素強(qiáng)、人工成本高、數(shù)據(jù)收集困難等問(wèn)題。目前,PCB缺陷檢測(cè)技術(shù)主要包括自動(dòng)光學(xué)檢測(cè)(AOI) 和機(jī)器視覺(jué)檢測(cè)(MVI) 。視覺(jué)檢測(cè)系統(tǒng)通過(guò)光學(xué)元件和圖像傳感器獲取PCB圖像,并經(jīng)過(guò)定位、預(yù)處理、分割等步驟提取特征,隨后與模板特征進(jìn)行比較以分類和標(biāo)記缺陷。圖像處理和特征提取是視覺(jué)檢測(cè)技術(shù)的核心,部分經(jīng)典機(jī)器學(xué)習(xí)算法也被用于缺陷檢測(cè),例如支持向量機(jī)(SVM) 、神經(jīng)網(wǎng)絡(luò)等,這些算法逐漸發(fā)展出豐富的工具和方法。易歡等將HALCON機(jī)器視覺(jué)軟件引入PCB焊接缺陷檢測(cè),設(shè)計(jì)的檢測(cè)系統(tǒng)適用于中小型生產(chǎn)企業(yè)[1]。胡江宇等采用改進(jìn)的Faster RCNN,提高了PCB微小缺陷的分類精度[2]。
1.2 基于深度學(xué)習(xí)的視覺(jué)檢測(cè)
近年來(lái),深度學(xué)習(xí)算法取得了顯著進(jìn)步,YOLO系列算法成為目標(biāo)檢測(cè)的研究熱點(diǎn)之一,并在PCB缺陷檢測(cè)中被廣泛研究和應(yīng)用。YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)包含輸入層、主干網(wǎng)絡(luò)、特征融合網(wǎng)絡(luò)和輸出層四個(gè)部分。YO?LOv5算法提供YOLOv5s、YOLOv5m、YOLOv5l和YO?LOv5x四種模型,其中由于YOLOv5s的輕8497932eab022fab42b858317197235b043a47642089589b7cfe7c7c69b4c0b3量化特點(diǎn),它在速度和精度之間取得了較好的平衡,是最常用的一種模型[3]。為了進(jìn)一步提升檢測(cè)效果,研究人員對(duì)YOLO 算法進(jìn)行了多種改進(jìn),并提出了新的模型。比如,陳怡菲等在YOLOv5模型中引入了Coordinate Attention注意力機(jī)制,從而提高了PCB板缺陷的檢測(cè)精度[4]。
1.3 基于LabVIEW 的PCB缺陷檢測(cè)系統(tǒng)
PCB缺陷檢測(cè)系統(tǒng)一般包括硬件部分和軟件部分。硬件部分主要負(fù)責(zé)圖像采集,而軟件部分則負(fù)責(zé)缺陷檢測(cè)。在實(shí)際應(yīng)用中,通常通過(guò)在開(kāi)發(fā)平臺(tái)上掛載工具包的形式來(lái)構(gòu)建PCB缺陷檢測(cè)系統(tǒng)的軟件部分。Lab?VIEW是美國(guó)NI公司開(kāi)發(fā)的虛擬儀器開(kāi)發(fā)平臺(tái),具有通用編程系統(tǒng)的函數(shù)庫(kù),還提供了豐富的數(shù)據(jù)采集、儀器通信協(xié)議、數(shù)據(jù)分析等工具,擁有強(qiáng)大的圖形化編程功能。LabVIEW還提供了多種針對(duì)特定應(yīng)用的附加模塊,例如實(shí)時(shí)模塊、FPGA模塊、圖像處理和視覺(jué)模塊等,便于用戶進(jìn)行各種功能的開(kāi)發(fā)。Lab?VIEW虛擬儀器的設(shè)計(jì)包括前面板和框圖程序兩部分:前面板用于人機(jī)交互界面的設(shè)計(jì),框圖程序則通過(guò)圖標(biāo)和連線等進(jìn)行程序功能的設(shè)計(jì)。由于LabVIEW采用圖形化的編程方式,易學(xué)易用,在自動(dòng)化測(cè)試、數(shù)據(jù)采集、儀器控制等領(lǐng)域得到了廣泛應(yīng)用。Lab?VIEW 提供了NI Vision Builder 和IMAQ Vision這兩部分視覺(jué)開(kāi)發(fā)模塊,擁有豐富的圖像采集、分析處理和計(jì)算測(cè)量函數(shù),方便用戶高效完成機(jī)器視覺(jué)系統(tǒng)的設(shè)計(jì)。郭聯(lián)金等應(yīng)用LabVIEW的機(jī)器視覺(jué)功能構(gòu)建了針對(duì)PCB空板的缺陷檢測(cè)系統(tǒng)[5]。
盡管LabVIEW的機(jī)器視覺(jué)功能隨著版本的更新不斷完善,但對(duì)深度學(xué)習(xí)的支持仍有限,尚未提供完整的解決方案。近年來(lái),Python在科學(xué)計(jì)算領(lǐng)域得到了廣泛應(yīng)用,自LabVIEW 2018版開(kāi)始,LabVIEW提供了Python節(jié)點(diǎn),方便用戶調(diào)用Python程序,這一功能在后續(xù)版本中逐步完善。本文采用LabVIEW 2023Q1 版本,通過(guò)Python 節(jié)點(diǎn)在LabVIEW 中實(shí)現(xiàn)基于YO?LOv5的推理。
2 系統(tǒng)方案
本文構(gòu)建的PCB缺陷檢測(cè)系統(tǒng)的設(shè)計(jì)方案如圖1 所示。系統(tǒng)分為硬件和軟件兩個(gè)部分。硬件部分負(fù)責(zé)PCB圖像的采集,主要由USB攝像機(jī)和計(jì)算機(jī)構(gòu)成。軟件部分包括基于Python 3.9的訓(xùn)練和推理部分(圖1中的虛線框),以及基于LabVIEW的圖像采集、增強(qiáng)、推理和交互界面的虛擬儀器設(shè)計(jì)。
2.1 PCB 缺陷檢測(cè)系統(tǒng)的虛擬儀器設(shè)計(jì)
虛擬儀器主要負(fù)責(zé)圖像數(shù)據(jù)的采集和增強(qiáng),并調(diào)用Python函數(shù)進(jìn)行缺陷推理。虛擬儀器的前面板和框圖程序如圖2和圖3所示。
在計(jì)算機(jī)操作系統(tǒng)上安裝攝像機(jī)驅(qū)動(dòng)后,需要在NI MAX的“設(shè)備和接口”中確認(rèn)攝像機(jī)是否成功安裝,并確定系統(tǒng)分配的攝像機(jī)名稱。在本系統(tǒng)中,計(jì)算機(jī)自帶的攝像頭標(biāo)識(shí)為“cam0”,外接的USB攝像機(jī)為cam1。在框圖程序中,通過(guò)IMAQdx 中的Open、Configure Grab、Grab和Close四個(gè)VI實(shí)現(xiàn)圖像采集,獲得單幀圖像??紤]到實(shí)際應(yīng)用場(chǎng)景中可能存在的光照不均勻問(wèn)題,需要增強(qiáng)局部對(duì)比度,本文采用直方圖均衡化來(lái)增強(qiáng)圖像細(xì)節(jié),并使用“IMAQ ColorEqual?ize”VI作為圖像增強(qiáng)算法,同時(shí)在前面板提供選擇開(kāi)關(guān)供用戶使用。為了方便用戶選擇攝像機(jī)或已有的照片,前面板提供圖像來(lái)源選擇功能。此外,為保存檢測(cè)結(jié)果,還提供了圖片保存功能,并以列表形式顯示分類和置信度。
2.2 實(shí)驗(yàn)數(shù)據(jù)集及訓(xùn)練參數(shù)
實(shí)驗(yàn)數(shù)據(jù)集采用北京大學(xué)智能機(jī)器人開(kāi)放實(shí)驗(yàn)室共享的PCB瑕疵數(shù)據(jù)集,該數(shù)據(jù)集包含1 386張圖像,涵蓋6 種缺陷:漏孔(missing hole) 、鼠咬(mousebite) 、開(kāi)路(open circuit) 、短路(short) 、雜散(spur) 、雜銅(spurious copper) [6]。訓(xùn)練過(guò)程中,使用YOLOv5s模型,訓(xùn)練參數(shù)設(shè)置如下:訓(xùn)練周期(epochs) 為150次,批處理數(shù)量(batch-size) 為16,圖片尺寸(imgsz) 為640。模型訓(xùn)練結(jié)果的precision-recall 曲線如圖4所示,mAP@0.5達(dá)到0.951。
2.3 推理
LabVIEW 提供的Open Python Session 和PythonNode函數(shù)可以方便用戶調(diào)用Python執(zhí)行推理腳本。其中,Open Python Session函數(shù)用于打開(kāi)Python會(huì)話,該函數(shù)需要設(shè)置Python解釋器的路徑和版本,并獲取會(huì)話句柄;而Python Node函數(shù)用于直接調(diào)用Python函數(shù)。調(diào)用時(shí),需要連接會(huì)話句柄,指定Python模塊的路徑和函數(shù)名稱,并在函數(shù)有返回值的情況下指定返回值的數(shù)據(jù)類型。
LabVIEW 采集的圖像數(shù)據(jù)類型為L(zhǎng)abVIEW 的image格式,在Python腳本中無(wú)法直接處理。因此,需要將圖像數(shù)據(jù)轉(zhuǎn)換成數(shù)組,利用Python Node函數(shù)以參數(shù)的形式傳遞到Python 腳本。LabVIEW 的IMAQExtractColorPlanes 和Image ToArray 函數(shù)能夠?qū)D像數(shù)據(jù)轉(zhuǎn)化為R、G、B三個(gè)顏色的數(shù)組。
為了處理LabVIEW的三色圖像數(shù)組,需要將Py?thon端的YOLOv5推理腳本detect 改造成函數(shù)detec?timg(b, g, r)。該函數(shù)以R、G、B三個(gè)顏色的數(shù)組作為輸入?yún)?shù),數(shù)據(jù)類型均為np.uint8。首先,使用cv2.merge((b, g, r))函數(shù)將這三個(gè)顏色數(shù)組合并為Python可處理的圖像數(shù)據(jù),然后執(zhí)行推理過(guò)程,得到包括類別、預(yù)測(cè)邊界坐標(biāo)和置信度的推理結(jié)果。由于LabVIEW與Py?thon的數(shù)據(jù)類型并不完全通用,并且LabVIEW的Py?thon Node無(wú)法直接接收Python的元組、列表、字典等數(shù)據(jù)類型,因此本文將推理結(jié)果包含的多個(gè)數(shù)值以字符串的形式封裝,通過(guò)return語(yǔ)句返回給LabVIEW。推理過(guò)程使用訓(xùn)練得到的best權(quán)重文件進(jìn)行推理。
2.4 檢測(cè)結(jié)果顯示
在獲得推理函數(shù)返回的字符串后,首先需要解析出類別、邊界框坐標(biāo)以及置信度數(shù)據(jù)。然后,通過(guò)IMAQ Overlay Multiple Lines 2和IMAQ Overlay Text函數(shù)在圖像上疊加邊界框和置信度圖層??紤]到PCB 可能存在多種顏色,為方便識(shí)別,邊界框的顏色和線寬可以由用戶根據(jù)實(shí)際情況進(jìn)行調(diào)整設(shè)置。
3 PCB 缺陷檢測(cè)實(shí)驗(yàn)
測(cè)試的PCB板如圖6所示,板上的3個(gè)漏孔缺陷(missing hole) 被成功正確檢出。
在使用數(shù)據(jù)集中未參與訓(xùn)練的PCB圖片進(jìn)行測(cè)試時(shí),如圖7所示,圖片中的鼠咬(mouse bite) 缺陷也被成功正確檢出。
4 結(jié)論
本文提出了一種將深度學(xué)習(xí)算法YOLOv5應(yīng)用于PCB缺陷檢測(cè)的智能化系統(tǒng)設(shè)計(jì)方法,通過(guò)Python和LabVIEW的聯(lián)合編程,拓展了LabVIEW的機(jī)器視覺(jué)處理能力。實(shí)驗(yàn)結(jié)果表明,該方法能夠有效檢測(cè)PCB缺陷,并獲得可靠的檢測(cè)結(jié)果,有助于簡(jiǎn)化傳統(tǒng)PCB 缺陷檢測(cè)系統(tǒng)的設(shè)計(jì)工作。未來(lái),基于本文的設(shè)計(jì),可以進(jìn)一步探索更優(yōu)化的深度學(xué)習(xí)算法,以提高PCB 缺陷的識(shí)別率和檢測(cè)精度,同時(shí)降低計(jì)算量。這將有助于在更廣泛的應(yīng)用場(chǎng)景中實(shí)現(xiàn)更高效的PCB缺陷檢測(cè)。