本發(fā)明屬于汽車無人駕駛領(lǐng)域中的行人安全問題,是一種利用神經(jīng)網(wǎng)絡(luò)來檢測行人,從而為無人駕駛提供保護(hù)行人生命安全的基礎(chǔ)。
背景技術(shù):
:隨著人工智能的發(fā)展,各種新技術(shù)和新應(yīng)用層出不窮。人們越來越關(guān)注“衣食住行”中的“行”?!暗蔚未蜍嚒钡某霈F(xiàn)豐富了人們的出行的方式。而無人駕駛技術(shù)是人們以及研究者所關(guān)注的另一個(gè)熱點(diǎn)。無人駕駛又稱為自動駕駛。百度、谷歌、特斯拉等公司都在大力研發(fā)無人駕駛。而在自動駕駛中,核心問題就是行人檢測、車輛檢測方法。因?yàn)樾腥藱z測和車輛檢測的好壞是保證交通安全的基礎(chǔ),也是自動駕駛從理論到實(shí)際應(yīng)用的必要條件。在高速公路上,汽車以每小時(shí)60到110公里的速度行駛,也就是每秒17到30米。假設(shè)視頻采集裝置每秒30幀。則每一幀汽車會行駛0.5到1米。這對檢測的實(shí)時(shí)性以及可靠性要求很高。但是現(xiàn)在的方法有的有很高的準(zhǔn)確率,而檢測速度比較慢。有的方法檢測速度快,而準(zhǔn)確率比較低?,F(xiàn)有的行人檢測方法主要包含兩個(gè)步驟:(1)生成窗口(2)窗口判別。生成窗口步驟會生成很多窗口。最簡單的生成窗口方法即滑動窗口法?;瑒哟翱诜ǜF盡了行人所在的所有位置和大小,這大大增加了該步驟的時(shí)間。生成窗口的質(zhì)量和速度影響了檢測的速度和準(zhǔn)確率。現(xiàn)有的方法生成的窗口大約有1000到2000個(gè)窗口,耗時(shí)0.2秒到幾秒不等。窗口判別步驟主要是對第一步生成的窗口進(jìn)行判別,給出每一個(gè)窗口是行人的概率。經(jīng)典的方法首先提取圖像的特征,如梯度方向直方圖(hog)、二進(jìn)制局部描述子(lbp)等。得到這些圖像特征之后,再利用支持向量機(jī)方法(svm)對這些特征進(jìn)行訓(xùn)練,訓(xùn)練結(jié)束之后會得到模型參數(shù)。由于每一個(gè)窗口都要提取特征,然后再進(jìn)行判別。時(shí)間主要花費(fèi)在重復(fù)地提取特征的過程。從學(xué)科上說,行人檢測屬于圖像識別。而深度學(xué)習(xí)近幾年大大推進(jìn)了圖像識別領(lǐng)域的發(fā)展。微軟研究人員提出了一種基于深度學(xué)習(xí)的快速基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)檢測方法(fasterrcnn)。fasterrcnn使用同一個(gè)深度模型包含兩個(gè)網(wǎng)絡(luò):候選區(qū)域生成網(wǎng)絡(luò)(proposalnetwork)、檢測網(wǎng)絡(luò)(detectionnetwork)。proposalnetwork負(fù)責(zé)生成窗口,detectionnetwork負(fù)責(zé)判別窗口。但是,此類方法存在以下不足:1.候選區(qū)域生成網(wǎng)絡(luò)和檢測網(wǎng)絡(luò)在訓(xùn)練過程需要分階段訓(xùn)練。2.檢測網(wǎng)絡(luò)依然對每一個(gè)窗口進(jìn)行判別。雖然從特征映射中提取深度特征可以加快窗口判別的速度,但是此類方法仍舊重復(fù)提取特征,再進(jìn)行判別。3.目前的生成窗口和窗口判別存在先后順序。由于其存在先后順序,窗口判別一直在等待生成窗口的結(jié)果,然后才能對窗口進(jìn)行判別。技術(shù)實(shí)現(xiàn)要素:本發(fā)明針對現(xiàn)有行人檢測過程的缺點(diǎn),提出基于神經(jīng)網(wǎng)絡(luò)的快速行人檢測方法,有效的解決了行人檢測速度慢的缺點(diǎn)。由于本發(fā)明的檢測過程在檢測行人時(shí),網(wǎng)絡(luò)僅僅前向傳播一次,不需要重復(fù)地從特征圖中重復(fù)地多次提取特征,所以該方法的檢測速度可以達(dá)到42幅圖像每秒。一種基于神經(jīng)網(wǎng)絡(luò)的快速行人檢測方法,該方法的檢測對象為任一路面的彩色圖像,包括:步驟一,將彩色圖像數(shù)據(jù)轉(zhuǎn)換為一個(gè)3x448x448的矩陣;步驟二,對3x448x448的矩陣進(jìn)行25次卷積或最大池化操作,得到一個(gè)1024x14x14的矩陣;將所述1024x14x14的矩陣調(diào)整為14x14x1024的矩陣,所述14x14x1024的矩陣表示圖像被分割為14x14個(gè)空間位置,每一個(gè)空間位置上有一個(gè)1024維向量;步驟三,依次選取14x14個(gè)空間位置中的一個(gè)空間位置作為當(dāng)前空間位置;在該當(dāng)前空間位置上預(yù)設(shè)9個(gè)窗口,所述9個(gè)窗口包圍該空間位置的行人,設(shè)該當(dāng)前空間位置上窗口的橫坐標(biāo)為xn,窗口的縱坐標(biāo)為yn,窗口的寬度為wn,窗口的高度為hn,n=1,2,...,9;(1)將該當(dāng)前空間位置上的1024維向量通過一個(gè)全連接層,得到45維向量,所述45維向量包括該當(dāng)前空間位置的窗口的行人局部概率pn,窗口調(diào)整后的橫坐標(biāo)xn′,窗口調(diào)整后的縱坐標(biāo)yn′,窗口調(diào)整后的寬度wn′,窗口調(diào)整后的高度hn′,n=1,2,...,9;選取pn中最大的值所對應(yīng)的窗口作為當(dāng)前窗口,將該當(dāng)前窗口的行人局部概率作為該當(dāng)前空間位置的局部概率pij,1≤i≤14,1≤j≤14,i和j取整數(shù);(2)對步驟二得到的1024x14x14的矩陣進(jìn)行卷積,得到256x14x14的矩陣;將256x14x14的矩陣調(diào)整為50176維向量,將該50176維向量通過一個(gè)全連接層,得到196維向量。通過logistic回歸公式將所述196維向量中的每一維映射到0~1之間得到mij,所述mij表示全局概率,1≤i≤14,1≤j≤14,i和j取整數(shù);步驟四,將pij和mij進(jìn)行相乘,得到每個(gè)空間位置的行人總概率;設(shè)置閾值a,若空間位置的行人總概率大于a,則該空間位置檢測為行人;0.1≤a≤0.2。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下技術(shù)效果:(1)本本發(fā)明的方法有局部窗口生成和全局判別兩個(gè)并行的過程。這兩個(gè)過程相輔相成,共享中間的深度特征。訓(xùn)練階段不需要分階段訓(xùn)練,而檢測階段僅僅前向傳播一次就可以得到檢測結(jié)果;(2)本發(fā)明提高了行人檢測的速度。由于最終判別窗口時(shí),不是對每一個(gè)窗口進(jìn)行判別,而是對一部分空間區(qū)域進(jìn)行判別,所以避免重復(fù)地對每一個(gè)窗口提取特征的過程;(3)本發(fā)明可以通過大數(shù)據(jù)來增強(qiáng)檢測準(zhǔn)確率。由于神經(jīng)網(wǎng)絡(luò)的參數(shù)很多,所以越多的數(shù)據(jù)可以使得網(wǎng)絡(luò)的參數(shù)越來越優(yōu),這使得本發(fā)明在未來的實(shí)用性很強(qiáng)。附圖說明圖1為攝像頭采集的圖片;圖2為原始圖片經(jīng)過調(diào)整后的圖片;圖3為神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖;圖4為將圖片分割成14x14格子圖;圖5為檢測過程示意圖;圖6為每個(gè)格子預(yù)先定義的九個(gè)窗口;圖7為修正窗口位置示意圖;圖8為調(diào)整后的窗口示意圖;圖9為全局概率圖;圖10為全局概率和窗口結(jié)合示意圖;圖11為一個(gè)格子的最終檢測結(jié)果圖;圖12為所有格子的最終檢測結(jié)果圖;圖13為本發(fā)明方法的檢測過程。具體實(shí)施方式下面通過附圖和實(shí)施例對本發(fā)明作進(jìn)一步說明。實(shí)施例1步驟一,從攝像頭采集彩色圖像,采集圖像分辨率為640x480。如圖1所示,是從攝像頭中采集的一幀圖片。一般的彩色圖像包含三個(gè)通道(紅綠藍(lán)),這里只展示其中一個(gè)通道的圖片。1.從視頻流中提取圖像;本實(shí)施例從視頻流中獲取圖片的方法是調(diào)用opencv的庫函數(shù)中的方法cvcapturefromcam()。通過cvcapturefromcam()可以獲取攝像頭的指針。設(shè)獲取的攝像頭指針為cap。然后創(chuàng)建兩個(gè)線程:fetch_thread、detect_thread。fetch_thresh用來抓取攝像頭中的數(shù)據(jù),并存儲為圖像矩陣。detect_thread用來檢測行人,并將最終檢測結(jié)果輸出到圖像上。fetch_thresh中首先調(diào)用opencv庫函數(shù)中cvqueryframe(cap)方法同步攝像頭和內(nèi)存中的數(shù)據(jù)。然后創(chuàng)建一個(gè)image數(shù)據(jù)結(jié)構(gòu)。最后將同步后的數(shù)據(jù)保存到image數(shù)據(jù)結(jié)構(gòu)中。2.對提取的圖像進(jìn)行線性插值變換;線性插值變換后的圖像如圖2所示,線性插值變換的思想是:新像素的值是由同一位置的相臨近的像素的值線性加權(quán)得到的。將圖像調(diào)整為448x448x3是為了方便神經(jīng)網(wǎng)絡(luò)進(jìn)行卷積操作。而且變換后的圖像可以在空間上均勻分割稱14x14的格子。3.在gpu中申請內(nèi)存空間;本實(shí)施例中,網(wǎng)絡(luò)總層數(shù)和細(xì)節(jié)如圖3所示。圖3中的每一層都需要在gpu中開辟一定的內(nèi)存。例如圖3中第0層輸出224x224x64的數(shù)據(jù),則總共申請3211264位的空間。在程序開始一次開辟空間后,之后就可以重復(fù)使用該內(nèi)存空間,不需要重復(fù)申請內(nèi)存空間。步驟二,對3x448x448的矩陣進(jìn)行25次卷積或最大池化操作,得到一個(gè)1024x14x14的矩陣;輸入3x448x448的矩陣,第一次卷積的濾波器的參數(shù)設(shè)置為:size=7,stride=2,pad=1,filters=64。第一次卷積輸出64x224x224矩陣。為了方便說明如表1所示。表1將所述的1024x14x14矩陣,調(diào)整為14x14x1024的矩陣。調(diào)整的目的是減少計(jì)算量,提高計(jì)算速度。即,圖像被分割為14x14個(gè)空間位置,每一個(gè)空間位置上有一個(gè)1024維向量;步驟三,依次選取14x14個(gè)空間位置中的一個(gè)空間位置作為當(dāng)前空間位置;(1)如圖6所示,在該當(dāng)前空間位置上預(yù)設(shè)9個(gè)窗口,所述9個(gè)窗口包圍該空間位置的行人,設(shè)該當(dāng)前空間位置上窗口的橫坐標(biāo)為xn,窗口的縱坐標(biāo)為yn,窗口的寬度為wn,窗口的高度為hn,n=1,2,...,9;如圖5所示,計(jì)算該當(dāng)前空間位置在矩陣中的下標(biāo)index。假設(shè)當(dāng)前空間位置是第i行,第j列,則index=(i*14+j)*1024。將上面的矩陣從index開始的1024個(gè)向量復(fù)制到全連接層。這個(gè)步驟用復(fù)制操作代替現(xiàn)有技術(shù)中的計(jì)算操作,提高了處理速度。本實(shí)施例使用的是文獻(xiàn)“imagenetclassificationwithdeepconvolutionalneuralnetworks”中的全連接層方法。從14x14x1024的矩陣的每個(gè)格子提取1024維向量,通過全連接層,最后輸出45維向量,所述45維向量包括該當(dāng)前空間位置的窗口的行人局部概率pn,窗口調(diào)整后的橫坐標(biāo)xn′,窗口調(diào)整后的縱坐標(biāo)yn′,窗口調(diào)整后的寬度wn′,窗口調(diào)整后的高度hn′,n=1,2,...,9;如表2所示。表2本實(shí)施例中,表2中的概率pn(n=1,2,...,9)表示9個(gè)窗口分別包含行人的局部概率,可以用logistic回歸的公式計(jì)算得到。因?yàn)轭A(yù)先定義的窗口不能很好的包含行人,本步驟用于調(diào)整窗口到最合適的位置。如圖7所示為調(diào)整后的窗口和預(yù)設(shè)窗口。選取pn(n=1,2,...,9)中最大的值所對應(yīng)的窗口作為當(dāng)前窗口,將該當(dāng)前窗口的行人局部概率作為該當(dāng)前空間位置的局部概率pij,1≤i≤14,1≤j≤14,i和j取整數(shù);如圖10所示,通過這個(gè)步驟每個(gè)空間位置僅僅輸出一個(gè)窗口,而且每個(gè)格子的窗口都是調(diào)整后的。本實(shí)施例中當(dāng)前空間位置的最終輸出如圖11所示,可以看到很好的檢測到行人。(2),如圖5所示,對所述1024x14x14的矩陣進(jìn)行卷積,卷積size為3,stride為1,pad為1,filters為256,則得到256x14x14的矩陣。本實(shí)施例中,卷積操作參數(shù)如表3所示:表3sizestridepadfilters311256將256x14x14的矩陣通過一個(gè)全連接層,全連接層輸入為50176維向量,輸出196維向量。使用logistic回歸公式將該向量的每一維都映射到0到1之間。該向量表示的是每個(gè)空間包含行人的全局概率。步驟四,將pij和mij進(jìn)行相乘,得到每個(gè)空間位置的行人總概率;設(shè)置閾值a,若空間位置的行人總概率大于a,則該空間位置檢測為行人;0.1≤a≤0.2。最終的檢測結(jié)果如圖12所示。當(dāng)前第1頁12