何其偉 趙宇坤 宗兆翔



摘要:針對傳統工業產線上的質量檢測環節,本文提出了一種基于FPGA控制板卡與物體識別算法的機器視覺檢測系統。該系統采用FPGA+GPU并行處理結構作為硬件平臺,充分利用FPGA實時性好、可實現復雜控制邏輯等特點完成視覺系統各部件的控制以及數據傳輸,配合電腦端的GPU完成物體識別算法。實驗結果表明,該方案可以滿足生產線上的高速要求,并且易于部署,從而實現了深度學習在傳統生產線上的落地應用。
關鍵詞:缺陷檢測;機器視覺;FPGA;深度學習
中圖分類號:TP391 文獻標識碼:A 文章編號:1007-9416(2020)08-0128-04
0 引言
近年來,隨著“工業4.0”和“中國制造2025”的提出,工業生產自動化和智能化的發展進程加速前進[1]。將機器視覺應用于工業產線檢測環節是智能制造的重要應用場景之一,目前傳統的基于圖像處理的檢測方法是將待檢對象的形狀、顏色等特征建立模板,利用模板對檢測對象進行特征匹配[2]。此種方法帶來的問題是,待檢對象缺陷種類繁多且大小不一,根據不同特征建立的算法往往只對特定對象起作用,缺乏通用性和靈活性。此外,工業流水線對機器檢測速度提出了較高要求。基于上述工業應用的實際需求,本文設計了一套基于深度學習的工業視覺檢測系統[3],該系統利用FPGA平臺完成相機、燈光控制、圖像傳輸以及殘次品剔除,基于深度學習算法開發缺陷檢測網絡模型,代替傳統的圖像處理技術,形成一套完整的AI工業視覺檢測的軟硬件系統,并通過終端的UI界面實時向用戶展示系統的工作狀態。
1 視覺檢測硬件架構
機器視覺檢測硬件架構示意如圖1所示,成像采集,FPGA控制系統,檢測算法執行是該硬件架構中需要實現的三大主要模塊。
1.1 成像采集
成像單元由工業相機、照明光源構成,負責原始圖像數據的采集。采用LED環形光源可以滿足大部分的照明條件需求。對于實際流水線的應用場景,檢測相機的每秒采集圖像個數(即幀率,fps)需要大于生產線的速度,本文方案在檢測平臺上選擇Basler工業相機,除了提供較高幀率,其自帶的庫函數API還可以通過Python編程直接從以太網接口控制并可接收相機捕獲的圖像。
1.2 FPGA控制系統
控制模塊需要控制視覺光源、工業相機觸發以及圖像傳輸等過程,特別地,對于實際工業檢測場景下的多工位設置,控制模塊還需要完成不同工位間的協同控制功能。考慮到圖像數據量及運算量大,控制邏輯的復雜性以及檢測的實時性,相應的控制模塊,本文選用Xilinx FPGA系列Kintex ultralscale xcku040。FPGA(Field Programmable Gate Array)是一種高性能的可編程邏輯器件,可通過編程方式修改其內部邏輯電路,從而實現高速并行的硬件計算[4-5]。FPGA板負責圖像的實時采集、存儲、顯示,以及處理不同工位上燈光與相機的協同工作。這其中,具體的工作包括:
(1)圖像采集:編寫PCIe(快速外圍設備互連peripheral component interconnect express)通信模塊[6]以及相機控制模塊,在計算機編寫PCIe通信程序使用寫控制字的方式向FPGA發出指令,通過工業相機自帶軟件設置為外部觸發模式,FPGA對其發送脈沖信號激活相機抓拍工作。多工位場景下,FPGA根據產線速度預設節拍,控制不同位置的相機、光源按照定制的邏輯次序工作。
(2)預處理:圖像采集模塊的圖像信號,經過網口傳遞給FPGA進行圖像的預處理,經PCIe通訊接口寫入上位機系統內存,并由FPGA控制系統時序、數據處理、控制執行單元等任務。由于FPGA實時性高,大量并行單元可使用進行圖片預處理,減少了計算機主機系統的大量運算,從而加快了圖片讀取速率,減小了相機掉幀情況。
(3)執行單元:FPGA根據電腦端反饋回來的判定結果(不通過NG 或者通過PASS),控制相應的電磁閥輸出端口對缺陷產品進行剔除工作。
1.3 檢測算法執行
檢測模塊硬件部分具體由計算機GPU、顯示器、編碼器等器件構成,分別用來完成缺陷識別、圖像的顯示、及反饋含有缺陷種類的字節信息至FPGA控制模塊。
2 視覺檢測算法模型
算法模塊采用物體識別算法。物體識別算法的基本原理是:首先對輸入圖像劃分成7×7的網格,對每個網格預測2個邊框,然后根據閾值去除可能性比較低的目標窗口,最后再使用邊框合并的方式去除冗余窗口,得出檢測結果。YOLO(You only look once)是目前流行的目標識別模型之一,目前最新已經發展到V3版本了,在業界的應用廣泛[7-8]。
具體實現過程:首先將具體應用場景下所拍攝的樣品圖片,分別準備為原始圖片集、訓練集、測試集。將訓練集里的樣本數據輸入網絡先與64個3×3的卷積核進行卷積運算,提取到初步特征。隨后,經過3×3的最大池化操作后,數據開始進入殘差模塊。物體識別算法采用了殘差網絡結構模塊(residual network),減小了梯度爆炸的風險,使得精度可以在更深的層次中得到持續提升。本文應用的殘差模塊包含有四個卷積層,分別是:3×3×64卷積層、 3×3×128卷積層、3×3×256卷積層、3×3×512卷積層。物體識別算法通過殘差結構可以將神經網絡層次加深,并通過大量的訓練直至最優化。殘差模塊出來的數據經過 3×3的最大池化操作后,最終與1個3×3的卷積核進行卷積運算,得到輸出的特征圖。所述特征圖經過全局平均池化操作最終得到相應輸出結果。對全部訓練集數據實施上述處理步驟之后,生成各層次參數即為面向某具體應用場景的深度學習網絡模型。
3 實驗結果與分析
3.1 具體應用實例
以陶瓷杯廠家的產線檢測需求為例,面向該具體應用場景,硬件實施方案為:雙工位上配置工業Basler相機搭配LED環形光源,分別從產品上方及側方角度進行拍照。模型準備階段在產線上采集大量陶瓷杯圖片(包括合格品與殘次品),對產品圖片進行分類型的、像素級別的缺陷標注。根據陶瓷專業領域知識,定義缺陷類型包括:針孔、開裂、裂把、疙瘩、臟點、色臟、硬傷,具體如圖2所示,雙工位視覺系統如圖3所示。
3.2 深度學習網絡參數訓練
為了訓練深度學習網絡模型,分別采集了20000個訓練樣本作為訓練集,2000個樣本作為測試集。采用Yolov3算法框架對模型參數進行訓練,整個訓練過程在Nvidia GTX1080TI平臺上進行,大約耗時20小時。Yolov3網絡提供訓練過程的可視化數據圖,如圖4所示。圖中橫坐標單位batches為批數量,表示一批訓練樣本的樣本數量,每batch個樣本更新一次模型參數。曲線avg_loss代表平均損失率,是結構的評估參數,越小越好,期望值趨于0。通過分析圖中的損失變化曲線,可以調整學習率。學習率決定著權值更新的速度,設置得太大時,雖然損失曲線前期下降很快,但后期結果容易超過最優值,設置太小時損失曲線下降速度過慢。圖中顯示的本文訓練過程,損失率呈現滑梯式下降曲線,表明學習率設置合適。從損失率曲線可以看出損失率收斂,且接近0,表明訓練后的模型識別精度完全達到產品檢測要求。以陶瓷杯檢測為例,該視覺系統的檢測幀率可以達到3fps(即每秒檢測3張圖片),達到真實產線的速率要求。圖5為陶瓷杯產線上部署視覺檢測系統后的在線檢測結果。如圖所示,若產品經過視覺系統檢測被判定為缺陷產品時,終端顯示器的用戶界面上會標識出產品的缺陷區域,并且顯示判定結果為“NG”。
4 結論
本文提出了一種基于物體識別算法的視覺檢測系統的軟硬件實現方法。經產品檢測實驗表明,該系統可以快速部署到產線上,基于Yolov3算法構建的學習網絡識別精度高,通用性好。
參考文獻
[1] 周濟.智能制造:“中國制造2025”的主攻方向[J].中國機械工程,2015,26(17):2273-2284.
[2]? LOWE DG.Distinctive image features from scale-invariant keypoints[J].International Journal of Computer Vision,2004,2(2):91-110.
[3] 陳浩,吳裕斌,吳鑫,等.工業視覺檢測系統控制終端軟件設計[J].儀表技術與傳感器,2019(6):63-66+71.
[4] Torres-Huitzil C,Arias-Estrada M.Real-time image processing with a compact FPGA-based systolic architecture[J].Real-Time Imaging,2004,10(3):177-187.
[5] Benkrid K,Belkacemi S,Design and implementation of a 2D convolution core for video applications on FPGAs[C]//Third International Workshop on Digital and Computational Video,2002.
[6] Rotal L,Caselle M,et a1.A PCIe DMA architecture for multi gigabyte per second data transmission[J].IEEE Transactions on Nuclear Science,2015,62(3):972-976.
[7] Redmon J,Divvala S,Girshick R,et al.You Only Look Once: Unified,Real-Time Object Detection[C]//2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR),2016.
[8] HE Kaiming,ZHANG Xiangyu,REN Shaoqing,et a1.YOLOV3:deep residual learning for image recognition[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2015.