(青島大學 自動化學院,青島 266071)
車廂號是區分不同車廂的標志,在鐵路貨物運輸系統中,準確的識別和記錄車廂號,對運輸費用的結算、鐵路系統的安全穩定運行等具有十分重要的意義,對于貨物列車車廂號的識別問題,國內外已有典型解決方案,由Jang等設計的兩階段識別法[1],借助模板匹配以及人工的神經網絡來達到預期效果、國內的有通過射頻識別的技術建立起車廂號的電子標簽記錄系統等[2]。傳統的識別方法大多采用人工干預設計的特征,且包含分割圖像,邊緣提取等繁瑣的步驟,對周圍環境、圖片質量要求較高,設計出來的系統常存在著效率不高、改造困難、維護復雜等缺陷。卷積神經網絡在訓練的過程中通過卷積層以及下采樣層,自動學習圖片的最優特征,通過更新神經元之間的權重與偏執確立模型,在一定程度上,縮短了識別所需的時間,極大的提高測試識別的準確率,并且整個系統更為靈活,便于后期的調試維護。
卷積神經網絡(Convolutional Neural Network,CNN)是一種前饋的拓撲結構,它主要包括重復交替的卷積層、池化層以及全連接層[3],通過互聯多層的平面對獲取的子特征進行階梯式處理,經過多次迭代操作反向調整優化權重和偏置,從而將視覺系統進行模型化,使其對輸入數據的要求更低,具有更好的魯棒性和泛化力。
在傳統的神經網絡結構中,一層內的每個神經元對下一層所有的神經元節點都是采用全部連接的形式,從而導致網絡中整體參數的數量較多,計算量太大,而CNN則較之前做出了改進,新增了舊網絡不包含的層級[4],通過感知局部的區域,加強鄰層神經元節點的局部有效連接來學習原始圖像的局部空間聯系特征,進而能夠有效的減少學習網絡需要計算、調整的參數個數,提高設計系統的運行速度。

圖1 稀疏鏈接
原始的輸入圖片經過卷積層學習到局部聯系的特征之后,就要進入池化層進行圖像的壓縮處理,即合并在邏輯結構上相似的子樣特征[5],與傳統將全部的特征納入分類層相比,這種操作主要有兩方面的優勢,一是實現了對特征的降維處理,一幅圖像中不可避免地包含諸多對系統運行無用的內容,池化層就可以有選擇性地保留關鍵部分的信息,有效的減少系統后期數據處理的計算規模;二是能夠歸一化特征尺度,不論原始的輸入圖像大小如何,經過池化層后都會得到相同大小的池化特征,提高系統對空間位移變換的魯棒性。

圖2 池化層
物體的檢測、分類、識別一直是數字圖像處理領域較為熱點的研究方向,現已經有RCNN、Fast RCNN等諸多模型結構,這些模型大多先進行物體的分類過程,然后再利用回歸器完成邊框預測,并且存在網絡結構大,參數存儲空間需求大,系統運行不迅速等劣勢。輕量級交叉并行卷積神經網絡是最新提出的一種檢測方法,它合理調整網絡深度及每層卷積核大小,縮減網絡結構,將物體的檢測問題視為回歸類問題,并且在一個獨立的網絡結構中同時完成物體檢測和目標分類兩個任務,將神經元活躍的卷積池化層采用模型并行,而權值計算數量龐大的全連接層采用數據并行,它是一個端到端的網絡,輸入原始視頻,經過一次推斷,就可以得到相應的物體所處位置以及所屬類別,很大程度上化簡了模型的復雜度,縮短識別時間,更有利于模型在實際場景中的泛化運用。
由于我們要識別的數字類別只有十個,自己制作的數據集數量也只有20000張左右,如果直接采用原模型(PCNN)原本具備的11個卷積層[6],就會出現層數過多、數據集過小的不匹配問題,進而導致欠擬合的現象,會大大降低定位、識別的準確率,基于此,我們做出了改進,縮小卷積層數及卷積核的大小,采用輕量級的五層卷積神經網絡,包括并行的三個卷積池化層與兩個全連接層,與此同時,采用卷積層交叉并行的思想,用2×2的池化層進行下采樣,最后將兩個并行通道的特征圖連接融合傳入到全連接層,具體的網絡結構如圖3所示。

圖3 交叉并行卷積網絡結構
在進行系統訓練時,首先將圖像歸一化尺度為448×448進入輸入層,輸入的圖像會被切分成7×7個小方格區域,每個小方格只負責預測該方格內是否包含目標、目標所屬類別、邊框的位置及大小[10],經過卷積、池化層完成目標檢測和屬性分類,每個小方格會預測出2個預選框,10個類別,最后通過非極大值抑制算法,就是尋找局部像素點的最大值,把其余點的灰度值強制置0,輸出維度為7×7×(2×5+10)的向量。
神經網絡中常用的損失函數是二次代價函數,其表達是如下:

其中C表示代價函數(cost function),n表示樣本數量,x表示具體的樣本。

改進后的損失函數,參數的收斂速度只關系到樣本的預測值與實際值的差,激活函數本身的梯度問題就不會對其產生負面的影響。
RELU(rectified linear unit)修正線性單元,表達式為f(x)=max(0,x),是一種更加契合人類神經元工作原理的激活函數,已經日益取代了Sigmoid函數成為了主流。傳統的Sigmoid函數缺乏稀疏性的特點,為了產生必要的稀疏數據,它需要借助懲罰因子來產生大量的近乎為0的數據,而RELU則通過直接將小于0的輸出置為0的操作[8],強制性的產生稀疏數據,也就是說,它會隨機初始化網絡,只讓一半的隱含層是處于真正的被激活的工作狀態,這種改進使得輸出結果既具備了稀疏性的特點,又在一定程度上縮短了訓練時間,即使系統不經過預訓練,也能達到較為理想的效果。
梯度下降算法(Gradient Descent)是在深度學習中常用的一種優化手段,但是這種算法需要依賴經驗,預先設定學習率應用于所有的參數,而且常常陷入鞍點或者局部最小點的狀態,為了盡量避免這種非最優解的情況發生,我們采用Adam作為優化器[9],參數更新的表達式為:

我們選用jupyter notebook作為程序運行平臺,借助tensorflow框架,用python語言進行代碼改寫,對自己標注制作的20000張圖片進行2000次訓練達到了99.2%的測試效果。與Alex-Net模型結構相比,我們設計的模型只需使用其1/50的神經元及參數個數,就可以在節約20%時間的基礎上,將準確率提高13%。模型間的各項參數對比如表1所示。

表1 模型各項參數對比
將訓練好的模型運用到測試集中,并打印預測數字,實驗的結果如圖4所示,火車車廂的噴印數字分別為1633079、4959499,系統可以一次性實現定位數字位置、用帶顏色的矩形框將每個數字分割并對數字進行識別。

圖4 測試效果圖
針對貨物列車車廂號識別所面臨的受自然環境影響大、準確率不高、后期維護困難等問題,本文通過搭建深度卷積框架LPCNN,在jupyter notebook平臺上實現了較好的測試效果,本文的創新點主要在兩個方面,一是縮減了模型結構,創新性的搭建了輕量級五層交叉并行的神經網絡模型。考慮到圖片集與模型深度的匹配問題,我們沒有盲目使用11層卷積模型,而是依據自己的圖片集數量,重新調整了卷積層數及卷積核的大小;二是針對數字的結構特點,選擇了更為有效的交叉熵損失函數、RELU線性激活函數以及Adam優化器,既保留了可同時輸出檢測到的邊框以及識別數字的優勢,又顯著提高了數字識別的準確率。