劉全周,賈鵬飛,李占旗,王述勇,王啟配
(中國汽車技術研究中心有限公司,天津 300300)
隨著經(jīng)濟的快速發(fā)展,人們對產(chǎn)品的開發(fā)和生產(chǎn)周期也提出了更高的要求。人工智能技術因具有精度高、成本低,能減少人工負荷的優(yōu)點,已經(jīng)被廣泛應用到實際工程當中[1]。
汽車儀表總成是汽車安全系統(tǒng)的重要組成部分,它可以實時顯示汽車的信號狀態(tài)[2]。小型化、集成化以及多功能化是汽車儀表總成未來發(fā)展的核心方向,其主要意義是為了滿足汽車對于便捷、實用等方面的需求[3]。國內(nèi)外學者在汽車儀表領域已做了大量的研究工作,Alegria等[4](2000年)利用背影法對儀表盤的圖案標識進行了采集,并利用Hough變換對儀表指針進行了檢測,計算出了指針的偏轉角度;Jaffery等[5](2011年)利用攝像頭對儀表圖像進行實時采集,然后選取合適的閾值對圖像進行二值化處理,實時輸出檢測結果。國內(nèi),岳曉峰等[6](2014年)對汽車儀表盤的信息進行識別,通過SIFI算法獲得目標位置區(qū)域,再進行細化,并通過最小二乘法得到儀表指針的直線方程;鄧書勤等[7](2017年)提出一種快速的汽車儀表盤標識配準算法,可獲取匹配特征并求取匹配參數(shù),并進行了儀表標識的匹配實驗。
從上述的研究來看,國內(nèi)外的研究主要是通過傳統(tǒng)算法對儀表標識進行提取和檢測,很少對儀表的標識進行自動化定位和辨別,而傳統(tǒng)圖像識別的算法流程是事先提取圖案的特征,然后再用這些特征去進行匹配,但是汽車儀表盤的標識種類相對較多,且不同標識之間的相似度較高,利用特征提取算法對多種標識進行辨別時辨別的精度往往并不太理想。
汽車儀表標識的自動化辨別對于前期儀表功能的檢測尤為重要,儀表功能較多且信息龐雜,通過智能算法對儀表標識的自動化辨別,不但可以減低人工成本,也有助于實現(xiàn)儀表功能的自動化測試,大大提高了測試的效率。為此,本文基于深度學習Inception框架對汽車儀表標識的辨別進行了研究,通過采集標識信息樣本,制作學習數(shù)據(jù)集,對網(wǎng)絡進行訓練,實現(xiàn)儀表標識的自動化辨別,辨別結果進行反饋等流程,從而實現(xiàn)儀表功能的自動化測試。
本文采用的汽車儀表為某汽車品牌的組合儀表,組合儀表包括車速表、轉速表、燃油表、水溫表、故障信息以及各種指示燈等內(nèi)容,根據(jù)儀表電器的原理圖和DBC信號列表,在dSpace控制機柜中配置對應的信號可控制不同儀表標識的點亮,儀表的信息圖如圖1所示,儀表的電路連接示意圖如圖2所示。
圖1 儀表總成圖片F(xiàn)ig.1 Picture of automotive instrument clusters
圖2 電路連接示意圖Fig.2 Circuit connection diagram
汽車儀表標識識別系統(tǒng)包括上位機控制軟件,dSPACE仿真機柜,汽車儀表總成,視覺采集設備(暗箱、臺架、攝像頭)以及下位機圖像分析模塊。辨別系統(tǒng)結構如圖3所示。
圖3 圖像辨別系統(tǒng)結構圖Fig.3 Identification system structure diagram
在上位機控制中,根據(jù)儀表總成的電路原理圖和引腳定義,在dSPACE控制機柜中配置合適的信號值,利用Controldesk軟件搭建儀表總成的GUI控制界面,當點擊界面按鈕時,會發(fā)出相應的CAN報文信息,儀表標識則會被點亮。通過攝像頭對儀表圖像進行實時采集,采集的圖像經(jīng)過處理,輸送給識別程序中進行辨別,辨別的結果轉換為CAN報文的信息反饋給計算機,依次循環(huán)不同儀表標識的點亮、辨識,最后形成測試報告,確定儀表功能是否正常。
由于攝像頭采集的圖像質量相對較差,需要通過相關圖像處理算法來改善圖片的質量,本文采用了雙邊濾波對圖像的噪聲進行處理,并通過改變圖像的對比度和亮度來增強圖像的質量。雙邊濾波是一種非線性濾波器,具有保持圖像邊緣、降噪平滑的效果[8]。在對圖像進行處理時,假設為I原圖像,S為圖像中的方形區(qū)域,q為其中的一個像素,則S中像素p經(jīng)過雙邊濾波處理的結果表示為[9]:
式中歸一化因子Wp為:
σd和σr是基于高斯函數(shù)的標準差,決定了雙邊濾波算法的濾波性能。
經(jīng)過雙邊濾波處理后,對圖片的對比度和亮度進行調(diào)節(jié),以提高儀表標識的清晰度。在處理時,改變圖像的像素值來調(diào)節(jié)圖像的對比度和亮度。
通過vs-openCV編寫相應的算法處理程序,為了便于確定圖像合適的亮度和對比度,設計了滑動條,拖動滑動條即可改變圖像的對比度和亮度,處理的圖片如下所示。
圖4 攝像頭采集的圖像Fig.4 Image captured by a camera
圖5 雙邊濾波處理的圖像Fig.5 Image processed by bilateral filtering
圖6 對比度亮度調(diào)整后的圖像Fig.6 Image after adjusting contrast and brightness
深度學習是人工智能的一種算法,它學習的過程主要是通過卷積網(wǎng)絡對所識別的圖像進行特征提取,一個卷積網(wǎng)絡一般包含若干卷積層、池化層和全連接層,如圖7所示[10-11]。
圖7 卷積網(wǎng)絡結構Fig.7 Convolutional neural network structure
卷積神經(jīng)網(wǎng)絡在圖像處理方面一直有著很不錯的表現(xiàn),圖像在處理時,要經(jīng)過多層的卷積操作,隨著卷積層數(shù)的增多,網(wǎng)絡對于圖像“理解”的更深,學習到的特征也會更全面[12-13]。
本文所采用的的卷積網(wǎng)絡模型是Inception v3網(wǎng)絡結構模型,它是由GoogleNet經(jīng)過改進得到的,誤差率僅為3.46%[14-16]。在計算機中配置Tensorflow深度學習框架,利用TensorBoard可以查看網(wǎng)絡模型結構,Inception v3的結構示意圖如圖8所示。
圖8 Inception v3網(wǎng)絡結構Fig.8 Inception v3 network structure
Inception v3網(wǎng)絡結構相比于傳統(tǒng)的CNN卷積網(wǎng)絡,它多了Inception網(wǎng)絡處理子模塊,每個網(wǎng)絡子模塊是由大小不同的卷積核并行連接在一起,增加了網(wǎng)絡的寬度和網(wǎng)絡的適應性,可以起到減小模型復雜度,加快訓練效率,提高網(wǎng)絡泛化能力的作用。它求解的思路是通過局部的稀疏矩陣來近似的去表示稠密矩陣,通過分析激活值的統(tǒng)計特性和高度相關的輸出進行聚集來建立最優(yōu)網(wǎng)絡。
神經(jīng)網(wǎng)絡的學習過程實則是神經(jīng)元權重與閾值的更新過程,經(jīng)過不斷的迭代,網(wǎng)絡通過誤差反向傳播算法來計算各個神經(jīng)元的節(jié)點參數(shù),網(wǎng)絡中神經(jīng)元的激活函數(shù)為Relu函數(shù),使用ReLU激活函數(shù)可以避免梯度彌散和梯度爆炸。利用鏈式求導計算損失函數(shù)對每個權重的偏導數(shù),然后根據(jù)梯度下降公式跟新權重,訓練算法依據(jù)反向誤差傳播誤差,誤差的更新計算如圖9所示。
圖9 卷積層處理模型Fig.9 Convolution layer processing model
其中,δl為l的誤差,則l?1層神經(jīng)元的誤差項δl-1由鏈式求導得:
進一步將元素擴展到卷積區(qū)域的處理,上式為
將兩項組合起來,便可得到神經(jīng)元的誤差,為
在訓練網(wǎng)絡之前,需要準備汽車儀表標識的數(shù)據(jù)集,控制儀表總成標識依次點亮,借助于攝像頭對儀表盤總成的標識進行實時采集,將不同標識依次截取出來,制作成不同標識的樣本庫,并搜集相同標識圖片以擴充樣本的數(shù)量,本文所采集的樣本種類一共有23種,每一類一共采集200張圖片。訓練之前需要人工對樣本進行分類和制作標簽以便于網(wǎng)絡學習,23種標識和標簽如表1所示。
表1 儀表標識與標簽Table 1 Icons and labels
通過編寫批處理文件,將學習樣本轉換成網(wǎng)絡可以讀入的TFRecords文件格式,它是一種二進制文件,可以更好的利用計算機的內(nèi)存,方便移動和復制[17]。
在Inception v3網(wǎng)絡的池化層之后,添加全連接層,添加的連接層結構如圖10所示。
連接層輸出的神經(jīng)元個數(shù)為23,使其與儀標標識的分類相對應,網(wǎng)絡的損失函數(shù)為交叉熵函數(shù),置信度的計算函數(shù)為softmax函數(shù),學習率設置為0.01,迭代步數(shù)為4000次,批處理bitch_size大小設置為10,求解過程中損失函數(shù)和準確率的變化曲線如下圖所示。
圖10 網(wǎng)絡輸出層結構圖Fig.10 Output layer structure diagram
圖11 求解過程中損失函數(shù)的變化曲線Fig.11 Curve of loss function
圖12 求解過程中準確率的變化曲線Fig.12 Curve of accuracy
從曲線圖中可以看出,隨著迭代次數(shù)的增加,損失函數(shù)的數(shù)值一直在減小,結果的準確率在不斷的提高。由于在訓練過程中只改變了網(wǎng)絡中最后一層的神經(jīng)元參數(shù),保留了前面網(wǎng)路結構中神經(jīng)元的參數(shù),所以訓練的速度比較快,當?shù)綌?shù)為500時,模型的辨別效果已經(jīng)較為理想,當完成訓練后,損失函數(shù)的數(shù)值大小為0.0095,準確率為99%。
要實現(xiàn)標識的自動化辨識,首先要實現(xiàn)對圖片中標識進行自動化定位,以獲取點亮的標識信息。控制儀表總成依次點亮不同標識信息,采用幀差法對點亮的標識進行捕捉,它利用了相鄰的兩幀或者三幀圖像,借助于像素之間的差異性,判斷是否有運動目標[18-20]。固定儀表和攝像頭之后,每隔一段時間點亮一個標識,攝像頭采集標識點亮的視頻,利用vs編寫幀差法處理程序對捕捉的視頻進行處理,攝像頭采集圖片如圖13所示,不同標識的定位提取如圖14所示。
圖13 攝像頭圖像采集Fig.13 Image acquisition
圖14 不同標識的提取Fig.14 Extraction of different icons
圖15 用戶交互界面Fig.15 User interface
圖16 信號模型Fig.16 Signal model
由汽車儀表總成的功能規(guī)范和DBC文件,依據(jù)接口定義為儀表分配dSPACE機柜板卡資源,根據(jù)信號控制邏輯在Matlab Simulink中搭建信號控制模型,同時在congtorldesk中通過button、frame multistate display和LEDs Automotive控件設計用戶交互界面,控制不同標識的點亮,控制界面如圖15所示,信號控制模型如圖16所示。
在測試時,依次循環(huán)點亮儀表的標識,通過儀表標識由暗變亮的變化過程,借助于幀差法對點亮的標識進行提取,得到點亮的標識之后,通過Inception網(wǎng)絡對標識進行辨別,表2為儀表標識的辨別結果。
表2 不同儀表標識的辨別結果Table 2 Identification results of different icons
表2中展示了部分儀表標識的辨別結果,從表中可以觀測到,網(wǎng)絡對于圖標的辨別精度相對較高,辨別的準確率達到了86%以上,并且對應標簽的置信度要遠遠高于非對應標簽的置信度,起到了很好的分類效果,提取識別結果中置信度最高的關鍵字,將關鍵字信息轉換成CAN報文信息反饋給測試機柜,判斷功能是否正常,從而形成測試報告,依次點亮不同圖標,實現(xiàn)儀表功能的測試。
1)基于dSPACE硬件在環(huán)仿真平臺,利用圖像識別技術,建立了汽車儀表標識的辨別系統(tǒng),可以實現(xiàn)儀表標識的控制、顯示、采集和辨別功能。
2)運用了雙邊濾波算法對采集的圖像進行預處理,去除了圖像中的噪聲,并提高像素的對比度和亮度信息,改善了圖像的質量。
3)設計了用戶交互界面并利用深度學習Inception框架對標識信息進行辨識,實現(xiàn)了儀表標識的自動化定位與辨別,準確率達到了86%以上,說明了系統(tǒng)辨別結果的可靠性并進行了儀表功能的測試。