葉亞光
摘要:隨著人工智能的不斷發展,對于傳統領域提出了新的挑戰。在大數據時代,圖片和視頻信息的成倍增長,如何從這些信息中提取出我們“感興趣”的數據,成了越來越多學者研究的重點。本文基于卷積神經網絡,構建車輛圖像數據庫,參考當下計算機視覺領域新提出的GoogleNet網絡分類模型,修改NVDIA提出的Detection網絡部分層,調整學習率、激活函數等部分訓練參數和網絡結構,形成新的object detection網絡結構,提高對于圖像和視頻中車輛的識別率。
關鍵詞:深度學習;卷積神經網絡;車輛識別
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2019)10-0169-02
開放科學(資源服務)標識碼(OSID):
隨著社會的發展,人們的生活水平的提高,安全意識逐漸增大,城市中監控系統的投入不斷增多,帶來了越來越多的視頻數據。從這些海量的視頻數據中找出有效且需要的數據需要投入大量的人力,那么能否利用計算機視覺領域的深度學習,通過前期大量有效的車輛標記數據進行訓練,建立識別車輛數據的神經網絡,通過該神經網絡代替人腦進行解讀視頻數據,識別出有效的車輛數據。其中涉及有卷積神經網絡及深度學習等相關內容。
深度學習是一種特征學習方法,把原始數據通過簡單而非線性的模型轉變成更高層次、更抽象的表達。卷積神經網 絡(CNN)具有提取反映數據本質的隱性特征及可擴展性的優越性能,可被用于幾乎全部的目標識別分類領域,例如交通信號識別、人臉識別、道路場景解析、圖像理解等。在車輛檢測方面,其區別于淺層學習的突出優點之一在于算法的可擴展性,能夠進一步擴展識別交通環境中的多類目標。[2]
本文選用的神經網絡為卷積神經網絡,并在當下較流行的caffe深度學習框架,使用6G顯存的GTX1060顯卡,GPU模式,ubuntu16.04操作系統,Python2.7語言等開發環境,進行視頻數據的車輛識別。經實驗證明,該神經網絡具識別速度快,準確度高等特點。
1 深度學習框架caffe篇
工欲善其事必先利其器,需要使用caffe學習框架,就需要從搭建caffe環境開始。搭建caffe環境分為以下幾個模塊,分別是Ubuntu、CUDA、cuDNN、OpenCV等。本文使用的操作系統為Ubuntu16.04LTS,需要注意的是,由于使用nvidia公司的GTX1060顯卡,先屏蔽操作系統自帶的顯卡驅動再上官網下載安裝對應的驅動程序。
本文使用的GPU訓練方式,由于需要提高訓練速度,需要安裝CUDA運算平臺和GPU加速庫,本文使用CUDA為8.0版本,cuDNN為7.2.1版本。OpenCV是一個基于BSD許可(開源)發行的跨平臺計算機視覺庫,在處理車輛數據時,需要使用到OPenCV的庫函數,本文安裝的OPenCV版本為3.2.0。
以上環境都安裝齊全的條件下,安裝caffe學習框架,本文使用nvcaffe版本,由于caffe需要使用到各種庫函數,根據個人經驗,py語言提供強大的庫函數,能夠滿足caffe的需求。本文使用的2.7版的python語言。
2 數據標注及訓練篇
本文采用半監督學習的方式進行車輛數據的訓練,那么就需要告訴電腦什么是車輛。本文參考KITTI數據集格式及結合數據集標記軟件對車輛數據進行標記形成實驗所需要用到的車輛數據集。
本文采用nvidia公司的digits工具進行數據集的生成和網絡的訓練。通過數據集生成功能模塊,將標記數據集生成LMDB格式數據。再由分類器googlenet和修改后的Detection卷積網絡對數據集(LMDB)進行訓練,通過調整學習率等參數,得到30次迭代訓練后的結果。選擇識別度較高的網絡結構文件和權重文件,用于之后測試使用。
由于卷積神經網絡在模型訓練時耗時較長,利用樣本反饋在線更新網絡模型難度大,且實時性效果差等缺點。因而本文的做法是提前對網絡模型進行訓練,不實施在線更新。模型訓練完成后,直接將模型帶入到測試程序框架中,以檢測的方式完成對每一張圖片里的車輛識別。模型檢測的結果會計算出目標的預測位置。[3]
3 網絡模型結構篇
本文采用GoogleNET網絡模型作為基礎,修改網絡部分層,實現對車輛數據的識別。本文的卷積神經網絡結構為數據輸入層、Slice層,卷積層、python層、池化層、激活函數層、LOSS層、dropout層等多層次結構。
卷積層根據需要設置卷積核的個數、卷積核的大小、卷積核的步長、權值初始化、偏置項的初始化、擴充邊緣等參數。池化層采用MAX池化方式,根據各層需要修改kernel_size和stride參數。
根據AlexNet的論文,本文使用的激活函數層大部分激活函數使用ReLU類型,小部分激活函數使用Sigmoid類型。Relu激活函數(The Rectified Linear Unit)表達式為:f(x)=max(0,x)f(x)=max(0,x)。相比sigmoid和tanh函數,Relu激活函數的優點在于:
1)梯度不飽和。梯度計算公式為:1{x>0}1{x>0}。因此在反向傳播過程中,減輕了梯度彌散的問題,神經網絡前幾層的參數也可以很快的更新。
2)計算速度快。正向傳播過程中,sigmoid函數計算激活值時需要計算指數,而Relu函數僅需要設置閾值。如果x<0,f(x)=0x<0,f(x)=0,如果x>0,f(x)=xx>0,f(x)=x。加快了正向傳播的計算速度。因此,Relu激活函數可以極大地加快收斂速度。
在python層中,根據需要自定義編寫自己的目標識別框,使用caffe.layers.detectnet.clustering模塊并設置param_str參數。將偵測目標的位置用矩形框編出來,bbox-list表示相對1248*384偵測到的目標座標。
4 實驗結果篇
經過30次迭代計算,將30次訓練生成的loss_bbox率和loss_covarage率以圖表的形式表示。實驗結果表明,第30次迭代計算,有較低的loss_bbox率和loss_covarage率。接下來,自己用python2.7語言編寫demo.py,通過import caffe語句導入caffe模塊,通過detection(img, net, transformer)函數,用該模型對測試圖片進行目標偵測,查看是否能準確地將車輛數據標記出來。
5 結束語
隨著技術的發展,越來越多的深度學習開源框架展現在我們面前,例如Tensorflow,Torch等。這些工具不僅性能優異而且可以使用在小型開發版上,更適合嵌入式深度學習應用。更為重要的是,使用這些框架訓練得到的模型可以直接高效地部署到交通和安防等應用領域中,促進物聯網技術的發展,不斷提高國家信息化水平。
參考文獻:
[1] 蔡英鳳,王海,陳龍,等.采用視覺顯著性和深度卷積網絡的魯棒視覺車輛識別算法[J].清華大學學報:自然科學版,2015,36(3):333-336.
[2] 李琳輝,倫智梅,連靜,等.基于卷積神經網絡的道路車輛檢測方法[J].吉林大學學報:工學版,2017,47(2):385-391.
[3] 閔召陽,趙文杰.基于卷積神經網絡檢測的單鏡頭多目標跟蹤算法[J].艦船電子工程,2017,37(12):25-28.
【通聯編輯:唐一東】