伍錫如,邱濤濤
(桂林電子科技大學 電子工程與自動化學院,廣西 桂林 541004)
隨著汽車儀表生產過程的自動化需求不斷提高,如何開發出一種高效、實時的指針檢測方法成為當前人工智能領域的熱點課題[1-3]。面對自動檢測技術不斷激增的需求[4-5],大多數企業仍采用人工視覺視檢的方法來檢測儀表指針,人工檢測方法受工作狀態影響,導致檢測標準難以統一,無法滿足流水線上儀表的產量需求,檢測效率和精度也隨之受到影響。由于指針目標較小,對應的像素中包含的特征很少,會導致存在漏檢的情況。
現有的儀表指針檢測主要基于經典圖像處理方法來實現[6],通過匹配目標形狀與顏色特征來檢測指針位置[7-9]。例如,文獻[10]中,作者提出了一種改進的中心投影法,通過定位圓形比例區域來匹配指針輪廓獲得指針位置。Hao 等[11]基于OpenCV 提出并實現了一種汽車儀表自動檢測指針系統;Gao 等[12]提出了一種魯棒的字符分割分類器,該分類器是通過級聯定向梯度直方圖HOG/支持向量機SVM 二進制分類器來識別儀表板指針。基于形狀特征與顏色特征的方法抗噪性較好,但提取的信息并不充分,且計算量大對硬件支持需求較大,沒有考慮實時性與泛化性的需求。因此研究一種汽車儀表指針快速實時檢測方法具有重要的現實意義。
近年來,深度學習方法在圖像的識別和檢測方面涌現了許多優秀成果,成為當前熱點研究領域[13-15]。例如,曹錦綱等[16]提出一種基于生成式對抗網絡應用于交通場景運動模糊圖像增強,能夠以較好的圖像視覺效果完成模糊圖像的增強。文獻[17]通過卷積神經網絡(CNN)與循環神經網絡(RNN)結合,能夠實現交通場景端到端語義描述,具有很好的魯棒性。Ren 等[18]提出基于卷積神經網絡的Faster R-CNN 算法,該網絡擁有較強的語義表達和特征表達能力,泛化性能良好。Wu 等[19]基于Faster R-CNN 實現不同尺度的人臉面部檢測,提高了人臉檢測的效率。文獻[20]使用Faster R-CNN 網絡實現了人、車及動物等鐵路異物的侵限檢測,取得了較好的效果。深度學習使得識別與檢測納入一個整體流程,實現端到端的學習[21-24]。
鑒于以上研究,本文提出了一種基于改進Faster R-CNN 汽車儀表指針實時檢測方法。采用RoI Align 層替代原始的RoI Pooling 層,保留了小目標的完整像素信息。基于雙線性內插方法使特征聚集過程連續化,縮短了特征映射的計算時間。通過多組不同類型的儀表指針實驗,在檢測時間和檢測精度上進行實驗評估,驗證了所提方法的高效性和實時性。
Faster R-CNN 算法網絡框架如圖1 所示。整體框架由區域建議網絡(region proposal network,RPN)和Fast R-CNN 檢測網絡兩部分構成。當圖像輸入網絡后,由檢測網絡中的卷積網絡層提取儀表指針特征,得到卷積特征層。卷積特征層被后續的RPN 層與檢測網絡層共享。RPN 層使用錨點與特征層,獲取指針位置信息并輸入到RoI Pooling 中,RoI 層利用所得到指針位置,進一步微調指針在原圖像中的位置,獲取儀表指針的精確位置信息,輸出標定結果。

圖1 Faster R-CNN 整體框架Fig.1 Faster R-CNN overall framework
RPN 是一個全卷積網絡,用來得到候選區域并輸出一組矩形區域建議。它使用一個n×n滑動窗口在卷積網絡層輸出的卷積特征層上滑動來提取區域建議,該網絡同時提供多個預測區域建議,每個位置最大的滑窗建議數量為k。對于不同大小的對象,使用3 個比例尺1282、2562、5122與3 種長寬比(1∶1、1∶2、2∶1)的滑動窗口,可以得到k=9 種類型滑動窗口。
獲得的9 個錨點用來預測9 個候選區域,每個候選區域用一個四維向量(x,y,w,h) 來表示,x、y、w、h分別代表邊界框的中心點坐標及其高和寬。通過式(1) 實現檢測框與真實框的重疊校準:
式中:Ax、Ay、Aw、Ah表示檢測框的4 個坐標向量;表示真實框的4 個坐標向量。通過平移、變換來對式(1)求解,可得到以下4 個變換,即平移2 個和縮放2 個。

平移:

式中dx、dy、dw、dh表示線性變換。
計算邊界框的回歸:

式中:x和y表示邊界框的中心坐標;tx、ty表示平移因子;tw、th表示縮放因子。
對于單一圖像,損失函數定義為

