?

基于特征點匹配的視覺識別方法

2024-01-10 10:08林遠長
機器人技術與應用 2023年6期
關鍵詞:代碼標定物體

羅 勝 張 彬 胡 嚴 林遠長*

(1 重慶工程學院,重慶,400056;2 中國科學院重慶綠色智能技術研究院,重慶, 400714;3 中科時永(蘇州)科技有限公司,江蘇蘇州,215104;4人工智能與服務機器人控制技術重慶市重點實驗室,重慶,400714)

0 引言

隨著機器視覺的不斷應用,3C 產品制造過程中對視覺識別的速度、精準度的要求也越來越高。為了滿足3C產品的制造要求,即在安裝過程中更加快速識別電阻、電容等器件,需要對視覺識別的方法進行改進,以提高工作效率。

HSU 等人[1]開發了一套機器視覺系統,該系統可以在不同光照環境下使用六自由度機械臂來實現對物體的自動分類。ENGEL 等人[2]提出了一種實時視覺測距方法,采用單目攝像機對運動物體進行跟蹤,通過密集圖像對目標進行定位對齊,提供增強現實的參考依據。HAJILOO 等人[3]為六自由度單目機器人設計了視覺伺服系統控制器。TAHERIMAKHSOUSI 等人[4]制造了一種便于大面積鈣鈦礦光電優化的機器視覺工具。唐旭等人[5]開發了Kinect 視覺系統,該系統安裝在雙臂機器人上對目標物體進行圖像預處理和分揀。韓博等人[6]開發了一套立體視覺系統,采用雙目攝像機,利用改進的Otsu 算法分割工件,通過分類識別算法實現了工件的三維定位,最終提高了工件的識別率。張文卓等人[7]采用灰色狼優化算法優化的模糊C 均值算法和改進的卷積神經網絡結合狀態轉移算法(STA)識別柑桔表面缺陷。

視覺識別算法發展至今種類繁多,本文提出一種基于特征點匹配的視覺識別方法,該方法利用機器視覺的目標識別檢測法,對視覺識別所需時間進行研究,經YOLOv5 算法、圖像處理和手眼標定處理,通過分析該方法四種不同結構對處理速度和精準度的對比驗證,選擇合適的結構與權重文件,快速檢測產品安裝所需3C 產品,并實現目標定位,提高了生產效率。

1 系統硬件設計

圖1 所示為視覺系統總體組成圖。搭建視覺平臺的主要部件有:工業相機、工業鏡頭、工控機(電腦)、協作機器人。

圖1 視覺系統總體組成圖

視覺平臺的主要功能是圖像采集和處理、坐標轉換、數據傳送給機器人引導抓取,硬件設備經選型后進行組裝搭建調試。

2 軟件算法研究

2.1 Halcon 軟件的視覺標定

Halcon 軟件是一種功能強大的機器視覺圖像處理工具,具有多種優點,使其在該領域中發揮著重要的作用。Halcon 擁有眾多封裝完善的算子;多種編程語言可直接訪問函數庫;調用方便快捷,且不限制拍攝設備;集成多種內部接口,完成編程后可轉化為所需語言代碼;人性化的交互式程序設計界面,使其成為一個可廣泛應用于各種圖像處理任務的可靠工具。

2.1.1 相機標定

相機標定是確定相機成像幾何模型的參數,即確定空間物體表面點與圖像點的關系,求解該參數的過程稱為相機標定。本文采用蜂窩式標定板對相機進行標定,先創建所用標定板的描述文件,在Halcon 中使用算子create_caltab 生成標定板的(.cpd)文件,并設置標定板相關數據。蜂窩標定板如圖2 所示。

圖2 HG-90 蜂窩標定板

利用Halcon 相機標定助手,導入標定板描述文件,修改攝相機參數,如單個像元的高、寬和焦距等等。利用標定助手實時獲取標定板的圖像9-16 張,選擇其中的一張圖片用做參考位姿,最后對相機進行標定。標定結果如圖3 所示。

