劉 堯,朱善安
(浙江大學(xué) 電氣工程學(xué)院,浙江 杭州 310027)
水平尺是一種檢測(cè)或者測(cè)量水平和垂直度的測(cè)量工具。根據(jù)不同的工作原理,水平尺可以分為氣泡水平尺、電子水平尺和激光水平尺等不同類型,使用最為廣泛的是氣泡水平尺。
氣泡水平尺通過氣泡與左右參考線的距離來判斷是否水平。在氣泡水平尺生產(chǎn)環(huán)節(jié)中,需要將水平尺放置在標(biāo)準(zhǔn)水平臺(tái)上,根據(jù)氣泡位于左右參考線之間的距離進(jìn)行矯正。過去國(guó)內(nèi)生產(chǎn)廠家大多由工人肉眼觀察,判斷氣泡是否位于左右參考線正中央,再人工進(jìn)行矯正。這種方案速度慢、主觀性強(qiáng)而且誤差大。
隨著技術(shù)的發(fā)展,機(jī)器視覺方法被應(yīng)用到工業(yè)生產(chǎn)環(huán)節(jié)中。魏煜[1-2]結(jié)合最優(yōu)閾值變換和輪廓跟蹤實(shí)現(xiàn)了水平尺偏移的高精度檢測(cè),盛偉[3]結(jié)合Canny算子與加權(quán)最小二乘法設(shè)計(jì)了一種強(qiáng)魯棒性的氣泡端點(diǎn)定位方法,喻婷[4]結(jié)合數(shù)學(xué)形態(tài)學(xué)和輪廓跟蹤設(shè)計(jì)了一種快速準(zhǔn)確的氣泡偏移距離計(jì)算方法。
近年來,深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)在圖像分類與識(shí)別上的研究取得了突破性進(jìn)展。在目標(biāo)檢測(cè)領(lǐng)域中,YOLO(you only look once)[5]和SSD(single shot multibox detector)[6]是綜合準(zhǔn)確率與檢測(cè)速度最好的兩種方法。YOLO檢測(cè)效率達(dá)到了45 fps,在VOC2007數(shù)據(jù)集上mAP達(dá)到了63.4%。SSD結(jié)合了YOLO的回歸思想與Faster R-CNN[7]的anchor boxes機(jī)制,在VOC2007數(shù)據(jù)集上mAP達(dá)到了74.3%,幀率達(dá)到了59 fps。YOLO與SSD兩種模型都能達(dá)到實(shí)時(shí)檢測(cè)的效率。
本文針對(duì)氣泡水平尺大角度偏斜工件的自動(dòng)矯正問題,對(duì)YOLO與SSD兩種深度學(xué)習(xí)目標(biāo)檢測(cè)模型進(jìn)行研究,設(shè)計(jì)一種基于深度學(xué)習(xí)的氣泡水平尺自動(dòng)矯正方案,采用C/S網(wǎng)絡(luò)結(jié)構(gòu),客戶端采集圖像并發(fā)送至服務(wù)端,服務(wù)端使用深度學(xué)習(xí)目標(biāo)檢測(cè)模型對(duì)圖像進(jìn)行檢測(cè),提取左、右參考線所在的圖像區(qū)域,結(jié)合概率霍夫變換與最小二乘法擬合直線,計(jì)算傾斜角度結(jié)果返回客戶端,客戶端控制電機(jī)將大傾斜角度矯正到水平的位置。
自動(dòng)矯正是指在標(biāo)準(zhǔn)水平臺(tái)上,通過計(jì)算機(jī)控制電機(jī)旋轉(zhuǎn)氣泡工件,將氣泡置于左、右參考線的正中間。
工業(yè)攝像機(jī)采集到的氣泡工件圖像如圖(1~3)所示。
圖1 合格的氣泡圖像
圖2 小偏斜角度的氣泡圖像
圖3 大偏斜角度的氣泡圖像
其中,圖1是矯正合格的圖像,氣泡位于左、右參考線的正中間。圖2與圖3是待矯正的氣泡圖像,圖2氣泡工件偏斜度較小,氣泡位于左、右參考線之間但不居中,圖3偏斜度較大。文獻(xiàn)[4]中的方案能夠在圖2所示的情形下,快速準(zhǔn)確地計(jì)算出氣泡的偏移距離。但對(duì)圖3的情形,其算法不能一步到位,而是采用逐步調(diào)整法,控制電機(jī)以一定步長(zhǎng)逐步調(diào)整使氣泡位于左右參考線之間,再進(jìn)行分析處理。
逐步法每次調(diào)整都要對(duì)圖像重新進(jìn)行采樣分析,如果步長(zhǎng)設(shè)置小需要較長(zhǎng)的調(diào)整時(shí)間,步長(zhǎng)設(shè)置過大又可能出現(xiàn)震蕩。而氣泡任意時(shí)刻偏斜角度的信息包含在左、右參考線上,工件偏斜角度與參考線的角度呈互余的關(guān)系,以參考線為目標(biāo),對(duì)圖像進(jìn)行檢測(cè),提取目標(biāo)并計(jì)算參考線的傾斜角度,就可以一步到位地對(duì)大偏斜角度的工件進(jìn)行矯正。
本文中要檢測(cè)的氣泡水平尺的平行參考線在矯正過程中只有傾斜角度的變化,因而對(duì)不同傾斜角度的圖像進(jìn)行采集作為模型訓(xùn)練樣本。同時(shí)為了使模型具有魯棒性,樣本集中加入了不同光照條件下的圖像。
本文采集了1 000張不同傾斜角度不同光照的氣泡圖片作為樣本集,并對(duì)樣本集中的參考線進(jìn)行標(biāo)定,隨機(jī)選取其中的800張樣本作為訓(xùn)練集,剩余200張作為測(cè)試集。額外采集100張圖片作為驗(yàn)證集。
YOLO使用整張圖像作為輸入,將目標(biāo)檢測(cè)問題轉(zhuǎn)化成回歸問題,在網(wǎng)絡(luò)輸出層回歸位置信息和類別信息,極大地提高了檢測(cè)效率。YOLOv1將輸入圖像劃分為S*S個(gè)網(wǎng)格,每個(gè)網(wǎng)格預(yù)測(cè)B個(gè)目標(biāo)外接框。在輸出端,每個(gè)外接框輸出置信度和預(yù)測(cè)位置信息(x,y,w,h),置信度計(jì)算公式如下:
(1)
式中:Pr(Object)—當(dāng)前外接框預(yù)測(cè)目標(biāo)存在的精確度;IOU—衡量目標(biāo)位置預(yù)測(cè)精確度的指標(biāo)。
假設(shè)預(yù)測(cè)目標(biāo)外接矩形框?yàn)锳,標(biāo)定的真實(shí)目標(biāo)外接框?yàn)锽,IOU定義為AB交集與并集的面積比,表達(dá)式如下:
(2)
同時(shí),每個(gè)網(wǎng)格輸出類別信息(C個(gè)類別),最終網(wǎng)絡(luò)輸出S*S*(B*5+C)維向量。網(wǎng)絡(luò)模型由24個(gè)級(jí)聯(lián)卷積層加上兩個(gè)全連接層構(gòu)成,網(wǎng)絡(luò)需要對(duì)目標(biāo)是否存在以及目標(biāo)的位置與類別進(jìn)行回歸。
損失函數(shù)為:
(3)
式中:(x,y,w,h)部分—目標(biāo)位置和尺寸的預(yù)測(cè);C部分—當(dāng)前外接目標(biāo)框是否包含目標(biāo)的置信度預(yù)測(cè);p(c)部分—目標(biāo)的類別預(yù)測(cè)。
YOLOv2[8]將原來的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了改進(jìn),移除了全連接層,借鑒了Faster R-CNN中的anchorboxes方法,使用anchor boxes來預(yù)測(cè)最終的目標(biāo)外接框。anchor boxes是一種目標(biāo)框搜索方案,由一組中心點(diǎn)相同、不同寬高比的矩形構(gòu)成,anchor boxes示意圖如圖4所示。
圖4 anchor boxes示意圖
圖4中:虛線方格為預(yù)設(shè)anchor boxes。
Faster R-CNN中,anchor boxes的個(gè)數(shù)與寬高維度都是手動(dòng)設(shè)定的先驗(yàn)框,anchor boxes的設(shè)計(jì)與最終的檢測(cè)精度直接相關(guān)。但不同樣本集中,目標(biāo)形狀大小各不相同,對(duì)特定目標(biāo)的檢測(cè)依照手動(dòng)設(shè)定的方法有時(shí)并不能取得很好的效果。YOLO v2中采用k-means聚類的方法,對(duì)于樣本集標(biāo)注的目標(biāo)框真實(shí)寬高數(shù)據(jù)進(jìn)行聚類,以聚類類別數(shù)k為最終anchor boxes候選框的個(gè)數(shù),以每一類別的中心對(duì)應(yīng)的寬高作為該anchor box的寬高,在數(shù)據(jù)集中進(jìn)行性能分析。本文使用氣泡樣本集對(duì)應(yīng)的目標(biāo)標(biāo)注信息作為聚類樣本,anchor box數(shù)取1到6,分別迭代訓(xùn)練10 000次后,不同模型在驗(yàn)證集上得到的結(jié)果如表1所示。
表1 不同anchor boxes數(shù)測(cè)試結(jié)果
從表1中可以看出:隨著anchor boxes數(shù)量的增大,驗(yàn)證集上的平均IOU越高,增量越來越少,anchor boxes數(shù)量取值為5之后幾乎不再增長(zhǎng),這與文獻(xiàn)[8]中呈現(xiàn)的規(guī)律相仿;并且anchor boxes數(shù)量設(shè)定越高,待選目標(biāo)區(qū)域越多,計(jì)算時(shí)間越長(zhǎng)。綜合精度、誤檢數(shù)和計(jì)算時(shí)間,本文最終設(shè)定anchorboxes數(shù)為5。
SSD是全卷積結(jié)構(gòu),同樣采用anchor boxes方法,不同之處在于SSD使用了不同維度的特征圖,高維特征圖中的一個(gè)點(diǎn)對(duì)應(yīng)了原始圖像的一塊區(qū)域,低層特征圖的感受野較小,高層的感受野較大。不同特征圖的感受視野不一樣。SSD在不同尺度特征圖提取了8 732個(gè)anchor boxes信息,最后對(duì)所有的anchor boxes做非極大值抑制輸出候選結(jié)果。SSD的損失函數(shù)為:
(4)
損失函數(shù)包括了置信度損失與位置損失兩部分,其中置信度部分的損失函數(shù)為:
(5)
位置部分的損失函數(shù)為:
(6)
(7)
(8)
(9)
(10)
本文在相同的樣本集上訓(xùn)練YOLO與SSD模型,并在驗(yàn)證集上對(duì)比了YOLO與SSD檢測(cè)結(jié)果的IOU,結(jié)果如圖5所示。
圖5 YOLO與SSD在驗(yàn)證集上IOU對(duì)比
經(jīng)統(tǒng)計(jì),YOLO檢測(cè)一張圖像的平均時(shí)間為0.023 5 s,SSD為0.021 7 s,均能達(dá)到實(shí)時(shí)檢測(cè)的要求。驗(yàn)證集一共是100張圖片200個(gè)目標(biāo),YOLO模型漏檢數(shù)為0,平均IOU達(dá)到了0.729。SSD模型漏檢數(shù)為16,平均IOU為0.676。綜合檢測(cè)精度與效率,本文最終選擇YOLO模型,檢測(cè)效果如圖(6,7)所示。
圖6 YOLO的檢測(cè)效果(光照條件良好)
圖7 YOLO的檢測(cè)效果(光照條件不佳)
由此可以看到:在光線不佳的條件下,模型也能準(zhǔn)確地檢測(cè)出工件的左、右參考線。
由于參考線與矯正傾角是互余的關(guān)系,研究人員能通過前景圖像中參考線的傾斜角度折算出工件的傾斜角度。本研究采用Canny算子對(duì)獲得的前景圖像(工件的左右參考線)區(qū)域進(jìn)行邊緣提取,如圖8所示。
圖8 提取的前景圖像與其邊緣圖像
獲得邊緣圖像后,需要對(duì)邊緣直線方程進(jìn)行擬合,常用的圖像直線擬合方法有最小二乘法和霍夫變換。
(1)最小二乘法是最常見的線性回歸方法之一,通過最小化誤差平方和能獲得亞像素級(jí)別的回歸直線。最小二乘法速度快,但對(duì)噪聲敏感,擬合數(shù)據(jù)點(diǎn)集的選取直接影響擬合精度。
(2)霍夫變換是一種參數(shù)轉(zhuǎn)換算法,將圖像的直角坐標(biāo)系(x-y空間)映射到極坐標(biāo)參數(shù)空間(θ-ρ空間),再對(duì)極坐標(biāo)空間下的直線參數(shù)進(jìn)行累計(jì)投票,最終確定直線方程。坐標(biāo)轉(zhuǎn)換方程為:
xcosθ+ysinθ=ρ
(11)
式中:θ—直線法線與x軸的傾斜角度(0≤θ≤180°);ρ—原點(diǎn)到直線的距離。
霍夫變換以一定分辨率將極坐標(biāo)參數(shù)θ與ρ離散化為若干區(qū)間,每個(gè)區(qū)間設(shè)置一個(gè)計(jì)數(shù)器,對(duì)每個(gè)數(shù)據(jù)點(diǎn)(xi,yi),遍歷離散的θj,求得相應(yīng)的ρj,相應(yīng)區(qū)間的計(jì)數(shù)器增加1。最終計(jì)數(shù)器值大于設(shè)定閾值參數(shù)的便是獲得的直線參數(shù)對(duì)θ-ρ。霍夫變換參數(shù)分辨率影響了計(jì)算時(shí)間,過度細(xì)分的參數(shù)空間可能無法獲得足夠的計(jì)數(shù)造成檢測(cè)失敗[9]。改進(jìn)的概率霍夫變換[10]采用隨機(jī)抽取的方式,同樣采取計(jì)數(shù)器,當(dāng)相應(yīng)參數(shù)對(duì)計(jì)數(shù)值大于設(shè)定閾值時(shí),便將這條直線擬合出來,有效提高了標(biāo)準(zhǔn)霍夫變換的耗時(shí)問題。
由于參考線本身并不是標(biāo)準(zhǔn)的直線,在設(shè)備安裝過程中,圖像采集攝像機(jī)與工件存在細(xì)微的偏角,加上光照的影響,獲取到的參考線可能有彎折,如圖8中右邊參考線的邊緣。本文結(jié)合概率霍夫變換和最小二乘法,首先用概率霍夫變換去除噪聲,然后對(duì)保留的點(diǎn)集進(jìn)行最小二乘直線擬合。對(duì)一個(gè)工件能提取兩條參考線的4條邊緣線,本文設(shè)計(jì)了兩種工件傾斜角度的擬合方法:
方法一:對(duì)4條邊緣點(diǎn)集,采用概率霍夫變換獲得潛在直線所在區(qū)域,以此排除掉參考線畸變的部分點(diǎn)集,之后對(duì)區(qū)域內(nèi)的點(diǎn)集做最小二乘直線擬合計(jì)算邊緣傾角,最后取4條邊緣傾斜角度的平均值作為整個(gè)工件的傾斜角度。
方法二:考慮工件參考線的粗細(xì),獲取兩條邊緣線每一行的中點(diǎn)作為待擬合直線,采用概率霍夫變換與最小二乘進(jìn)行擬合,以兩條中心線擬合結(jié)果的均值作為整個(gè)工件的傾斜角度。
圖像像素點(diǎn)以矩陣形式存儲(chǔ),其坐標(biāo)都是實(shí)整數(shù)。除了0°,45°,90°,135°傾角的直線能夠精確地?cái)M合(均方誤差和為0),其他角度的邊緣直線都有一定的測(cè)量誤差,故以人工測(cè)量圖像中直線的傾斜角作為標(biāo)準(zhǔn)來評(píng)判沒有意義。本文的目的是盡可能地將工件一步到位矯正到水平位置,而矯正角度由輸出給伺服電機(jī)的脈沖數(shù)數(shù)量決定,因此,從水平合格位置起,給定脈沖數(shù)量,將工件旋轉(zhuǎn)一定角度,通過YOLO模型提取參考線區(qū)域,并對(duì)參考線邊緣點(diǎn)集進(jìn)行擬合,折算成要矯正的脈沖數(shù),以此為標(biāo)準(zhǔn)對(duì)兩種工件傾斜角度擬合方法進(jìn)行對(duì)比分析。
本研究中,伺服電機(jī)106個(gè)脈沖對(duì)應(yīng)360°,每個(gè)脈沖矯正的角度為3.6°×10-4。經(jīng)過測(cè)算,氣泡從合格位置到與任意一條參考線相觸的脈沖數(shù)為1 650。分別將工件從合格位置處順時(shí)針和逆時(shí)針旋轉(zhuǎn)10 000,20 000,30 000,40 000,50 000和60 000個(gè)脈沖,獲得的實(shí)驗(yàn)結(jié)果如表2所示。
表2 不同折算方法結(jié)果對(duì)比(單位:脈沖數(shù))
由表2中數(shù)據(jù)可以看出:方法一對(duì)逆時(shí)針方向計(jì)算比較準(zhǔn)確,最大誤差為1 573個(gè)脈沖,而在順時(shí)針方向最大誤差為4 472個(gè)脈沖數(shù),大于氣泡與參考線相碰的脈沖數(shù),不能將氣泡矯正到參考線之間;方法二在兩個(gè)方向上的最大誤差為1 602個(gè)脈沖,小于1 650,能夠?qū)⒐ぜ拇蠼嵌绕背C正到氣泡位于左右參考線之間的位置。因而本文選擇方法二作為計(jì)算工件傾斜角度的方法。
深度學(xué)習(xí)網(wǎng)絡(luò)模型計(jì)算速度與硬件性能相關(guān),綜合硬件成本與實(shí)際生產(chǎn)場(chǎng)景,本文采用C/S網(wǎng)絡(luò)結(jié)構(gòu),主要流程為:客戶端采集圖像并將數(shù)據(jù)發(fā)送至服務(wù)端,服務(wù)端計(jì)算最終結(jié)果返回至客戶端,客戶端控制電機(jī)對(duì)工件進(jìn)行矯正。本文將該方案與文獻(xiàn)[4]的方法進(jìn)行了效率對(duì)比,測(cè)試矯正10個(gè)工件的平均時(shí)間如表3所示(測(cè)試平臺(tái):客戶端windows7,i3-3.7 GHz;服務(wù)端:Ubuntu16.04,i7-4.20 GHz, GeForce GTX 1080)。
表3 不同傾斜角度下矯正平均時(shí)間對(duì)比(單位:s)
從表3中可以看出:由于該方案能夠?qū)馀萜苯嵌冗M(jìn)行計(jì)算,跳過了逐步調(diào)整繁雜的過程,提高了矯正效率,尤其在大偏斜的情況下速度提升明顯。
本文設(shè)計(jì)的基于深度學(xué)習(xí)的氣泡水平尺工件自動(dòng)矯正方案,能夠檢測(cè)任意傾斜角度工件圖像中的參考線,對(duì)光照有良好的魯棒性,同時(shí)提高了工件矯正效率。
本文的工作尚有一些方面需要改進(jìn):
(1)本方案中采用了C/S網(wǎng)絡(luò)結(jié)構(gòu),實(shí)現(xiàn)了對(duì)單一客戶端的實(shí)時(shí)檢測(cè)與矯正,未來在實(shí)際生產(chǎn)環(huán)節(jié)中還需對(duì)服務(wù)端進(jìn)行改進(jìn),使其能對(duì)多條流水線采集到的工件圖像并行處理,節(jié)約硬件成本,提高整體效率;
(2)本文的研究場(chǎng)景中目標(biāo)只有光照與傾斜角度的變化,雖然在訓(xùn)練樣本集總體規(guī)模偏小的情況下已取得了不錯(cuò)的檢測(cè)精度,但是為了更大程度地發(fā)揮模型的性能,未來可以考慮擴(kuò)大訓(xùn)練樣本集,或者在保持模型網(wǎng)絡(luò)特性的前提下精簡(jiǎn)網(wǎng)絡(luò)結(jié)構(gòu),以提升訓(xùn)練效果與計(jì)算速度。
:
[1] 魏 煜,朱善安.最優(yōu)閾值變換和輪廓跟蹤在輪廓檢測(cè)中的應(yīng)用[J].計(jì)算機(jī)工程與應(yīng)用,2004,40(24):88-90.
[2] 魏 煜,朱善安.圖像處理在水平尺標(biāo)定系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用研究,2004,21(12):168-169.
[3] 盛 偉, WANG Qing-guo,朱善安.基于Canny邊緣檢測(cè)和加權(quán)最小二乘法的氣泡水平儀實(shí)時(shí)檢測(cè)方法[J].機(jī)電工程,2016,33(10):1182-1187.
[4] 喻 婷,朱善安.基于數(shù)學(xué)形態(tài)學(xué)的氣泡水平尺自動(dòng)檢測(cè)系統(tǒng)研究[J].機(jī)電工程,2017,34(3):213-218.
[5] REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: unified, real-time object detection[C]. IEEE Conference on Computer Vision and Pattern Recognition, Las Vegas: IEEE Computer Society,2016.
[6] LIU W, ANGUELOV D, ERHAN D, et al. SSD: single shot MultiBoxDetector[J]. Lectiure Notes in Computer Science,2016(9905):21-37.
[7] REN S, HE K, GIRSHICK R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks[J].IEEETransactionsonPatternAnalysis&MachineIntelligence,2015,39(6):1137.
[8] REDMON J, FARHADI A. Yolo9000: Better, faster, stronger[C]. IEEE Conference On Computer Vision and Pattern Recognttion, Honolulu: IEEE,2017.
[9] 郭斯羽,翟文娟,唐 求,等.結(jié)合Hough變換與改進(jìn)最小二乘法的直線檢測(cè)[J].計(jì)算機(jī)科學(xué),2012,39(4):196-200.
[10] MATAS J, GALAMBOS C, KITTLER J. Progressive Probabilistic Hough Transform[C]. British Machine Vision Conference 1998, Southampton: DBLP,1998.