袁縱青,徐惠鋼,謝 啟
(1.常熟理工學(xué)院電氣與自動化工程學(xué)院,江蘇常熟 215500;2.中國礦業(yè)大學(xué)信息與控制工程學(xué)院,江蘇徐州 221008)
汽車零部件的質(zhì)量極其關(guān)鍵,實施汽車零部件的追溯制度[1-2]很重要。常用的汽車零部件追溯是采用直接在產(chǎn)品上壓印字符的方法,由此對零部件的相關(guān)信息進(jìn)行標(biāo)識。因此,大量的零件表面字符信息需要被識讀。對于零件表面字符信息的識讀,傳統(tǒng)的方法是直接采用人工的方式,通過人眼讀取然后手動輸入計算機(jī)。這種方式檢測效率低、勞動強(qiáng)度大且容易出現(xiàn)錯檢或漏檢等問題,不能滿足流水作業(yè)以及自動化生產(chǎn)發(fā)展的需求。為了適應(yīng)自動化生產(chǎn)的需要,將機(jī)器視覺技術(shù)引入到汽車零部件檢測中,用于識別汽車零部件的產(chǎn)品型號、日期等信息。同時,利用該技術(shù)可實現(xiàn)相關(guān)加工工藝質(zhì)量的檢測,實現(xiàn)對沖孔直徑的檢測,該技術(shù)具有非接觸、精度高以及便于自動化管理的特點。
本課題要實現(xiàn)對零部件的字符和沖孔直徑的檢測。針對這兩個檢測項,本文設(shè)計了一套基于機(jī)器視覺的零部件檢測系統(tǒng),進(jìn)行線上自動檢測,并將檢測信息保存到數(shù)據(jù)庫中。
本系統(tǒng)硬件部分主要由4個部分組成:工業(yè)相機(jī)、光學(xué)鏡頭、光源、伺服電機(jī)等構(gòu)成的圖像采集裝置;氣缸夾爪、位置傳感器、伺服電機(jī)構(gòu)成的不良品分揀裝置;傳送帶、簡單限位載具等構(gòu)成的運料裝置;數(shù)據(jù)采集卡、工控機(jī)等構(gòu)成的信息采集和軟件處理裝置。圖1為系統(tǒng)的整體3D模型圖。軟件部分主要包含了圖像采集模塊、運動控制模塊、圖像處理模塊和數(shù)據(jù)存儲模塊。
圖1 系統(tǒng)整體3D模型圖
(1)圖像采集裝置設(shè)計:由于字符在不同型號零件的分布位置不同,綜合考慮相機(jī)的視野范圍不夠大和成本問題,設(shè)計了CCD檢測機(jī)構(gòu)。該機(jī)構(gòu)由伺服電機(jī)及絲桿裝置構(gòu)成,相機(jī)可自由在絲桿上移動,可以針對不同型號的零件確定拍照位置。由于零件字符是壓印的,通過對比實驗選擇了VC75-W型號的同軸光源安裝在CCD檢測機(jī)構(gòu)上。感應(yīng)器被安裝在傳送帶的一側(cè),當(dāng)感應(yīng)器感應(yīng)到產(chǎn)品時,觸發(fā)相機(jī)拍照。設(shè)計的圖像采集裝置如圖2所示。
圖2 圖像采集裝置
(2)不良品分揀裝置:當(dāng)零件沖孔不合格時需要將其從流水線上取下,因為傳送帶是移動的,為了得到不合格產(chǎn)品的準(zhǔn)確位置信息,需要計算傳送帶的移動距離,可以根據(jù)伺服電機(jī)的脈沖數(shù)來得到不合格零件在傳送帶上移動的距離,當(dāng)零件到達(dá)指定位置時,氣缸夾爪抓取不合格零件,通過伺服電機(jī)及絲桿裝置放到不良品箱中。設(shè)計的不良品分揀裝置如圖3所示。
圖3 不良品分揀裝置
檢測系統(tǒng)在啟動后,需要先進(jìn)行系統(tǒng)硬件參數(shù)和軟件參數(shù)的初始化,然后由上料端上料,當(dāng)零件達(dá)到檢測工位時感應(yīng)器觸發(fā)相機(jī)進(jìn)行圖像采集,采集完成后傳輸至本地計算機(jī)進(jìn)行圖像處理,分別對字符和沖孔進(jìn)行檢測,將檢測結(jié)果保存到數(shù)據(jù)庫中,總體的流程如圖4所示。
圖4 檢測系統(tǒng)軟件流程圖
由于零件與傳送帶有著較明顯的對比度,對于沖孔的檢測,先使用閾值分割方法,再利用像素點面積特征和圓度特征來提取沖孔區(qū)域。
(1)
式中T為灰度閾值。
圖5所示為采集的零件圖像的灰度直方圖,經(jīng)實驗驗證,當(dāng)選取灰度閾值T=180,可以將目標(biāo)區(qū)域和背景區(qū)域分離。閾值分割完成后,計算連通域的個數(shù),設(shè)每個連通域的像素點面積為area(i),其中:(i=1,2,3,…,n),根據(jù)大量實驗,當(dāng)area(i)∈[16 000,20 000]時,可將沖孔區(qū)域以及一些干擾區(qū)域篩選出來。然后通過計算上述篩選區(qū)域的圓度[3]可以將沖孔區(qū)域提取出來,圓度的計算公式如式(2)所示。
(2)
式中:C為圓度;F為區(qū)域面積;rmax為區(qū)域中心到輪廓點的最大值。
圖5 零件灰度直方圖
設(shè)篩選區(qū)域的圓度為circularity(i),其中:(i=1,2,…,n),經(jīng)大量實驗驗證,當(dāng)圓度circularity(i)>0.9時,可以將沖孔區(qū)域提取出來,如圖6所示為提取的沖孔區(qū)域。
圖6 提取的沖孔區(qū)域
由于沖壓的孔不是完全意義上的圓形,所以需要將沖孔的邊緣進(jìn)行擬合。擬合前,需要獲取沖孔區(qū)域邊緣信息,在分析幾種常用的邊緣檢測算子之后,選取Canny邊緣檢測算子檢測沖孔區(qū)域的邊緣。由于對沖孔直徑的檢測不需要太高的精度,所以提取像素級別的邊緣,如圖7所示。最后,使用最小二乘法將邊緣輪廓擬合成圓,將邊緣輪廓上的點到擬合圓的距離相加,使求得的距離之和最小,如式(3)所示,由此計算出沖孔的直徑為2ρ,當(dāng)直徑超過產(chǎn)品零件允許誤差時,就會被系統(tǒng)判定成不合格品,由不良品分揀裝置夾出。
(3)
式中:(a,b)為擬合圓的圓心坐標(biāo);ρ為擬合圓的半徑;(ri,ci)為邊緣輪廓上的點。
圖7 像素級別邊緣提取
傳統(tǒng)的字符檢測需要經(jīng)過圖像預(yù)處理、字符定位、字符分割、字符識別操作完成,其流程如圖8所示。
圖8 傳統(tǒng)字符識別方法流程圖
本系統(tǒng)采用基于CTPN模型[4-5]的定位和基于CRNN模型[6-7]的字符識別方法,將自然場景下的文本檢測應(yīng)用到特定的汽車零部件檢測場景中,去除了圖像預(yù)處理和字符分割等步驟,相比于傳統(tǒng)的檢測方法,簡化了處理流程。新的識別處理流程如圖9所示。
圖9 本系統(tǒng)使用的字符識別處理流程圖
由于在采集圖像時可能會出現(xiàn)字符被產(chǎn)品塑料件遮擋、產(chǎn)品擺放傾斜問題,此外,零件型號多,字符在零件上的分布情況比較復(fù)雜,本系統(tǒng)使用文獻(xiàn)[8]自然場景下的文本檢測方法,使用CTPN模型進(jìn)行零件字符區(qū)域的定位。
CTPN模型利用了RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))和CNN(卷積神經(jīng)網(wǎng)絡(luò))的無縫結(jié)合來提高檢測精度。其中,CNN用來提取深度特征,RNN用于序列的特征識別,二者無縫結(jié)合,在檢測效果上魯棒性更好。它的步驟如下:
(1)采用VGG16的前5個Conv Stage進(jìn)行特征提取,得到大小為W×H×C的conv5特征映射。然后在conv5上做3×3的滑動窗口得到一個長度為3×3×C的特征向量。
(2)將特征輸入到一個雙向的LSTM中,得到一個W×256的輸出,再將這個結(jié)果輸入到一個512維的全連接層。
(3)通過分類或線性回歸可以得到3個輸出:2k vertical coordinates(表示選擇框的高度和中心的y軸的坐標(biāo))、2k scores(表示k個anchor的類別信息,說明其是否為字符)、k side-refinement(表示選擇框的水平偏移量)。使用非標(biāo)準(zhǔn)極大值抑制算法濾除多余的文本框。
由于要檢測16種型號零件,選取每種型號1 000張圖片制作數(shù)據(jù)集,在數(shù)據(jù)集上對VGG-Net進(jìn)行訓(xùn)練,訓(xùn)練所用的平臺為Ubuntu18.04系統(tǒng),用訓(xùn)練好的模型進(jìn)行測試,測試效果如圖10所示,在圖10(a)字符被塑料件遮擋(零件A)、圖10(b)產(chǎn)品色差較大且傾斜(零件B)的情況下有良好的定位效果。
(a)字符被塑料件遮擋
(b)產(chǎn)品色差大且傾斜圖10 測試效果圖
字符區(qū)域定位成功后,傳統(tǒng)的方法需要將字符分割出來,然后再進(jìn)行識別,使得處理流程相對復(fù)雜。
CRNN是一種基于深度學(xué)習(xí)的端到端的識別方法,不需要顯示加入文字切割,它將文字識別轉(zhuǎn)化為序列學(xué)習(xí)問題,對圖像尺度不同、文本長度不同的文本識別具有良好的準(zhǔn)確率。CRNN的網(wǎng)絡(luò)架構(gòu)由卷積層、循環(huán)層和轉(zhuǎn)錄層構(gòu)成。卷積層用于提取每個輸入圖像的特征序列,在卷積網(wǎng)絡(luò)之后構(gòu)建了一個循環(huán)網(wǎng)絡(luò),用于對卷積層輸出的特征序列的每一幀進(jìn)行預(yù)測。最后,通過轉(zhuǎn)錄層將循環(huán)網(wǎng)絡(luò)的每幀預(yù)測轉(zhuǎn)化為標(biāo)簽序列。具體的操作:將輸入的圖像歸一化為100×32高度的字符串圖像,然后基于7層CNN(一般使用VGG16)提取特征圖,把特征圖按列切分(Map-to-Sequence),再將每列的512維特征輸入到兩層各256單元的雙向LSTM進(jìn)行分類。在訓(xùn)練過程中,通過基于聯(lián)結(jié)時序分類(connectionist temporal classification,CTC)損失函數(shù)實現(xiàn)字符位置與類標(biāo)的近似對齊,輸出不定長的序列結(jié)果。
經(jīng)過CTPN模型實現(xiàn)字符定位成功后,輸出的是檢測文本框的位置信息和文本的概率,在進(jìn)行字符識別時是進(jìn)行字符串圖像的識別,將不同型號零件對應(yīng)位置識別到的字符串信息保存到數(shù)據(jù)庫中。設(shè)圖像中一共有n個文本框,其左上角頂點分別為{(x1,y1),(x2,y2),…,(xn,yn) },檢測順序按照文本框的左上角縱坐標(biāo)y1,y2,…,yn從大到小排序,若yi=ym=…=yn,則將xi,xm,…,xn對應(yīng)的字符串圖像按照從小到大的順序識別,識別結(jié)果為result1,result2,…,resultn(n為正整數(shù)),將檢測到的字符信息保存到數(shù)據(jù)庫中。
本系統(tǒng)選取16種型號零件,每種型號1 000張圖片,按照Synth90數(shù)據(jù)集的格式制作數(shù)據(jù)集。在Ubuntu18.04系統(tǒng)下使用GPU進(jìn)行加速訓(xùn)練。用訓(xùn)練好的模型進(jìn)行測試,測試結(jié)果如圖11和圖12所示,字符串1、字符串2、字符串3分別是兩款零件截取的字符串圖像,檢測結(jié)果如圖11(d)、圖12(d)所示,可以看出對于字符遮擋和對比度不高的壓印字符,CRNN模型具有良好的識別效果。
圖11 產(chǎn)品A檢測結(jié)果
圖12 產(chǎn)品B檢測結(jié)果
由于本系統(tǒng)需要檢測的汽車零件共有16種型號,為了驗證本系統(tǒng)的檢測效果,進(jìn)行了現(xiàn)場驗證。由于沖孔類型一致,對于沖孔的檢測,選擇6種型號零件進(jìn)行測試,每個沖孔用千分尺測量5次直徑并取平均值;用檢測系統(tǒng)測量6種型號零件的直徑,結(jié)果對比如表1所示。由表1可知,使用檢測系統(tǒng)測量的直徑與用千分尺測量的直徑真值誤差很小,檢測精度較高,滿足企業(yè)的檢測要求。對于零件字符的檢測,每種型號選擇100個零件進(jìn)行測試,測試結(jié)果表明,字符的識別正確率達(dá)到了96%,取得了良好的檢測效果。通過查詢保存的零件數(shù)據(jù)信息,可以提高對產(chǎn)品的監(jiān)管力度。
表1 沖孔測量結(jié)果 mm
本系統(tǒng)實現(xiàn)了圖像采集、圖像處理、信息保存的整個流程。經(jīng)測試,本系統(tǒng)穩(wěn)定性好,可擴(kuò)展性強(qiáng),檢測效率明顯超越了人工的方法,有著較高的檢測準(zhǔn)確率,基本滿足工業(yè)的生產(chǎn)需求,達(dá)到了預(yù)期的目標(biāo)。