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