馬曉鋒 王中任
(①湖北文理學院機械工程學院,湖北 襄陽 441053;②智能制造與機器視覺襄陽市重點實驗室, 湖北 襄陽 441053)
曲軸為發(fā)動機的重要部件,對汽車正常行駛有著巨大影響,其中對曲軸螺紋孔組位置度的要求比較高,目前曲軸螺紋孔的檢測往往采用的是卡尺或者采用三坐標的檢測方法檢測。曲軸自身較重,搬運不方便,人工用卡尺檢測勞動量大,因疲勞容易漏檢,達不到產(chǎn)品所需精度,效率低。三坐標檢測雖然檢測精度好,但經(jīng)濟性不太好,對操作人員的專業(yè)技能要求較高,適用于抽樣檢查。與自動化檢測有一定差距,而機器視覺的測量方法填補了以上檢測存在的缺陷,操作簡單,效率和精度都較高。
在機器視覺的尺寸測量研究領域中,李文龍在測量輪轂尺寸中,用雙邊濾波和二值化相結合對圖像進行預處理,提出一種閾值自動計算法,得到輪轂端面各個孔徑大小以及與中心孔間距,實現(xiàn)了輪轂孔徑幾何參數(shù)的自動測量,但在系統(tǒng)搭建方面過于復雜,通用性不強[1]。任永強提出利用RANSAC算法,擬合缸套的內(nèi)外徑,實現(xiàn)了缸套內(nèi)外徑幾何參數(shù)的測量,相比最小二乘法,RANSAC算法更加精確,該算法是一個數(shù)據(jù)樣本集,通過該樣本集里隨機抽取數(shù)據(jù)點進行擬合,經(jīng)過大量的迭代計算,選取其中最優(yōu)的一組數(shù)據(jù),但是由于該算法自身局限性,迭代次數(shù)過多,測量時間偏長[2]。粟序明提出基于MATLAB設計了一套自動定位和測量的軸類零件系統(tǒng),驗證了自主開發(fā)算法的有效性且可以滿足工業(yè)應用要求,對操作人員專業(yè)素養(yǎng)較高,不利于推廣[3]。
目前深度學習發(fā)展迅速,針對以上情況,于是本文提出一種基于引導濾波與神經(jīng)網(wǎng)絡算法的螺紋孔檢測方法,結合RANSAC算法,使用Pytorch創(chuàng)建神經(jīng)網(wǎng)絡模型擬合曲線,提高效率與精度。第一,利用引導濾波和形態(tài)學對圖像進行預處理、去噪,使內(nèi)螺紋小徑邊緣清晰,去除螺紋孔徑邊緣的反光現(xiàn)象,便于輪廓的提取。第二,利用RANSAC算法去除外點,通過Pytorch搭建神經(jīng)網(wǎng)絡去擬合內(nèi)螺紋小徑,獲取大小及相對位置信息,為螺紋孔自動測量提供一種有效方法。
檢測視野大小為115 mm×78 mm,采用相機為2 000萬像素卷簾曝光相機,分辨率為5 472×3 648,像素精度為0.02 mm;鏡頭采用長焦低畸變鏡頭,能最大程度的減小視場角,減小畸變,鏡頭焦距為55 mm,工作距離為550±5 mm;光源采用環(huán)形光,工作距離為10 mm,設計系統(tǒng)簡易結構與檢測流程圖如圖1和圖2所示。
整個檢測平臺由1個視覺檢測平臺和1個夾具平臺組成,相機安裝位置調(diào)節(jié)通過連接板。方便調(diào)節(jié)光源位置,光源安裝在直線電機模塊上,直線電機模塊由導軌、電機和控制器組成,100 mm行程,自發(fā)脈沖,無需額外編程,工件放好后按開始鍵,光源移動到位,相機拍完圖像輸出結果后,再按離開鍵,光源自動挪走,視覺檢測平臺以及夾具平臺下方均安裝有萬向輪及防震墊,夾具平臺上需放置厚鐵板。該系統(tǒng)采集的曲軸端面如圖3所示。
首先用引導濾波對圖像進行預處理,去噪聲,將邊緣更好凸顯出來,然后用迭代法圖像二值化,進行Blob分析,將擬合區(qū)域區(qū)分出來,最后利用Canny算子提取端面內(nèi)螺紋小徑的邊緣特征[4]。
引導濾波與雙邊濾波相似,但在檢測邊緣附近細節(jié)上優(yōu)于雙邊濾波,沒有梯度變形,是一種時間復雜度為0的快速濾波器,在大窗口處理圖片時,其效率更高。
更進一步的說,該算法在一函數(shù)上的點與它周圍函數(shù)點的連線構成一次函數(shù),一個復雜函數(shù)可以用無數(shù)個這種一次函數(shù)來表示,如果求該復雜函數(shù)上某點的值時,轉(zhuǎn)化為求包含改點的所有一次函數(shù)值,再計算平均值[5],函數(shù)示意圖如圖4所示。
當一個二維函數(shù)圖像輸入進來,在一個二維窗口內(nèi),若該函數(shù)的輸出與輸入,滿足線性關系為:
qi=akIi+bk,?i∈Wk
(1)
I是輸入圖像值;q是輸出像素值;i、k是像素索引;a、b是當窗口中心位于k時,該線性函數(shù)的系數(shù)。兩邊取梯度為:
Δq=aΔI
(2)
可以知道輸入圖像值I梯度與像素值成a倍的關系,邊緣保持的特性來源于此,我們還需求出線性回歸為:
(3)
使真實值與輸出值偏差最小,其中p是待濾波圖像,然后通過最小二乘法得到:
(4)
(5)
(6)
這里,Wk是所有包含像素i的窗口;k是其中心位置。經(jīng)過引導濾波處理結果如圖5所示。
可以看出濾波后消除了一些花紋,表面污漬的干擾,留下了較為清晰的輪廓,便于后續(xù)邊緣提取。
經(jīng)過濾波后的圖像,消除了部分噪聲,由于光照、自身零件特性和外界影響,背景還是有大量干擾信息,不便提取孔徑,于是采用二值化的方法來進一步消除噪聲,假設目標圖像中當前像素為f(x,y),設定一閾值Th,跟據(jù)當前閾值,循環(huán)f(x,y),將圖像分為A,B兩類集合;分別計算它們像素均值μA和μB,公式為[6]:
(7)
(8)
其中NA與NB分別表示集合A、B中的像素個數(shù),然后更新閾值為:
(9)
計算新閾值與上一次閾值之差,是否滿足約束條件,若小于,則所計算出的新閾值為最佳閾值,否則,再繼續(xù)求出μA和μB,循環(huán)往復,計算機利用該算法圖像處理效果如圖6所示。
通過二值化圖像邊緣更加清晰明顯,利用Canny算子進行邊緣提取,計算多個方向的梯度,記錄方向和大小,然后進行NMS非極大值抑制,大小閾值, 提取的邊緣很細[7-8]。提取步驟為(1)~(4)。提取結果如圖7所示。
(1)高斯濾波器平滑圖像。
(2)計算像素點的梯度大小與方向。
(3)進行極大值抑制去除干擾。
(4)最后用高低閾值提取邊緣。
首先,準備數(shù)據(jù)集,將邊緣提取數(shù)據(jù)寫入Csv文件,利用Python中Pandas讀取,將數(shù)據(jù)做成數(shù)據(jù)集模樣。因為Pytorch只能處理二維數(shù)據(jù),于是使用Unsqueeze函數(shù)將一維數(shù)據(jù)轉(zhuǎn)換為二維數(shù)在進行處理。
其次,搭建神經(jīng)網(wǎng)絡,本文神經(jīng)網(wǎng)絡結構包含有1個輸入層,2個隱層,每個隱層包含50個神經(jīng)元,1個輸出層,將數(shù)據(jù)集通過輸入層輸入,輸入層通過第一層的權重參數(shù)W1到達隱層1,隱層1通過權重參數(shù)W2到隱層2,最后經(jīng)過權重參數(shù)W3輸出結果,本文采用神經(jīng)網(wǎng)絡結構如圖8所示。
每一層的輸出為上一層輸出與權重參數(shù)之積,易知是一個線性函數(shù),無論隱層與神經(jīng)元如何變化,輸出都是輸入的線性組合,隱層沒有任何效果,所以該模型引入tanh函數(shù)作為激活函數(shù),增加神經(jīng)網(wǎng)路模型的非線性,可以逼近任何函數(shù),這也是神經(jīng)網(wǎng)絡的最大特征[9]。
tanh是雙曲函數(shù)中的一個,為雙曲正切。公式為:
(10)
激活函數(shù)圖像如圖9所示。
為了評估模型預測效果如何,需計算回歸損失值,去優(yōu)化神經(jīng)網(wǎng)絡的參數(shù),減少神經(jīng)網(wǎng)絡的損失,該模型選擇MSELoss函數(shù),計算預測值和實際觀測值間差的平分的均值。只考慮誤差的平均大小,從而計算出損失,公式如(11)所示。
(11)
預測值與實際值偏差越大,損失值越大,擬合效果就不好。用該算法擬合效果如圖11所示。
從圖11可以看出,對準備的數(shù)據(jù)集擬合效果并不好,需增加優(yōu)化器,采用隨機梯度下降法(SGD),計算影響該神經(jīng)網(wǎng)絡架構的權重參數(shù),從而讓損失函數(shù)最小化,使得模型最優(yōu)。該算法是隨機從準備好的樣本集中抽出1組,進行訓練,更新一次梯度,如此循環(huán),在數(shù)據(jù)集過大時,無需訓練所有原本,可以加速學習,就能得到優(yōu)化模型。以0.02的學習率對梯度進行優(yōu)化,對于樣本的目標函數(shù):
(12)
對函數(shù)求導為:
(13)
參數(shù)更新:
(14)
定義了優(yōu)化器,更新參數(shù)。其中:j(i)(θ0,θ1)為目標函數(shù),hθ為待擬合函數(shù),x(i)為訓練樣本的樣本值,y(i)為標簽值,θ為模型權重參數(shù),α為下降系數(shù),即學習率。對準備的數(shù)據(jù)集擬合效果如圖12所示。
黑色即為擬合圓,損失函數(shù)根據(jù)梯度下降算法訓練的次數(shù)增多,函數(shù)逐漸趨于穩(wěn)定,趨于零,損失越來越小,表示該模型訓練效果較好,可以根據(jù)所需精度,設置訓練次數(shù),損失值變化曲線如圖13所示。
最后,將每個所需擬合的圓通過如此方法進行擬合,端面螺紋孔最終檢測如圖14所示。
該算法將提取的邊緣擬合完整,可以計算出各個螺紋孔的位置信息和直徑大小。
為了驗證曲軸端面螺紋孔視覺檢測系統(tǒng)的適用性,以及精度測量,取型號YC4W75曲軸進行測試,用型號W15-M2-17-15819的FARO測量臂對螺紋孔外徑進行測量,精度可達0.018 mm,結果為其標準值,將該系統(tǒng)測量的數(shù)據(jù)為測量值,測試結果如圖15與表1所示。
表1 螺紋孔測量結果
螺紋1與螺紋10都是M10的螺紋,其余都是M11的螺紋根據(jù)標準,內(nèi)螺紋小徑的誤差范圍應保持在0.1 mm以內(nèi),根據(jù)測試結果,誤差范圍都在行業(yè)標準以內(nèi),滿足要求。
表2 螺紋孔位置測量結果
曲軸螺紋孔與中心孔的相對位置,利用圖像處理軟件,將其坐標表示出來,計算兩點之間的距離。工業(yè)上各個螺栓孔的要求范圍在0.25 mm以內(nèi),在上述測量結果中,在此標準范圍內(nèi),滿足工業(yè)要求。
結合文獻內(nèi)容,對比其他,周金波等人利用最小二乘法對沖孔孔徑檢測精度為0.395 mm[1]、李文龍等人利用機器視覺方法對輪轂孔徑檢測精度為0.100 mm[2]、任永強等人利用RANSAC算法擬合缸套內(nèi)外徑檢測精度為0.100 mm[3]、粟序明等人利用MATLAB 自動定位和測量軸類零件精度為0.200 mm等[4],相關測量文獻中,檢測精度在0.100 mm以內(nèi)較少,只有些許專業(yè)測量儀能夠達到,本文提出方法擬合效果好,精度更高。
搭建了曲軸端面螺紋孔視覺檢測系統(tǒng),采用引導濾波和形態(tài)學對圖像進行預處理,消除了噪聲點,使邊緣更加清晰清晰。結合RANSAC算法,利用Pytorch搭建神經(jīng)網(wǎng)絡擬合目標圓,通過優(yōu)化器不斷更新模型,精度也更高于其他擬合方法,獲取螺紋孔的圓心位置以及圓心間的距離。通過實驗與數(shù)據(jù)對比,滿足工業(yè)現(xiàn)場精度要求,實現(xiàn)了曲軸端面螺紋孔位置信息的自動測量。