




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