分類和回歸損失函數分別為

式中:i表示最小采樣中錨點的指數;表示錨點預測目標的概率,當錨點為正樣本,;當錨點為負樣本,;λ 為常量,用于控制分類損失和回歸損失的平衡;ti表示候選框的參數化坐標;表示錨點為正樣本候選框的坐標。
從圖1 中可以得到,Fast R-CNN 作為檢測網絡,卷積網絡層由卷積、Relu 和池化組成,負責對輸入圖像提取特征,對于全圖只進行一次區域特征的提取,減少了特征的搜索時間。RoI Pooling 層由共享特征卷積層與RPN 層給出的多個建議區域作為輸入。全連接層結構實現將高維數據進行一系列非線性變換,通過卷積操作將對應指針區域合并成固定大小的特征圖,利用標定框回歸實現指針檢測框修正以更加準確的位置,輸出指針檢測結果。
檢測網絡實現流程如下:
1) 使用卷積網絡層提取圖片中指針的特征;
2) 通過RPN 網絡給出的建議區域,判定是否屬于檢測目標指針;
3) 使用標定框回歸來不斷逼近真實目標區域;
4) 通過全連接網絡層回歸獲取指針精確的位置;
5) 輸出指針檢測結果。
改進的Faster R-CNN 指針檢測實現流程(見圖2),包括在線實時檢測與離線訓練模型兩個過程。在線實時檢測通過加載待檢測指針圖像,網絡對其進行學習與檢測,給出指針檢測結果。離線訓練通過工業機采集儀表指針數據之后,以預訓練的模型在數據集上進行訓練,通過特征提取和學習不同類型的儀表指針,得到優化后的指針檢測模型,根據指針類型不同,通過反饋機制實現檢測模型的及時更新。離線訓練能夠保證模型適應不同類別儀表指針,提升模型遷移能力。對于所獲得的更新之后的訓練模型,在線實時檢測可以調用更新之后的網絡模型,實現將待檢測的儀表指針數據集加載進去并實現自動給出檢測結果,完成在線實時檢測。

圖2 檢測算法流程Fig.2 Detection algorithm flow
為保證算法檢測準確度,本文從真實指針儀表生產線獲取工業機錄制的儀表指針轉動視頻,按照固定幀數裁剪成圖片集,圖片分辨率為2 448×2 050,再使用LabelImg 標注軟件轉換成VOC2007[25]數據集格式,構成網絡模型預訓練的數據集。VOC 格式數據集主要包括:1)訓練樣本集、驗證樣本集和測試樣本集;2)每個樣本圖像對應的XML 信息文件;3)樣本圖像類別標簽的TXT 文件。為了保證預訓練模型的泛化能力,通過收集并擴充不同類別的指針儀表添加到數據集中,數據集總量為8000 張,對其按比例進行劃分,以總體數據集的70%作為訓練樣本集,20%作為驗證樣本集,10%作為測試樣本集。
檢測網絡中的RoI Pooling 層,在特征計算中需要通過兩次量化操作來得到回歸框的位置,輸出固定大小的特征映射。兩次量化操作是不連續的且像素計算形式為整數(見圖3),計算過程會舍去小數點后的數值,從而丟失圖像像素。而對于小目標檢測,像素的丟失可能會導致特征的丟失,以至于檢測不到目標對象。同時,兩次的量化操作也會增加網絡的計算時間,影響實時性。

圖3 RoI Pooling 與RoI Align 改進實現機制Fig.3 Improved implementation mechanism of RoI Pooling and RoI Align
針對兩次量化操作導致的圖像像素丟失問題,本文采用RoI Align 層取代RoI Pooling 層的策略進行改進。改進的機制是使用雙線性內插取代兩次量化操作,使得特征聚集的計算變成一個連續的過程。RoI Align 層通過遍歷每一個候選區域,能以浮點數的形式計算回歸框的位置,保留了像素坐標的小數部分而不作量化處理,有效提高了小目標的檢測能力。改進前后的效果如圖3所示,對于大小為960×960 的特征區域,如果使用原始的RoI Pooling 層,第一次量化操作舍去了0.9 個像素,縮放到原圖就是30 個像素的差別,并且像素的分辨率越大,丟失的像素信息越多。與之相比,使用RoI Align 層的改進處理,完整地保留了圖像的像素信息,在檢測準確度上得到了較大的提升。雙線性內插算法定義如下:
沿x方向的線性插值為

式中:Qab=(xa,yb)(a=1,2;b=1,2),表示已知的4 個點坐標;f(x,y1)、f(x,y2) 表示沿x方向進行線性插值。
沿y方向的進行線性插值為

目標線性插值的結果為

對式(10)求偏導,可得

