国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于學(xué)習(xí)算法SSD的實(shí)時(shí)道路擁堵檢測(cè)

2018-09-04 09:37李超凡陳慶奎
軟件導(dǎo)刊 2018年6期
關(guān)鍵詞:卷積神經(jīng)網(wǎng)絡(luò)

李超凡 陳慶奎

摘 要:隨著人們生活水平的不斷提高,道路車輛擁堵情況愈發(fā)嚴(yán)重。如何實(shí)時(shí)、精確地檢測(cè)出道路車輛,對(duì)于解決道路擁堵問題具有重要意義,GPU和人工智能技術(shù)的飛速發(fā)展為其提供了可靠的解決方案。研究分析傳統(tǒng)目標(biāo)識(shí)別算法、基于候選區(qū)域深度學(xué)習(xí)的目標(biāo)提取算法RCNN和基于回歸的深度學(xué)習(xí)目標(biāo)檢測(cè)YOLO,最終確定采用基于卷積神經(jīng)網(wǎng)絡(luò)的實(shí)時(shí)目標(biāo)檢測(cè)算法SSD。首先調(diào)用VGG16網(wǎng)絡(luò)模型在ILSVRC CLS-LOC數(shù)據(jù)庫上預(yù)訓(xùn)練生成初始網(wǎng)絡(luò)模型,進(jìn)而設(shè)置超參數(shù)并在自身數(shù)據(jù)集上進(jìn)行再訓(xùn)練,生成新的網(wǎng)絡(luò)檢測(cè)模型,然后將訓(xùn)練和測(cè)試部署到深度學(xué)習(xí)框架Caffe上加以實(shí)現(xiàn)。通過在數(shù)據(jù)庫COCO、VOC2012上的測(cè)試結(jié)果表明,該模型檢測(cè)精度為76%左右,處理速度為26FPS。同時(shí)通過道路路口的實(shí)地車輛檢測(cè),顯示該算法能夠?qū)崟r(shí)、精確地檢測(cè)出道路車輛,為道路擁堵情況判定提供可靠數(shù)據(jù)。

關(guān)鍵詞:GPU計(jì)算;擁堵檢測(cè);卷積神經(jīng)網(wǎng)絡(luò);車輛檢測(cè);SSD

DOI:10.11907/rjdk.173313

中圖分類號(hào):TP302

文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2018)006-0008-05

Abstract:With the continuous improvement of the people′s living standard, the congestion of road vehicles becomes more and more serious. How to accurately detect road vehicles in real time is of great significance to solve the problem of road congestion. The rapid development of GPU and artificial intelligence provides a reliable solution. We analyse the traditional target recognition algorithm, target extraction algorithm RCNN based on the candidate region deep learning and regression-based deep learning target detection YOLO, and finally we adopt the real-time target detection algorithm SSD based on convolutional neural network . First we call the VGG16 network model to pre-train the initial network model on the ILSVRC CLS-LOC database to set up hyper-parameters and retrain on their own data sets to generate a new network detection model and then deploy training and testing to the deep learning framework Caffe. Tests on the database COCO, VOC2012 showed that the model detection accuracy reached about 76%, the processing speed reached 26FPS. the final road junctions The field of vehicle detection in the road junctions proves that the algorithm can realise real-time accurate detection of road vehicles so as to provide reliable data about road congestion.

Key Words:GPU computing; congestion detection; convolutional neural network; vehicle detection; SSD

0 引言

