伍錫如,邱濤濤
(桂林電子科技大學(xué) 電子工程與自動化學(xué)院,廣西 桂林 541004)
隨著汽車儀表生產(chǎn)過程的自動化需求不斷提高,如何開發(fā)出一種高效、實時的指針檢測方法成為當前人工智能領(lǐng)域的熱點課題[1-3]。面對自動檢測技術(shù)不斷激增的需求[4-5],大多數(shù)企業(yè)仍采用人工視覺視檢的方法來檢測儀表指針,人工檢測方法受工作狀態(tài)影響,導(dǎo)致檢測標準難以統(tǒng)一,無法滿足流水線上儀表的產(chǎn)量需求,檢測效率和精度也隨之受到影響。由于指針目標較小,對應(yīng)的像素中包含的特征很少,會導(dǎo)致存在漏檢的情況。
現(xiàn)有的儀表指針檢測主要基于經(jīng)典圖像處理方法來實現(xiàn)[6],通過匹配目標形狀與顏色特征來檢測指針位置[7-9]。例如,文獻[10]中,作者提出了一種改進的中心投影法,通過定位圓形比例區(qū)域來匹配指針輪廓獲得指針位置。Hao 等[11]基于OpenCV 提出并實現(xiàn)了一種汽車儀表自動檢測指針系統(tǒng);Gao 等[12]提出了一種魯棒的字符分割分類器,該分類器是通過級聯(lián)定向梯度直方圖HOG/支持向量機SVM 二進制分類器來識別儀表板指針。基于形狀特征與顏色特征的方法抗噪性較好,但提取的信息并不充分,且計算量大對硬件支持需求較大,沒有考慮實時性與泛化性的需求。因此研究一種汽車儀表指針快速實時檢測方法具有重要的現(xiàn)實意義。
近年來,深度學(xué)習(xí)方法在圖像的識別和檢測方面涌現(xiàn)了許多優(yōu)秀成果,成為當前熱點研究領(lǐng)域[13-15]。例如,曹錦綱等[16]提出一種基于生成式對抗網(wǎng)絡(luò)應(yīng)用于交通場景運動模糊圖像增強,能夠以較好的圖像視覺效果完成模糊圖像的增強。文獻[17]通過卷積神經(jīng)網(wǎng)絡(luò)(CNN)與循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)結(jié)合,能夠?qū)崿F(xiàn)交通場景端到端語義描述,具有很好的魯棒性。Ren 等[18]提出基于卷積神經(jīng)網(wǎng)絡(luò)的Faster R-CNN 算法,該網(wǎng)絡(luò)擁有較強的語義表達和特征表達能力,泛化性能良好。Wu 等[19]基于Faster R-CNN 實現(xiàn)不同尺度的人臉面部檢測,提高了人臉檢測的效率。文獻[20]使用Faster R-CNN 網(wǎng)絡(luò)實現(xiàn)了人、車及動物等鐵路異物的侵限檢測,取得了較好的效果。深度學(xué)習(xí)使得識別與檢測納入一個整體流程,實現(xiàn)端到端的學(xué)習(xí)[21-24]。
鑒于以上研究,本文提出了一種基于改進Faster R-CNN 汽車儀表指針實時檢測方法。采用RoI Align 層替代原始的RoI Pooling 層,保留了小目標的完整像素信息。基于雙線性內(nèi)插方法使特征聚集過程連續(xù)化,縮短了特征映射的計算時間。通過多組不同類型的儀表指針實驗,在檢測時間和檢測精度上進行實驗評估,驗證了所提方法的高效性和實時性。
Faster R-CNN 算法網(wǎng)絡(luò)框架如圖1 所示。整體框架由區(qū)域建議網(wǎng)絡(luò)(region proposal network,RPN)和Fast R-CNN 檢測網(wǎng)絡(luò)兩部分構(gòu)成。當圖像輸入網(wǎng)絡(luò)后,由檢測網(wǎng)絡(luò)中的卷積網(wǎng)絡(luò)層提取儀表指針特征,得到卷積特征層。卷積特征層被后續(xù)的RPN 層與檢測網(wǎng)絡(luò)層共享。RPN 層使用錨點與特征層,獲取指針位置信息并輸入到RoI Pooling 中,RoI 層利用所得到指針位置,進一步微調(diào)指針在原圖像中的位置,獲取儀表指針的精確位置信息,輸出標定結(jié)果。
圖1 Faster R-CNN 整體框架Fig.1 Faster R-CNN overall framework
RPN 是一個全卷積網(wǎng)絡(luò),用來得到候選區(qū)域并輸出一組矩形區(qū)域建議。它使用一個n×n滑動窗口在卷積網(wǎng)絡(luò)層輸出的卷積特征層上滑動來提取區(qū)域建議,該網(wǎng)絡(luò)同時提供多個預(yù)測區(qū)域建議,每個位置最大的滑窗建議數(shù)量為k。對于不同大小的對象,使用3 個比例尺1282、2562、5122與3 種長寬比(1∶1、1∶2、2∶1)的滑動窗口,可以得到k=9 種類型滑動窗口。
獲得的9 個錨點用來預(yù)測9 個候選區(qū)域,每個候選區(qū)域用一個四維向量(x,y,w,h) 來表示,x、y、w、h分別代表邊界框的中心點坐標及其高和寬。通過式(1) 實現(xiàn)檢測框與真實框的重疊校準:
式中:Ax、Ay、Aw、Ah表示檢測框的4 個坐標向量;表示真實框的4 個坐標向量。通過平移、變換來對式(1)求解,可得到以下4 個變換,即平移2 個和縮放2 個。
平移:
式中dx、dy、dw、dh表示線性變換。
計算邊界框的回歸:
式中:x和y表示邊界框的中心坐標;tx、ty表示平移因子;tw、th表示縮放因子。
對于單一圖像,損失函數(shù)定義為
分類和回歸損失函數(shù)分別為
式中:i表示最小采樣中錨點的指數(shù);表示錨點預(yù)測目標的概率,當錨點為正樣本,;當錨點為負樣本,;λ 為常量,用于控制分類損失和回歸損失的平衡;ti表示候選框的參數(shù)化坐標;表示錨點為正樣本候選框的坐標。
從圖1 中可以得到,F(xiàn)ast R-CNN 作為檢測網(wǎng)絡(luò),卷積網(wǎng)絡(luò)層由卷積、Relu 和池化組成,負責(zé)對輸入圖像提取特征,對于全圖只進行一次區(qū)域特征的提取,減少了特征的搜索時間。RoI Pooling 層由共享特征卷積層與RPN 層給出的多個建議區(qū)域作為輸入。全連接層結(jié)構(gòu)實現(xiàn)將高維數(shù)據(jù)進行一系列非線性變換,通過卷積操作將對應(yīng)指針區(qū)域合并成固定大小的特征圖,利用標定框回歸實現(xiàn)指針檢測框修正以更加準確的位置,輸出指針檢測結(jié)果。
檢測網(wǎng)絡(luò)實現(xiàn)流程如下:
1) 使用卷積網(wǎng)絡(luò)層提取圖片中指針的特征;
2) 通過RPN 網(wǎng)絡(luò)給出的建議區(qū)域,判定是否屬于檢測目標指針;
3) 使用標定框回歸來不斷逼近真實目標區(qū)域;
4) 通過全連接網(wǎng)絡(luò)層回歸獲取指針精確的位置;
5) 輸出指針檢測結(jié)果。
改進的Faster R-CNN 指針檢測實現(xiàn)流程(見圖2),包括在線實時檢測與離線訓(xùn)練模型兩個過程。在線實時檢測通過加載待檢測指針圖像,網(wǎng)絡(luò)對其進行學(xué)習(xí)與檢測,給出指針檢測結(jié)果。離線訓(xùn)練通過工業(yè)機采集儀表指針數(shù)據(jù)之后,以預(yù)訓(xùn)練的模型在數(shù)據(jù)集上進行訓(xùn)練,通過特征提取和學(xué)習(xí)不同類型的儀表指針,得到優(yōu)化后的指針檢測模型,根據(jù)指針類型不同,通過反饋機制實現(xiàn)檢測模型的及時更新。離線訓(xùn)練能夠保證模型適應(yīng)不同類別儀表指針,提升模型遷移能力。對于所獲得的更新之后的訓(xùn)練模型,在線實時檢測可以調(diào)用更新之后的網(wǎng)絡(luò)模型,實現(xiàn)將待檢測的儀表指針數(shù)據(jù)集加載進去并實現(xiàn)自動給出檢測結(jié)果,完成在線實時檢測。
圖2 檢測算法流程Fig.2 Detection algorithm flow
為保證算法檢測準確度,本文從真實指針儀表生產(chǎn)線獲取工業(yè)機錄制的儀表指針轉(zhuǎn)動視頻,按照固定幀數(shù)裁剪成圖片集,圖片分辨率為2 448×2 050,再使用LabelImg 標注軟件轉(zhuǎn)換成VOC2007[25]數(shù)據(jù)集格式,構(gòu)成網(wǎng)絡(luò)模型預(yù)訓(xùn)練的數(shù)據(jù)集。VOC 格式數(shù)據(jù)集主要包括:1)訓(xùn)練樣本集、驗證樣本集和測試樣本集;2)每個樣本圖像對應(yīng)的XML 信息文件;3)樣本圖像類別標簽的TXT 文件。為了保證預(yù)訓(xùn)練模型的泛化能力,通過收集并擴充不同類別的指針儀表添加到數(shù)據(jù)集中,數(shù)據(jù)集總量為8000 張,對其按比例進行劃分,以總體數(shù)據(jù)集的70%作為訓(xùn)練樣本集,20%作為驗證樣本集,10%作為測試樣本集。
檢測網(wǎng)絡(luò)中的RoI Pooling 層,在特征計算中需要通過兩次量化操作來得到回歸框的位置,輸出固定大小的特征映射。兩次量化操作是不連續(xù)的且像素計算形式為整數(shù)(見圖3),計算過程會舍去小數(shù)點后的數(shù)值,從而丟失圖像像素。而對于小目標檢測,像素的丟失可能會導(dǎo)致特征的丟失,以至于檢測不到目標對象。同時,兩次的量化操作也會增加網(wǎng)絡(luò)的計算時間,影響實時性。
圖3 RoI Pooling 與RoI Align 改進實現(xiàn)機制Fig.3 Improved implementation mechanism of RoI Pooling and RoI Align
針對兩次量化操作導(dǎo)致的圖像像素丟失問題,本文采用RoI Align 層取代RoI Pooling 層的策略進行改進。改進的機制是使用雙線性內(nèi)插取代兩次量化操作,使得特征聚集的計算變成一個連續(xù)的過程。RoI Align 層通過遍歷每一個候選區(qū)域,能以浮點數(shù)的形式計算回歸框的位置,保留了像素坐標的小數(shù)部分而不作量化處理,有效提高了小目標的檢測能力。改進前后的效果如圖3所示,對于大小為960×960 的特征區(qū)域,如果使用原始的RoI Pooling 層,第一次量化操作舍去了0.9 個像素,縮放到原圖就是30 個像素的差別,并且像素的分辨率越大,丟失的像素信息越多。與之相比,使用RoI Align 層的改進處理,完整地保留了圖像的像素信息,在檢測準確度上得到了較大的提升。雙線性內(nèi)插算法定義如下:
沿x方向的線性插值為
式中:Qab=(xa,yb)(a=1,2;b=1,2),表示已知的4 個點坐標;f(x,y1)、f(x,y2) 表示沿x方向進行線性插值。
沿y方向的進行線性插值為
目標線性插值的結(jié)果為
對式(10)求偏導(dǎo),可得
式中:d(i,i?(r,j)) 表示兩點之間距離;Δh與 Δw表示xi與i?(r,j) 之間的差異是水平和垂直坐標。
雙線性內(nèi)插計算步驟為:針對加載圖像信息,設(shè)定圖像矩陣為I、縮放因子zmf(zmf>0),分情況討論,當0
本實驗基于Caffe 深度學(xué)習(xí)平臺,操作系統(tǒng)為Ubuntu16.04,網(wǎng)絡(luò)選用端到端的訓(xùn)練方式。修改網(wǎng)絡(luò)結(jié)構(gòu)之后,同時調(diào)整網(wǎng)絡(luò)超參數(shù)。網(wǎng)絡(luò)學(xué)習(xí)率初始化為0.01,一共迭代13000 次,迭代到8500 次時將學(xué)習(xí)率改為0.001。得到訓(xùn)練模型之后,隨機選取測試集中的樣本,使用所得到的訓(xùn)練模型檢測不同類別的儀表指針圖片,評估模型的檢測能力測試結(jié)果如圖4 所示。由圖4(a)~(d)可知,對于不同的兩類速度儀表指針,本文采用的方法可以有效地標定出指針的準確位置。針對圖4(e)、(f)中不同類型的轉(zhuǎn)速儀表盤指針,同樣具有較準確的檢測效果,表明改進網(wǎng)絡(luò)能有效地提取并學(xué)習(xí)儀表指針的高維特征,證明實際生產(chǎn)環(huán)境下,改進的Faster R-CNN 算法對于儀表指針的檢測是可行和有效的。
圖4 不同類型的儀表指針檢測結(jié)果Fig.4 Different types of instrument pointer test results
為了驗證訓(xùn)練模型的泛化能力,使用未經(jīng)過訓(xùn)練的不同類型速度儀表指針圖片作為檢測樣本,測試結(jié)果如圖5 所示。從圖5 可知,不同類型的儀表外觀差異很大,表盤顏色和指針形狀變化明顯。對于未經(jīng)過訓(xùn)練的儀表樣本,本文方法依然可以檢測并準確地標出指針的位置,表明所訓(xùn)練的模型具有較強的泛化能力與遷移能力。
圖5 遷移實驗檢測結(jié)果Fig.5 Migration test results
本文所提的檢測網(wǎng)絡(luò)為兩階段網(wǎng)絡(luò),為了驗證所提算法網(wǎng)絡(luò)性能,將本文方法與單階段檢測網(wǎng)絡(luò)YOLO-v3 進行了比較,實驗結(jié)果如圖6所示。
圖6 YOLO-v3 檢測結(jié)果Fig.6 YOLO-v3 test results
從YOLO-v3 實驗結(jié)果可知,單階段網(wǎng)絡(luò)可以實現(xiàn)儀表指針檢測,但是存在指針檢測區(qū)域有偏差且準確率不高的問題。YOLO-v3 網(wǎng)絡(luò)將采集的特征直接用于檢測,雖然降低了檢測時間,但缺少標定框的回歸與參數(shù)學(xué)習(xí),導(dǎo)致其檢測準確率相對較低,計算性能如表1 所示。
表1 單張圖片檢測時間和精度對比Table 1 Single-image detection time and accuracy comparison
進一步驗證本文算法的有效性,對現(xiàn)有的Hough 方法采用相同的數(shù)據(jù)集進行實驗,實驗結(jié)果如圖7 所示。檢測時間和精度對比由表1 可見,Hough 直線檢測需要計算坐標并將其映射到另一坐標空間點的峰值,導(dǎo)致其運算檢測時間較長,且易受到圖片中其他直線空間復(fù)雜度干擾,導(dǎo)致檢測精度低,算法魯棒性較差。
圖7 Hough 算法檢測結(jié)果Fig.7 Hough algorithm test results
將本文算法與YOLO-v3 網(wǎng)絡(luò)、經(jīng)典Hough 方法以及HOG/SVM 方法進行對比,具體結(jié)果如表1所示。經(jīng)過計算,本文提出的改進Faster R-CNN算法在驗證集的平均測試精度高達92.7%,在單個GPU 上單張圖片的平均檢測時間約為0.197 s,優(yōu)于其他方法檢測精度與檢測時間,可達到實時檢測的目的。以上結(jié)果表明,改進方法能夠?qū)崿F(xiàn)儀表指針快速檢測且滿足準確度的要求,滿足指針儀表在實際檢測應(yīng)用中的需求。
為了保證模型學(xué)習(xí)性能,原始與改進的網(wǎng)絡(luò)分別在訓(xùn)練8500 次的時候改變一次學(xué)習(xí)率,訓(xùn)練過程的各階段網(wǎng)絡(luò)損失如圖8、9 所示。圖8(a)、(b)是原始Faster R-CNN 的回歸與分類損失曲線,圖8(c)、(d)表示改進Faster R-CNN 的回歸與分類損失曲線。圖9 是訓(xùn)練損失曲線對比。結(jié)合圖8和圖9 可知,原始的網(wǎng)絡(luò)損失出現(xiàn)波動,且下降不穩(wěn)定。改進網(wǎng)絡(luò)能夠更快地收斂速度下降,且下降穩(wěn)定,出現(xiàn)波動小。損失值快速下降表明改進Faster R-CNN 網(wǎng)絡(luò)可以有效地學(xué)習(xí)儀表指針的特征,回歸損失能夠快速收斂,并且加以更正標定框完成指針檢測。
圖8 回歸與分類損失曲線對比Fig.8 Comparison of the regression and classification loss curves
圖9 訓(xùn)練損失曲線對比Fig.9 Comparison of the training loss curves
汽車的儀表指針快速實時檢測是汽車制造行業(yè)生產(chǎn)過程自動化與智能化迫切需要攻破的技術(shù)難題。實際生產(chǎn)環(huán)境中,人工視檢任務(wù)繁重,自動化程度低,檢測難度較大。本文以深度學(xué)習(xí)主流框架Faster R-CNN 為基礎(chǔ),通過改進網(wǎng)絡(luò)層架構(gòu),提高圖像特征傳遞能力,調(diào)整超參數(shù),實現(xiàn)了儀表指針的快速檢測。通過實驗結(jié)果驗證,單張圖片檢測時間為0.197 s,檢測精度達到92.7%,證明了所提方法的有效性和實時性。后續(xù)的遷移測試表明訓(xùn)練的模型具有良好的遷移泛化能力。