圖3 相機標定結果(相機內外參)

標定結果展現出了像素的平均誤差,平均誤差越小,說明標定的結果越準確,從圖像可以看出,標定數據包括單個像元的高和寬、焦距、中心點的坐標等等,這些參數代表的是相機的內參,而相機的位姿代表的則是相機的外參。對相機的內外參進行保存,或將其轉化為代碼,方便后續直接調用。

2.1.2 手眼標定

本文采用九點標定法進行手眼標定。在該標定方法中,機械手所處的空間坐標系與相機生成的像素坐標系之間存在一種轉化關系。九點標定法可以確定空間坐標系與像素坐標系之間的轉化關系,從而實現空間坐標與像素坐標之間的相互轉換。

九點標定顧名思義,需要使用九個點進行標定,既需要在圖像中獲取其像素坐標,也需要在空間坐標系中確定其空間坐標,再通過仿射變換矩陣計算出轉換關系。

完成手眼標定后,用affine_trans_point_2d 算子對二維點進行仿射變換,將該算法處理對象的像素坐標轉換成世界坐標。

2.2 Python 語言的算法研究

Python 是一種簡單易學、語法簡單、文檔齊全、自由開源的編程語言,可以自由復制Python 軟件、閱讀源代碼、修改源代碼并在新軟件中使用。Python 語言可以不考慮程序所用內存的底層細節,可在Linux、Windows、Amiga、AROS、VMS、Acom RISC OS 等多個平臺使用。

2.2.1 算法原理

YOLOv5 算法的結構大致分為Input(輸入端)、Backbone(骨干網絡)、Neck(特征融合部分)和Prediction(預測頭部)等四個部分。

Input 具有數據增強功能,同時也可以進行自適應錨框計算,以實現圖像的縮放。Mosaic 數據的增強包括隨機縮放、隨機裁剪和隨機排列等操作,以提高圖像質量。為了避免傳統方法中的過擬合問題,本文引入了一種新的圖像匹配算法,用于實現特征提取,以增強對小物體的檢測效果。自適應錨框計算指的是根據不同數據集的錨框初始長度,通過網絡層輸出預測框,并將預測框與真實框進行比較,計算二者之間的差異,并進行反向更新,迭代網絡參數。然而,一般的目標檢測算法要求輸入檢測圖像的長度和寬度相等,并將輸入圖像統一縮小到標準尺寸,然后由檢測網絡進行處理。

在Backbone 中,存在兩種結構,即Focus 和CSP,Focus 結構是YOLOv5 中的輕量級特征提取器,旨在保持較低計算成本的同時提取有效的特征,而CSP 結構是一種更復雜和強大的特征提取器。Focus 結構實現了切片操作,可以將部分處理過的圖像切成N×N×M 特征。圖4展示了Focus 結構的切片結構圖。在YOLOv4 算法中,主干網絡僅使用CSP 結構。而在YOLOv5 中,引入了兩個CSP 結構,一個用于主干網絡,另一個用于Neck 部分。

圖4 Focus 結構切片操作圖

Neck 網絡主要采用特征金字塔網絡(Feature Pyramid Network, FPN)和路徑聚合網絡(Path Aggregation Network, PAN)的結構,以增強網絡特征融合能力。這種結構能夠有效地將不同層級的特征進行融合。Prediction部分包含兩種函數,一種是Bounding box 損失函數,另一種是非極大值抑制(Non-Maximum Suppression,NMS)。在目標檢測的后期階段,為了篩選出多個目標框,使用NMS 操作對結果進行改進。

YOLO 系列的算法包含四種網絡結構(s、m、l、x),這些結構通過控制網絡的深度和寬度來發揮作用,s(small)模型相對較小,具有較低的參數數量和計算復雜度;m(medium)模型具有中等的模型規模,介于小型和大型之間;l(large)模型比中等規模的模型更大,通常包含更多的參數和更多的層次;x(extra large)模型是最大的,通常具有最多的參數和最大的深度,因此是最復雜的模型。不同結構的網絡具有不同數量的卷積核,這不僅會影響CSP 等結構的性能,還會影響各個普通卷積層。隨著卷積核數量的增多和特征圖寬度的增大,網絡的特征學習能力得到了增強。