式中:d(i,i?(r,j)) 表示兩點之間距離;Δh與 Δw表示xi與i?(r,j) 之間的差異是水平和垂直坐標。
雙線性內插計算步驟為:針對加載圖像信息,設定圖像矩陣為I、縮放因子zmf(zmf>0),分情況討論,當0
本實驗基于Caffe 深度學習平臺,操作系統為Ubuntu16.04,網絡選用端到端的訓練方式。修改網絡結構之后,同時調整網絡超參數。網絡學習率初始化為0.01,一共迭代13000 次,迭代到8500 次時將學習率改為0.001。得到訓練模型之后,隨機選取測試集中的樣本,使用所得到的訓練模型檢測不同類別的儀表指針圖片,評估模型的檢測能力測試結果如圖4 所示。由圖4(a)~(d)可知,對于不同的兩類速度儀表指針,本文采用的方法可以有效地標定出指針的準確位置。針對圖4(e)、(f)中不同類型的轉速儀表盤指針,同樣具有較準確的檢測效果,表明改進網絡能有效地提取并學習儀表指針的高維特征,證明實際生產環境下,改進的Faster R-CNN 算法對于儀表指針的檢測是可行和有效的。

圖4 不同類型的儀表指針檢測結果Fig.4 Different types of instrument pointer test results
為了驗證訓練模型的泛化能力,使用未經過訓練的不同類型速度儀表指針圖片作為檢測樣本,測試結果如圖5 所示。從圖5 可知,不同類型的儀表外觀差異很大,表盤顏色和指針形狀變化明顯。對于未經過訓練的儀表樣本,本文方法依然可以檢測并準確地標出指針的位置,表明所訓練的模型具有較強的泛化能力與遷移能力。

圖5 遷移實驗檢測結果Fig.5 Migration test results
本文所提的檢測網絡為兩階段網絡,為了驗證所提算法網絡性能,將本文方法與單階段檢測網絡YOLO-v3 進行了比較,實驗結果如圖6所示。

圖6 YOLO-v3 檢測結果Fig.6 YOLO-v3 test results
從YOLO-v3 實驗結果可知,單階段網絡可以實現儀表指針檢測,但是存在指針檢測區域有偏差且準確率不高的問題。YOLO-v3 網絡將采集的特征直接用于檢測,雖然降低了檢測時間,但缺少標定框的回歸與參數學習,導致其檢測準確率相對較低,計算性能如表1 所示。

表1 單張圖片檢測時間和精度對比Table 1 Single-image detection time and accuracy comparison
進一步驗證本文算法的有效性,對現有的Hough 方法采用相同的數據集進行實驗,實驗結果如圖7 所示。檢測時間和精度對比由表1 可見,Hough 直線檢測需要計算坐標并將其映射到另一坐標空間點的峰值,導致其運算檢測時間較長,且易受到圖片中其他直線空間復雜度干擾,導致檢測精度低,算法魯棒性較差。

圖7 Hough 算法檢測結果Fig.7 Hough algorithm test results
將本文算法與YOLO-v3 網絡、經典Hough 方法以及HOG/SVM 方法進行對比,具體結果如表1所示。經過計算,本文提出的改進Faster R-CNN算法在驗證集的平均測試精度高達92.7%,在單個GPU 上單張圖片的平均檢測時間約為0.197 s,優于其他方法檢測精度與檢測時間,可達到實時檢測的目的。以上結果表明,改進方法能夠實現儀表指針快速檢測且滿足準確度的要求,滿足指針儀表在實際檢測應用中的需求。
為了保證模型學習性能,原始與改進的網絡分別在訓練8500 次的時候改變一次學習率,訓練過程的各階段網絡損失如圖8、9 所示。圖8(a)、(b)是原始Faster R-CNN 的回歸與分類損失曲線,圖8(c)、(d)表示改進Faster R-CNN 的回歸與分類損失曲線。圖9 是訓練損失曲線對比。結合圖8和圖9 可知,原始的網絡損失出現波動,且下降不穩定。改進網絡能夠更快地收斂速度下降,且下降穩定,出現波動小。損失值快速下降表明改進Faster R-CNN 網絡可以有效地學習儀表指針的特征,回歸損失能夠快速收斂,并且加以更正標定框完成指針檢測。

圖8 回歸與分類損失曲線對比Fig.8 Comparison of the regression and classification loss curves

圖9 訓練損失曲線對比Fig.9 Comparison of the training loss curves
汽車的儀表指針快速實時檢測是汽車制造行業生產過程自動化與智能化迫切需要攻破的技術難題。實際生產環境中,人工視檢任務繁重,自動化程度低,檢測難度較大。本文以深度學習主流框架Faster R-CNN 為基礎,通過改進網絡層架構,提高圖像特征傳遞能力,調整超參數,實現了儀表指針的快速檢測。通過實驗結果驗證,單張圖片檢測時間為0.197 s,檢測精度達到92.7%,證明了所提方法的有效性和實時性。后續的遷移測試表明訓練的模型具有良好的遷移泛化能力。