隨著大數(shù)據(jù)、云計(jì)算、GPU等技術(shù)的發(fā)展,人工智能領(lǐng)域的相關(guān)技術(shù)和應(yīng)用也不斷深入。圖像識(shí)別是人工智能領(lǐng)域的關(guān)鍵應(yīng)用之一,其中基于視頻流的視覺目標(biāo)檢測(cè)與靜態(tài)圖片視覺目標(biāo)檢測(cè)是目前計(jì)算機(jī)視覺領(lǐng)域的研究熱點(diǎn)。隨著人們生活水平的提高,越來越多電子設(shè)備應(yīng)用于人們生活中,其中數(shù)字圖像已成為不可或缺的重要信息媒介,時(shí)刻都在產(chǎn)生大量圖像數(shù)據(jù)[1]。如今對(duì)圖像中的類別進(jìn)行精確識(shí)別和分類已變得越來越重要,而且不是僅對(duì)目標(biāo)圖片進(jìn)行簡單分類,而是希望將圖像中感興趣的區(qū)域提取出來并且作出精確判斷,例如現(xiàn)在比較流行的鑒黃軟件、十字路口的電子貓眼、犯罪分子的人臉識(shí)別等相關(guān)應(yīng)用都離不開目標(biāo)檢測(cè)技術(shù)的支持。因此,目標(biāo)視覺檢測(cè)有著廣闊的應(yīng)用前景[1],除智能視頻監(jiān)控、機(jī)器人導(dǎo)航、汽車無人駕駛、嵌入式電子產(chǎn)品、數(shù)碼相機(jī)、人臉識(shí)別等技術(shù)外,目標(biāo)檢測(cè)也為更高級(jí)的人體行為識(shí)別、圖像語義分割、事件檢測(cè)等提供了技術(shù)支持。本文即是應(yīng)用相關(guān)目標(biāo)檢測(cè)算法對(duì)道路路口車輛進(jìn)行實(shí)時(shí)識(shí)別檢測(cè)。

1 相關(guān)工作

目前目標(biāo)檢測(cè)領(lǐng)域相關(guān)算法主要分為3大類:①傳統(tǒng)目標(biāo)檢測(cè)算法,例如HOG[2](Histogram of Gradient)+SVM(Support Vector Machine)、SIFT[3](Scale-invariant Feature Transform)、前景提取等;②RCNN系列基于候選區(qū)域的深度學(xué)習(xí)目標(biāo)檢測(cè)算法,如RCNN[4]、FAST-RCNN[5]、FASTER-RCNN[6]、RFCN[7];③基于回歸方法的深度學(xué)習(xí)目標(biāo)檢測(cè)算法,如YOLO[8]、SSD[9]等。目標(biāo)檢測(cè)算法大致分類如圖1所示。

(1)HOG、SVM、DPM等傳統(tǒng)目標(biāo)識(shí)別算法不需要訓(xùn)練,但檢測(cè)精度不高,而且處理速度非常慢。

(2)RCNN系列基于候選區(qū)域的深度學(xué)習(xí)目標(biāo)檢測(cè)算法,從RCNN[4]、Fast-RCNN[5]、Faster-RCNN[6]、RFCN[7]速度依次變快,而檢測(cè)精度相差不大。RCNN檢測(cè)精度略高,但該算法存在的一個(gè)最大問題是處理速度慢,每秒大概5幀,無法達(dá)到實(shí)時(shí)性要求,而且需要分開訓(xùn)練,處理復(fù)雜,步驟耗時(shí),生成的圖片文件占用磁盤空間較大。如圖2所示為基于候選區(qū)域的深度學(xué)習(xí)檢測(cè)算法基本流程。

(3)基于回歸的深度學(xué)習(xí)目標(biāo)檢測(cè)算法,主要包括YOLO[8]、YOLO2和SSD[9]等相關(guān)算法,其中YOLO[8]算法實(shí)際上是結(jié)合RCNN系列算法作出的改進(jìn),即在犧牲精度的情況下提高了處理速度。YOLO的處理速度在每秒30幀左右,精度為65%左右,相比于RCNN的75%降低了不少;SSD算法網(wǎng)絡(luò)模型進(jìn)行的目標(biāo)檢測(cè),與YOLO相比,在保持速度不變的情況下提高了精度,其精度甚至比RCNN系列更高。SSD使用卷積神經(jīng)網(wǎng)絡(luò)對(duì)圖像進(jìn)行卷積后,在不同層次的特征圖上生成一系列不同尺寸與長寬比的邊框,該網(wǎng)絡(luò)對(duì)于每一個(gè)邊框中物體類型的可能性進(jìn)行了預(yù)測(cè),并且可以調(diào)整邊框形狀,以適應(yīng)相應(yīng)的目標(biāo)物體形狀大小。最后在PASCAL VOC、MS COCO和ILSVRC數(shù)據(jù)集上進(jìn)行測(cè)試,實(shí)驗(yàn)顯示其平均精度在75%左右。而本文即針對(duì)預(yù)訓(xùn)練的SSD網(wǎng)絡(luò)模型進(jìn)行改進(jìn),并在自己數(shù)據(jù)集中訓(xùn)練生成新的網(wǎng)絡(luò)模型,并進(jìn)行實(shí)地的檢驗(yàn)測(cè)試。實(shí)驗(yàn)結(jié)果表明,該方法能夠準(zhǔn)確提取出道路車輛特征,檢測(cè)出道路擁堵情況。