2.2.2 YOLOv5 算法重要代碼的作用

YOLOv5 算法中包含大量的代碼,每個代碼片段都具有不同的功能。圖5 展示了YOLOv5 算法訓練數據集yaml 文件中非常關鍵的代碼段。以下對其中的幾行代碼進行解釋:第13 行的代碼用于準確讀取訓練數據集中的圖片;第14 行的代碼則是用于提前打好標簽的相關圖片數據;第17 行的代碼表示數據集中所包含的目標類別數量;第20 行的代碼用于給三種測量物體打上標簽。這些代碼段是訓練數據集中的重要參數設置。

圖5 LJ.yaml 文件代碼

在訓練數據集的過程中,需要從四個網絡構建的配置文件中選擇一個。這四個文件具有不同的檢測速度和精確度。本文選用.s 文件,盡管它的精確度較低,但它具有最快的檢測速度。圖6展示了所選文件中的部分代碼。其中,第2 行的代碼用于設置目標的種類數量,即在圖像打標簽時需要進行分類的類別數量,需要將該數字修改為相應的值。第3 和第4 行的代碼是寬度和長度的縮放比例系數,這些系數在每個文件中都是預先計算好的,無需更改。

圖6 YOLOv5s_LJ 相關代碼

在準備好前期工作后,可以使用train.py 文件中的代碼對數據集進行訓練。圖7 展示了訓練數據集時的重要設置部分代碼。以下是對其中幾行代碼的修改說明:第461 行的代碼用于初始化權重文件的路徑地址,將下載的權重文件的路徑復制到代碼中。第465 行的代碼用于讀取模型的yaml 文件。第469 行的代碼用于設置數據集yaml 文件的路徑地址。第474 行的代碼可以設置訓練的輪數。第477 行的代碼可以調整批次文件的輸入數量。第483 行的代碼用于設置最大的工作核心數。這兩行代碼對電腦的配置要求較高,電腦配置較低可以減小這兩個參數值,配置較高,可增大這兩個參數值,參數的增大會加快訓練圖片數據集的速度。

圖7 訓練數據集的主函數部分代碼

數據集訓練完成后,使用detect.py 文件中的代碼對圖片進行檢測。圖8 展示了detect.py 文件中主函數部分的代碼。以下是對其中幾行代碼的修改說明:第151 行的代碼表示權重文件的路徑地址,該權重文件是訓練數據集后得出的最佳權重文件。第156 行的代碼用于讀取待檢測的圖片或視頻的路徑地址,將路徑地址設置為0可進行實時檢測。

圖8 圖像檢測的主函數部分代碼

3 實驗驗證與結果分析

本文以電阻、電容、電感等3C 零件為實驗對象,圖像采集后用Halcon 的標定結果(相機的內外參數)對圖像進行矯正,通過YOLOv5 算法進行目標檢測和識別。在使用算法之前,必須對訓練圖片進行標注打標簽,并將其轉換為適當的格式,以此創建訓練集和驗證集。此外,還需下載相應的預訓練權重,以便開始訓練自己的模型。圖像處理后,需要計算物體在圖像中像素坐標,并轉換為機器人所能識別的三維空間坐標。為此,采用九點標定法進行手眼標定,結合相機的標定結果,將物體所在位置的像素坐標轉換為世界坐標。隨后將這些坐標數據發送給機器人,引導機器人進行抓取操作。最后,使用PyCharm 集成所有程序,實現整體的功能。

在YOLOv5 算法中有s、m、l、x 等四個不同結構,結構不同,其檢測速度與檢測精度也不相同,實驗結果如表1 所列:

表1 YOLOv5 算法四種結構對比圖

