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