2 SSD基礎(chǔ)原理

2.1 車輛目標(biāo)任務(wù)構(gòu)建

本文任務(wù)是通過在道路十字路口安裝攝像頭,實(shí)時(shí)采集視頻,即通過視頻流方式實(shí)時(shí)檢測(cè)路口車輛。

2.2 SSD網(wǎng)絡(luò)模型

SSD(Single Shot MultiBox Detector)是一個(gè)單一的檢測(cè)器,能夠識(shí)別多個(gè)物體,其核心是預(yù)測(cè)固定集合的類別分?jǐn)?shù)和盒偏移,并使用應(yīng)用于特征映射的小卷積濾波器的默認(rèn)邊界框。如圖4所示為一張圖像中含有多個(gè)特征圖在不同比例下的檢測(cè)框,在訓(xùn)練期間,SSD只需要一個(gè)輸入圖像和地面實(shí)框圖。在卷積中,評(píng)估一個(gè)小集合在具有多個(gè)特征圖的情況下,每個(gè)位置處不同縱橫比的默認(rèn)框。對(duì)于每個(gè)默認(rèn)框,預(yù)測(cè)所有對(duì)象類別((c-1,c-2,…,c-p))的形狀偏移和置信度,訓(xùn)練時(shí)首先將這些默認(rèn)框與實(shí)際框圖進(jìn)行匹配。例如,本文匹配了兩個(gè)默認(rèn)框貓和狗,它們被視為感興趣區(qū)域,其余作為不感興趣區(qū)域。另外,模型損失是本地?fù)p失(例如平滑L-1[10])和置信損失(例如Softmax)之間的加權(quán)和。

SSD方法是基于前饋卷積網(wǎng)絡(luò),在這些框中的實(shí)例有一個(gè)固定大小的邊界框集合和用于存在對(duì)象類的分?jǐn)?shù),最后通過非最大抑制步驟產(chǎn)生最終檢測(cè)結(jié)果。之前的網(wǎng)絡(luò)層基于標(biāo)準(zhǔn)架構(gòu)用于高質(zhì)量圖像分類,如圖5所示為SSD網(wǎng)絡(luò)結(jié)構(gòu),SSD通過使用VGG-16-Atrous作為基礎(chǔ)網(wǎng)絡(luò),Conv8_2 Conv9_2 Conv10_2 Conv11_2作為特征提取層。SSD與YOLO的不同之處是,除在最終的特征圖上進(jìn)行目標(biāo)檢測(cè)外,還在之前選取的5個(gè)特征圖上進(jìn)行預(yù)測(cè)。如圖5所示為SSD網(wǎng)絡(luò)預(yù)測(cè)示意圖,檢測(cè)過程不僅在添加特征圖(conv8_2, conv9_2, conv_10_2, pool_11)上進(jìn)行,為了保證網(wǎng)絡(luò)對(duì)小目標(biāo)的檢測(cè)效果,檢測(cè)過程也在基礎(chǔ)網(wǎng)絡(luò)特征圖(conv4_3, conv_7)上進(jìn)行。

2.3 SSD訓(xùn)練算法介紹

訓(xùn)練算法和一般的機(jī)器學(xué)習(xí)訓(xùn)練算法相同,首先定義損失函數(shù),即衡量與實(shí)際結(jié)果間的差距,然后找到最小化損失函數(shù)的W和b。根據(jù)SSD訓(xùn)練網(wǎng)絡(luò)結(jié)構(gòu),可以知道GT標(biāo)簽在分特征圖上生成priorbox,再將所有priorbox組合為mbox_priorbox,作為所有默認(rèn)框的真實(shí)值。