其中,AP 為平均精確率,APtest、AP50 和APval 是三種不同類別的平均精確率,在同一個處理器(GPU)處理下,輸入大小一樣的圖片,通過平均精確率和不同類別的平均精確率,我們可以評估算法在不同結構下的檢測性能。根據數據分析,四種結構的檢測精度均滿足要求,YOLOv5x 在APval、APtest 和AP50 最高,這表明YOLOv5x 在檢測精度方面表現較好。YOLOv5s 在速度方面是最快的,僅需2.2ms,而YOLOv5x 則需要6.0ms,識別時間花費最多,速度最慢,且達不到檢測速度要求。

因此,本文選擇YOLOv5s 作為本項目的權重文件,YOLOv5s 在處理速度上表現非常出色,與較高的檢測精度之間取得了良好的平衡。

圖像識別檢測的精準度還與訓練數據集的輪數有關,下面是訓練數據集輪數為200 輪的相關照片,圖9 是訓練完成后得到的真實值的結果圖。圖中16 個正方形表格中,FN 是將要識別的物體錯認為是背景,FP 是代表背景可能會誤識別成需要識別的物體,正方形中的數字是百分比分數。其余正方形是需要識別的物體在其他訓練集中訓練得到的分數,用不同的圖片訓練出的分數也不一樣。

圖9 真實值結果圖

圖10 是真實值的曲線圖,F1 是精確率(模型識別出的樣本數占所有樣本數的比例)和召回率(模型識別出的樣本數占真實樣本數的比例)的調和平均數,橫軸為置信度閾值,置信度閾值的設定影響檢測結果的精確度和召回率。數據集訓練完成后結果的曲線圖如圖11 所示。

圖10 真實值曲線圖

圖11 結果曲線圖

圖11 中,橫軸為做訓練集圖片的張數;Box:YOLOV5使用GIOUloss 作為bounding box 的損失。Box 推測為GIoU損失函數均值越小,方框越準;Objectness:推測為目標檢測loss 均值,越小目標檢測越準;Classification:推測為分類loss 均值,越小分類越準;Precision:精度(找對的正類/所有找到的正類);Recall:真實為positive 的準確率,即正樣本有多少被找出來了(召回了多少);val BOX:驗證集bounding box 損失;val Objectness:驗證集目標檢測loss 均值;val classification:驗證集分類loss 均值;mAP@0.5:表示閾值大于0.5 的平均mAP;mAP@0.5:0.95(mAP@[0.5:0.95]):表示在不同IoU 閾值(從0.5 到0.95,步長0.05)(0.5、0.55、0.6、0.65、0.7、0.75、0.8、0.85、0.9、0.95)上的平均mAP。

訓練得到的真實值高,各種曲線穩定,此數據集對物體進行檢測,得出的精準度較高,識別檢測結果如圖12 所示。

圖12 識別檢測結果圖

使用訓練后的數據集對物體進行檢測,檢測結果表明,識別圖片最快的時間為0.02s,得出結果并保存圖片的時間為0.06s,對3C 零件的識別檢測有著不錯的表現。

4 結束語

本文針對3C 產品制造過程中的檢測和識別要求,提出一種基于特征點匹配的視覺識別方法,利用YOLOv5軟件算法搭配硬件系統,可以快速檢測產品安裝所需3C產品,提高生產效率。經實驗表明,識別檢測物體所需要的時間最快為0.02s,識別物體并輸出結果圖片的最快時間約為0.06s。通過實驗驗證了該方法對3C 產品的檢測有著良好的效果。

猜你喜歡
代碼標定物體
使用朗仁H6 Pro標定北汽紳寶轉向角傳感器
深刻理解物體的平衡
我們是怎樣看到物體的
創世代碼
創世代碼
創世代碼
創世代碼
基于勻速率26位置法的iIMU-FSAS光纖陀螺儀標定
船載高精度星敏感器安裝角的標定
為什么同一物體在世界各地重量不一樣?
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合