預(yù)測(cè)過程會(huì)在選取的特征圖上進(jìn)行兩個(gè)3×3卷積,其中一個(gè)卷積層輸出每個(gè)默認(rèn)框的位置(x, y, w, h)4個(gè)值,另一個(gè)輸出每個(gè)默認(rèn)框檢測(cè)到不同類別物體的概率,輸出個(gè)數(shù)為預(yù)測(cè)類別個(gè)數(shù)。再將所有默認(rèn)框位置整合為mbox_loc,并將所有默認(rèn)框預(yù)測(cè)類別的向量組合為mbox_conf。mbox_loc、mbox_conf為所有預(yù)測(cè)默認(rèn)框,將其與所有默認(rèn)框的真實(shí)值mbox_priorbox進(jìn)行損失計(jì)算,得到mbox_loss。SSD的損失函數(shù)如公式(1)所示,由每個(gè)默認(rèn)框的定位損失與分類損失構(gòu)成。

Sigmod激活函數(shù)如圖6所示,從圖中可以看出,當(dāng)數(shù)值逐漸增大時(shí),函數(shù)斜率趨近于0,因而在反向傳播時(shí)會(huì)出現(xiàn)導(dǎo)數(shù)值為零的現(xiàn)象,不易進(jìn)行訓(xùn)練和計(jì)算,也即常說的梯度飽和現(xiàn)象。

基于以上缺陷,本文改用Relu作為激活函數(shù),如圖7所示為Relu函數(shù)曲線。

在卷積神經(jīng)網(wǎng)絡(luò)中采用SGD(隨機(jī)梯度下降法),SGD中需要計(jì)算W和b的偏導(dǎo)如公式(5)所示。BP(反向傳播算法)的核心即求導(dǎo)鏈?zhǔn)椒▌t,如公式(6)所示。

BP算法利用鏈?zhǔn)角髮?dǎo)法則,逐級(jí)相乘直到求解出dW和db,然后利用SGD迭代、更新W和b。

2.3 SSD訓(xùn)練過程

本文采用一個(gè)SSD預(yù)訓(xùn)練模型,將預(yù)訓(xùn)練模型在自己的數(shù)據(jù)集上進(jìn)行訓(xùn)練,生成全新的檢測(cè)模型。

首先,準(zhǔn)備原始數(shù)據(jù)。數(shù)據(jù)集要滿足以下格式:–Annotations ***.xml(標(biāo)注的物體信息文件);--Images ***,jpg(圖片集);--ImageSets test.txt(測(cè)試集) train.txt(訓(xùn)練集);--results (null)(作為保留結(jié)果)

其次,生成訓(xùn)練數(shù)據(jù)集。具體步驟為:

(1)將VOC0712目錄下的create_data.sh labelmap_voc.prototxt create_list.sh三個(gè)文件復(fù)制到數(shù)據(jù)集目錄下。

(2)修改create_data.sh內(nèi)容。

root_dir=/home/sea/caffe (指定SSD目錄)

data_root_dir="MYMHOME/caffe/data/Fruit4"(指定原始數(shù)據(jù)集路徑)

dataset_name="Fruit4"(將要生成的數(shù)據(jù)集名稱)

mapfile="MYMroot_dir/data/MYMdataset_name/labelmap_fruit4.prototxt"(標(biāo)簽映射,注意labelmap_***.prototxt與自己修改的文件名稱相對(duì)應(yīng))

(3)修改create_list.sh內(nèi)容。

root_dir=MYMHOME/caffe/data/Fruit4(原始數(shù)據(jù)集路徑)

sub_dir=ImageSets(保存train.txt和test.txt目錄名稱)

sed -i "s/^/\Images\//g" MYMimg_file(保存圖片目錄名稱)

sed-i"s/^/\Annotations\//g"MYMlabel_file (保存標(biāo)注目錄名稱)

if [ MYMdataset == "test" ](這里對(duì)應(yīng)test.txt)

if [ MYMdataset == "train" ](這里對(duì)應(yīng)train.txt)

(4)修改labelmap_***.prototxt內(nèi)容。

沒有順序要求,background不需要更改,打開文件即知如何修改。

(5)運(yùn)行create_list.sh,會(huì)看到數(shù)據(jù)集目錄下生成test.txt train.txt test_name_size.txt。

(6)運(yùn)行create_data.sh,可看到數(shù)據(jù)集目錄下生成文件中指定的新數(shù)據(jù)集(例如Fruit4),該目錄下保存了lmdb文件,并在example/Fruit4目錄下生成lmdb軟鏈接。

最后開始訓(xùn)練。首先復(fù)制一份example目錄下的ssd文件夾,修改ssd_pascal.py內(nèi)容,然后運(yùn)行python example/fruit4/ssd_pascal.py,可以看到網(wǎng)絡(luò)已開始訓(xùn)練,訓(xùn)練模型保存在models/fruit4_models_fruit4_300×300目錄下。

3 實(shí)驗(yàn)結(jié)果與分析

本文實(shí)驗(yàn)都是通過基礎(chǔ)網(wǎng)絡(luò)VGG16[11],在ILSVRC CLS-LOC[12] 數(shù)據(jù)庫預(yù)訓(xùn)練得到初始模型,然后在自己數(shù)據(jù)集上再次進(jìn)行訓(xùn)練得到最終的車輛檢測(cè)網(wǎng)絡(luò)模型。與DeepLab-LargeFOV[13]相似,本文將fc6和fc7轉(zhuǎn)換為卷積層,并且從中抽取樣本參數(shù),將pool5 從2*2-s2變?yōu)?*3-s1;使用trous算法填充漏洞,并且刪除所有的dropout層和fc8層;設(shè)置初始學(xué)習(xí)速率為0.001,動(dòng)量為0.9,重量衰減為0.000 5,batch size為32,每個(gè)數(shù)據(jù)集的學(xué)習(xí)速率衰減策略略有不同;然后針對(duì)自己的數(shù)據(jù)集進(jìn)行訓(xùn)練,完整的訓(xùn)練和測(cè)試代碼均建立在深度學(xué)習(xí)框架Caffe[14]下進(jìn)行;最終生成訓(xùn)練好的網(wǎng)絡(luò)模型,在coco數(shù)據(jù)庫中檢測(cè)精度為76%。

本實(shí)驗(yàn)使用的處理器為Intel(R)Core(TM)i7-3770,4核8線程,主頻3.4GHz,內(nèi)存32G;顯卡采用NVIDIA GTX970,顯存4G;操作系統(tǒng)ubuntu16.04,CUDA版本8.0,OpenCV版本為2410,Python版本為Anaconda 3.6,實(shí)驗(yàn)圖片規(guī)格統(tǒng)一為300*300。

因?yàn)镾SD是一個(gè)目標(biāo)檢測(cè)網(wǎng)絡(luò)模型,可以檢測(cè)多種目標(biāo),如圖10所示為上海金橋中心某一路口檢測(cè)車輛的情況。

如圖11所示同為金橋中心某一路口的檢測(cè)情況,其中將檢測(cè)到的類別用方框框出并標(biāo)出具體類別和置信度。在試驗(yàn)中設(shè)置了檢測(cè)車輛和行人兩種類別,檢測(cè)結(jié)果顯示,其基本能夠識(shí)別出行人和車輛。

如圖12所示為上海延安路某一路段的檢測(cè)情況,該實(shí)驗(yàn)不僅標(biāo)出了類別與置信度,而且顯示出運(yùn)行速度。速度大概為每秒26幀,可達(dá)到實(shí)時(shí)處理要求。

4 結(jié)語

本文對(duì)現(xiàn)階段相關(guān)的目標(biāo)檢測(cè)算法及其相應(yīng)的設(shè)計(jì)、訓(xùn)練難度、檢測(cè)效果、價(jià)值可用性等方面進(jìn)行了全方位對(duì)比,提出一種基于學(xué)習(xí)算法SSD的實(shí)時(shí)車輛檢測(cè)模型,并給出該模型搭建、損失函數(shù)求解、訓(xùn)練過程實(shí)現(xiàn)及測(cè)試等相關(guān)步驟,然后將模型的訓(xùn)練測(cè)試代碼在深度學(xué)習(xí)框架Caffe上加以實(shí)現(xiàn),最后在不同路口場(chǎng)景下進(jìn)行實(shí)驗(yàn)分析。實(shí)驗(yàn)結(jié)果表明,該目標(biāo)檢測(cè)模型可實(shí)時(shí)對(duì)道路車輛擁堵情況進(jìn)行精確檢測(cè),精度為76%左右。系統(tǒng)具有安裝方便、檢測(cè)精度高、性價(jià)比高等優(yōu)點(diǎn),對(duì)于后續(xù)道路路口車輛的擁堵檢測(cè)研究具有一定參考價(jià)值。

參考文獻(xiàn):

[1] 張慧,王坤風(fēng),王飛躍.深度學(xué)習(xí)在目標(biāo)視覺檢測(cè)中的應(yīng)用進(jìn)展與展望[J].自動(dòng)化學(xué)報(bào),2017,43(8):1290-1304.

[2] DALAL N, TRIGGS B. Histograms of oriented gradients for human detection[C].Computer Vision and Pattern Recognition, 2005:886-893.

[3] LOWE D G.Distinctive image features from scale-invariant keypoints [J].International Journal of Computer Vision, 2004,60(2):91-110.

[4] HE K, ZHANG X, REN S, et al. Spatial pyramid pooling in deep convolutionalnetworks for visual recognition [J]. IEEE Trans on Pattern Analysis and Machine Intelligence, 2015,37(9):1904-1916.

[5] GIRSHICK R. Fast R-CNN [C].Proc of IEEE International Conference on Computer Vision,2015:1440-1448.

[6] REN S, HE K, GIRSHICK R, et al. Faster R-CNN: towards real-time object detection with region proposal networks [C].Advances in Neural Information Processing Systems,2015:91-99.

[7] DAI J, LI Y, HE K, et al. R-FCN: object detection via region-based fully convolutional networks [C].Neural Information Processing Systems, 2016:379-387.

[8] REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: unified, realtime object detection [C]. Proc of IEEE Conference on Computer Vision and Pattern Recognition,2016:779-788.

[9] LIU W, ANGUELOV D, ERHAN D, et al. SSD: single shot multibox detector [C].Proc of European Conference on Computer Vision, 2016:21-37.

[10] GIRSHICK R. Fast R-CNN[C].ICCV,2015:1440-1448.

[11] SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[C]. NIPS,2015.

[12] RUSSAKOVSKY O, DENG J, SU H,et al. Imagenet large scale visual recognition challenge[J]. International Journal of Computer Vision , 2014,115(3):211-252.

[13] CHEN L C, PAPANDREOU G, KOKKINOS I, et al. Semantic image segmentation with deep convolutional nets and fully connected CRFs[J]. Computer Science, 2014(4):357-361.

[14] 深度學(xué)習(xí):Caffe實(shí)戰(zhàn)[N].中華讀書報(bào),2016.

(責(zé)任編輯:黃 ?。?/p>

猜你喜歡
卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)語言模型研究
基于卷積神經(jīng)網(wǎng)絡(luò)溫室智能大棚監(jiān)控系統(tǒng)的研究
基于深度卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別算法
梁山县| 南江县| 南和县| 文安县| 疏勒县| 九江县| 和林格尔县| 邳州市| 东兴市| 深水埗区| 水城县| 海淀区| 南通市| 濮阳县| 兴业县| 洪湖市| 宁津县| 慈利县| 宜昌市| 微山县| 泰顺县| 文安县| 康乐县| 腾冲县| 汝阳县| 唐海县| 古蔺县| 梅河口市| 左权县| 呈贡县| 福州市| 晴隆县| 大洼县| 汕头市| 梁河县| 汾西县| 新干县| 池州市| 海宁市| 双辽市| 疏附县|