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

?

Haar特征提取IP核設(shè)計(jì)及前方車(chē)輛檢測(cè)系統(tǒng)實(shí)現(xiàn)

2018-08-08 06:28任亮樸徐美華陳高攀
電子設(shè)計(jì)工程 2018年14期
關(guān)鍵詞:特征提取分類(lèi)器車(chē)輛

任亮樸,徐美華,陳高攀

(1.上海大學(xué)微電子研究與開(kāi)發(fā)中心,上海200072;2.上海大學(xué)機(jī)電工程與自動(dòng)化學(xué)院,上海200072)

針對(duì)汽車(chē)安全駕駛的智能駕駛輔助系統(tǒng)是現(xiàn)在的研究熱點(diǎn),它需要檢測(cè)路面的環(huán)境信息。對(duì)路面的環(huán)境檢測(cè)有行人檢測(cè)、車(chē)輛檢測(cè)、車(chē)道線檢測(cè)等,其中前方車(chē)輛檢測(cè)是非常重要組成部分。

基于計(jì)算機(jī)視覺(jué)的車(chē)輛檢測(cè)是現(xiàn)在的主流方法,在早期研究過(guò)程中,一般采用車(chē)輛的對(duì)稱性[1]、邊緣特征、顏色信息[2]等來(lái)檢測(cè)車(chē)輛。在最近幾年,車(chē)輛的特征轉(zhuǎn)變?yōu)楦悠者m和更具魯棒性的特征,如Haar特征[3-5]和 HOG(Histograms of Oriented Gradients)特征[6]或混合特征HOG+Haar、Haar+對(duì)稱性等,對(duì)這些提取的特征分類(lèi)的方法有支持向量機(jī)[7-8](Support Vector Machine,SVM)、人工神經(jīng)網(wǎng)絡(luò)[9-10](Artificial Neural Network,ANN)、AdaBoost[11-12]等。為了使車(chē)輛檢測(cè)算法能夠真正用于汽車(chē)駕駛上,我們還需設(shè)計(jì)對(duì)應(yīng)的車(chē)輛檢測(cè)嵌入式系統(tǒng)。文獻(xiàn)[13]采用FPGA來(lái)實(shí)現(xiàn)前方車(chē)輛檢測(cè),但是它采用的是直觀的特征,準(zhǔn)確性較差。文獻(xiàn)[14-15]采用GPU硬件平臺(tái)取得了比較好的效果,但是也很難應(yīng)用于汽車(chē)嵌入式處理系統(tǒng)。

由于Haar特征相比HOG特征硬件實(shí)現(xiàn)更加簡(jiǎn)單,SVM相對(duì)于人工神經(jīng)網(wǎng)絡(luò)有更好的數(shù)學(xué)理論支持且針對(duì)未訓(xùn)練過(guò)的樣本預(yù)測(cè)能力更強(qiáng)。文中設(shè)計(jì)完成了基于Haar+SVM前方車(chē)輛檢測(cè)系統(tǒng)中的Haar特征提取的IP核設(shè)計(jì),通過(guò)部分積分圖結(jié)構(gòu)、流水線結(jié)構(gòu)、乒乓操作、數(shù)據(jù)復(fù)用等方法提高Haar特征的計(jì)算速度;并且針對(duì)提取到的Haar特征,采用AdaBoost進(jìn)行降維操作,再用SVM進(jìn)行分類(lèi)訓(xùn)練,提升了分類(lèi)能力。最終,采用Xilinx公司的XC7Z020作為核心處理芯片將整個(gè)算法在嵌入式系統(tǒng)實(shí)現(xiàn)后,檢測(cè)精度為97.2%,系統(tǒng)處理速度平均為每秒21.6幀??梢詽M足前方車(chē)輛檢測(cè)的要求。

1 前方車(chē)輛檢測(cè)算法架構(gòu)

基于單目視覺(jué)的前方車(chē)輛檢測(cè)算法主要分為兩個(gè)部分,訓(xùn)練部分和識(shí)別部分,結(jié)構(gòu)圖如圖1所示。訓(xùn)練部分包括圖像預(yù)處理、Haar特征提取、AdaBoost降維、SVM分類(lèi)器訓(xùn)練四個(gè)部分,用于生成識(shí)別過(guò)程用到的Haar特征以及分類(lèi)器。識(shí)別部分是對(duì)攝像頭實(shí)時(shí)傳回的圖像進(jìn)行處理來(lái)檢測(cè)車(chē)輛。圖像預(yù)處理過(guò)程包括幀預(yù)處理、感興趣區(qū)域提取等操作,為后面的Haar特征提取做準(zhǔn)備。

圖1 前方車(chē)輛檢測(cè)算法結(jié)構(gòu)圖

2 Haar特征提取IP核設(shè)計(jì)

針對(duì)前方車(chē)輛檢測(cè)算法中Haar特征提取,本文提出Haar特征提取IP核設(shè)計(jì),進(jìn)行硬件加速,提高算法的運(yùn)算效率。

2.1 Haar特征提取IP核

本文提出的Haar特征提取IP核結(jié)構(gòu)圖如圖2所示,主要包含3個(gè)模塊,積分圖計(jì)算模塊,Haar特征模塊,特征值計(jì)算模塊。積分圖計(jì)算模塊負(fù)責(zé)積分圖的計(jì)算,Haar特征模塊存儲(chǔ)所需的特征模塊類(lèi)型和坐標(biāo)信息,特征值計(jì)算模塊是將前兩個(gè)模塊輸入的信息進(jìn)行計(jì)算,得到對(duì)應(yīng)特征模塊Haar特征的值。

圖2 特征提取IP模塊結(jié)構(gòu)圖

2.1.1 積分圖計(jì)算

對(duì)于一個(gè)大小為24×24像素的圖像子窗口,基本的4個(gè)Haar特征的總數(shù)就超過(guò)了16萬(wàn)個(gè),這樣巨大數(shù)量的特征將直接導(dǎo)致訓(xùn)練和檢測(cè)的速度減慢,為了快速計(jì)算在不同尺度下的特征,引入了積分圖的概念。積分圖的定義為:

圖3 積分圖及灰度快速計(jì)算

在圖(a)中,黑色處點(diǎn)的積分?jǐn)?shù)值為所有綠色像點(diǎn)的灰度和加上黑色處本身的灰度值。圖(b)表示一個(gè)矩形塊的內(nèi)像素點(diǎn)灰度和計(jì)算示意圖,其公式為:Y=A+D-B-C,Y表示方框內(nèi)灰度和,A、B、C、D分別為各處像素點(diǎn)對(duì)應(yīng)的積分圖的數(shù)值。圖(c)為一個(gè)Haar特征的計(jì)算示意圖,其公式為:Y=A-B-2C+2D+2E-2F-G+H。用這種方法計(jì)算Haar特征時(shí)不必每次都計(jì)算塊內(nèi)灰度和,大大提高了計(jì)算速度。

2.1.2 部分積分圖架構(gòu)

對(duì)于Haar特征的積分圖計(jì)算,首先對(duì)積分圖數(shù)據(jù)采用芯片(ASIC或FPGA)內(nèi)部的RAM資源進(jìn)行存儲(chǔ),但是芯片內(nèi)部的RAM資源極為有限,不能采用全積分圖的架構(gòu),而文獻(xiàn)[16]中的部分積分存儲(chǔ)結(jié)構(gòu)所使用的存儲(chǔ)容量依然太大,仍無(wú)法滿足要求。針對(duì)文獻(xiàn)[16]的思路,可以將部分存儲(chǔ)進(jìn)一步的“部分化”,即積分圖只存儲(chǔ)一個(gè)掃描滑窗的積分圖數(shù)據(jù)。這樣雖然需求的存儲(chǔ)資源減少,但是在提取完Haar特征時(shí)每次都需要重新計(jì)算下一窗口積分圖,使計(jì)算速度極為緩慢。為解決此問(wèn)題,采用行列分開(kāi)計(jì)算存儲(chǔ)架構(gòu),將行積分與列積分分開(kāi)來(lái)進(jìn)行計(jì)算,先進(jìn)行一次行積分,再進(jìn)行列積分,列積分的結(jié)果同行積分一樣存儲(chǔ)在RAM中,完成后就是最終的積分圖。

2.1.3 流水線結(jié)構(gòu)設(shè)計(jì)

在特征值計(jì)算模塊,我們采用流水線式結(jié)構(gòu)。積分模板的地址信息存儲(chǔ)在ROM塊中,當(dāng)列積分完成后,ROM表開(kāi)始生成Haar模板地址,RAM讀到地址后,產(chǎn)生用于計(jì)算的數(shù)據(jù)。在加法器計(jì)算Haar特征時(shí),由于需要的數(shù)據(jù)更多,導(dǎo)致RAM需要對(duì)不同的寄存器賦值,增加了尋址的邏輯資源;另外計(jì)算一個(gè)Haar特征所需周期數(shù)目也更多。為解決此問(wèn)題,設(shè)計(jì)中采用了寄存器隊(duì)列結(jié)構(gòu)和雙端口ROM、雙端口RAM。使用了雙口的RAM和ROM,一個(gè)周期可以取兩個(gè)數(shù)據(jù)到寄存器隊(duì)列中,與原來(lái)相比,雖然消耗的邏輯資源增多,但是計(jì)算速度加倍。另外寄存器每個(gè)周期都向下移位一次,這樣RAM就只需要對(duì)第一個(gè)寄存器不斷賦值就可以了,減少了不必要的尋址邏輯資源。

2.1.4 乒乓結(jié)構(gòu)設(shè)計(jì)

對(duì)此存儲(chǔ)計(jì)算結(jié)構(gòu)的進(jìn)一步分析會(huì)發(fā)現(xiàn),當(dāng)數(shù)據(jù)流向列計(jì)算的RAM時(shí),從列積分流向行積分的計(jì)算處于停止?fàn)顟B(tài),而從第二個(gè)RAM流向下一級(jí)寄存器處于活躍狀態(tài)。為了提高IP接口的利用率,引入乒乓操作,在數(shù)據(jù)輸入端增加了一個(gè)數(shù)據(jù)選擇器,同時(shí)RAM變?yōu)樵瓉?lái)的兩倍。計(jì)算時(shí),當(dāng)?shù)谝粋€(gè)列計(jì)算RAM塊滿時(shí),利用數(shù)據(jù)選擇器對(duì)第二個(gè)列RAM塊輸入數(shù)據(jù),當(dāng)?shù)诙€(gè)RAM滿時(shí)又切換到第一個(gè)RAM。

2.1.5 數(shù)據(jù)復(fù)用與擴(kuò)展設(shè)計(jì)

為了提高檢測(cè)的準(zhǔn)確率,滑窗會(huì)有部分重疊,對(duì)于這種情況,可以采用數(shù)據(jù)復(fù)用的設(shè)計(jì),在每次移動(dòng)滑窗后,使用前一次計(jì)算積分圖計(jì)算所留下的數(shù)據(jù),這樣做的好處是可以使計(jì)算一次積分圖的數(shù)據(jù)減半,提高計(jì)算速度。其計(jì)算與存儲(chǔ)結(jié)構(gòu)如圖4所示。

圖4 數(shù)據(jù)復(fù)用結(jié)構(gòu)圖

在圖4中,當(dāng)B1RAM塊(包含B11和B12兩部分)內(nèi)積分圖數(shù)據(jù)使用完畢時(shí),滑窗向右移動(dòng)。若需要使用滑窗內(nèi)原始的部分?jǐn)?shù)據(jù),直觀的方案是通過(guò)移位將原始滑窗右半邊的數(shù)據(jù)移到左半邊,然后更新左半邊的數(shù)據(jù)。但是在RAM內(nèi)不能像寄存器那樣移位,這里提出虛擬的B13結(jié)構(gòu),即新的滑窗由新的B12和B13組成,這里無(wú)需改動(dòng)RAM塊B12的數(shù)據(jù),直接更新B13塊中的數(shù)據(jù)。當(dāng)下一次更新窗口時(shí)只需更新B12塊中的數(shù)據(jù)。在使用特征模板進(jìn)行特征計(jì)算時(shí),需要判斷此次積分圖為B11+B12模式還是B12+B13模式,然后對(duì)模板地址進(jìn)行變換,而這只需要一個(gè)標(biāo)志位即可解決。

在基本的Haar特征提取IP基礎(chǔ)上,如果增加RAM的數(shù)量(A1-An,B1-Bn),就可實(shí)現(xiàn)需要更多的Haar特征應(yīng)用情況下的擴(kuò)展型IP設(shè)計(jì)。

2.2 接口設(shè)計(jì)及仿真實(shí)驗(yàn)

針對(duì)設(shè)計(jì)的IP核,用Verilog寫(xiě)出具體的數(shù)字電路,IP接口定義如表1所示。

表1 IP接口定義

對(duì)此IP編寫(xiě)testbench,并用Synopsys的VCS進(jìn)行仿真,這里選取的特征模板為圖3(c)所示,其中各個(gè)點(diǎn)坐標(biāo)為 A(0,0)、B(0,10)、C(1,0)、D(1,10)、E(2,0)、F(2,10)、G(3,0)、H(3,10),輸入的像素一直為1,根據(jù)公式可得最終的結(jié)果應(yīng)該為10。仿真結(jié)果如圖5所示,從圖中可以看出,data_in端口的數(shù)據(jù)一直為1;輸入到Rom表中的數(shù)據(jù)lut_in為:x800,0x80a,0x820,0x82a,0x840,0x84a,0xc60,0xc6a;在Haar_ready拉高時(shí),data_out端輸出0x000a;Haar_ready每四個(gè)時(shí)鐘周期拉高一次且會(huì)一直持續(xù)下去。這些都符合我們的預(yù)期,其中l(wèi)ut_in的高兩位為標(biāo)志位,后面十位為地址位,由此可知IP功能符合設(shè)計(jì)需求。

圖5 VCS仿真

3 AdaBoost降維和SVM訓(xùn)練

AdaBoost算法是一種提升樹(shù)的方法,先對(duì)一個(gè)訓(xùn)練集訓(xùn)練出不同的弱分類(lèi)器,然后把這些弱分類(lèi)器集合起來(lái)構(gòu)成一個(gè)強(qiáng)分類(lèi)器。每一個(gè)弱分類(lèi)器識(shí)別錯(cuò)誤率小于1/2(即準(zhǔn)確率僅比隨機(jī)猜測(cè)略高的學(xué)習(xí)算法),但是將這些弱分類(lèi)器以一定的權(quán)重組合成一個(gè)強(qiáng)分類(lèi)器就能使得分類(lèi)能力提高。

支持向量機(jī)(Support Vector Machine,SVM)是一種在高維特征空間使用線性函數(shù)假設(shè)空間、有監(jiān)督的學(xué)習(xí)方法,廣泛應(yīng)用于統(tǒng)計(jì)分類(lèi)和回歸分析。SVM的訓(xùn)練過(guò)程是找到一個(gè)超平面,或在高或無(wú)限維空間,這個(gè)超平面可以根據(jù)輸入的Haar特征將圖像分為兩類(lèi):車(chē)輛與非車(chē)輛,超平面的函數(shù)為:

其中x表示輸入的Haar特征值向量,ωT和b為分類(lèi)器參數(shù)。SVM分類(lèi)的過(guò)程就是代入x求值,這樣就可以把車(chē)輛和非車(chē)輛圖像分開(kāi)來(lái)。

文中采用AdaBoost對(duì)訓(xùn)練集中樣本特征進(jìn)行降維,用SVM對(duì)經(jīng)過(guò)降維的前方車(chē)輛檢測(cè)樣本庫(kù)進(jìn)行分類(lèi)訓(xùn)練,這里通過(guò)Haar特征將二者有機(jī)結(jié)合起來(lái)。如圖6所示是AdaBoost訓(xùn)練和測(cè)試結(jié)果,可以看到訓(xùn)練結(jié)果為500輪時(shí),測(cè)試錯(cuò)誤率區(qū)域穩(wěn)定,平均錯(cuò)誤為3.9%。采用降維后的特征信息作為SVM分類(lèi)器訓(xùn)練的樣本庫(kù),在4 764個(gè)樣本中隨機(jī)選擇3 334個(gè)樣本作為訓(xùn)練集,1 430個(gè)樣本作為測(cè)試集。采用libsvm對(duì)樣本進(jìn)行訓(xùn)練,相對(duì)于純粹采用AdaBoost的方法對(duì)Haar特征進(jìn)行訓(xùn)練,采用AdaBoost+SVM的方法將正確率從96.10%提高到了97.26%。

4 前方車(chē)輛檢測(cè)系統(tǒng)實(shí)現(xiàn)

圖6 AdaBoost訓(xùn)練和測(cè)試結(jié)果

根據(jù)前面提到的車(chē)輛檢測(cè)算法,將軟件和硬件在 Xilinx ZC702 SOC(System On a Chip)上實(shí)現(xiàn)。該芯片是采用FPGA+CPU的嵌入式SOC。將MATLAB代碼移植到嵌入式Linux操作系統(tǒng)中,并將Haar特征提取的IP核移植在可編程邏輯上。

4.1 系統(tǒng)硬件設(shè)計(jì)

前方車(chē)輛檢測(cè)系統(tǒng)硬件系統(tǒng)由核心板、主板外設(shè)3個(gè)部分組成,系統(tǒng)圖如圖7所示。

圖7 前方車(chē)輛檢測(cè)系統(tǒng)硬件系統(tǒng)

4.2 系統(tǒng)軟件設(shè)計(jì)

軟件的開(kāi)發(fā)環(huán)境為嵌入式Linux,系統(tǒng)的開(kāi)發(fā)語(yǔ)言選擇的是Python,由于Python的執(zhí)行效率要低于C或者C++,為彌補(bǔ)此不足,使用OpenCV庫(kù)來(lái)進(jìn)行開(kāi)發(fā)。因?yàn)镺penCV庫(kù)的核心為C++,只是接口部分用Python來(lái)連接,所以采用Python+OpenCV的方案使得算法最終的執(zhí)行效率并沒(méi)有明顯的降低,但開(kāi)發(fā)速度提高。

4.3 實(shí)驗(yàn)結(jié)果

圖8 實(shí)物圖與測(cè)試結(jié)果

整個(gè)前方車(chē)輛檢測(cè)系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)后,我們對(duì)一個(gè)視頻進(jìn)行前方車(chē)輛檢測(cè),圖8是系統(tǒng)測(cè)試平臺(tái)的實(shí)物圖與前方車(chē)輛檢測(cè)的部分截圖,從圖中我們可以看出,前方的車(chē)輛基本都可以檢測(cè)出來(lái)。據(jù)統(tǒng)計(jì),系統(tǒng)的檢測(cè)精度為97.2%,系統(tǒng)處理速度平均為21.6幀每秒??梢詽M足前方車(chē)輛檢測(cè)的要求。

5 結(jié)束語(yǔ)

文中提出基于Haar+SVM前方車(chē)輛檢測(cè)系統(tǒng)中的Haar特征提取的IP核設(shè)計(jì),通過(guò)部分積分圖結(jié)構(gòu)、流水線結(jié)構(gòu)、乒乓操作、數(shù)據(jù)復(fù)用等方法提高Haar特征的計(jì)算速度;并且針對(duì)提取到的Haar特征,我們采用AdaBoost進(jìn)行降維操作,再用SVM進(jìn)行分類(lèi)訓(xùn)練,提升了分類(lèi)能力。將整個(gè)算法在嵌入式系統(tǒng)實(shí)現(xiàn)后,實(shí)驗(yàn)結(jié)果表明,檢測(cè)精度為97.2%,系統(tǒng)處理速度平均為每秒21.6幀,驗(yàn)證了所設(shè)計(jì)的算法和系統(tǒng)的正確性和有效性。

猜你喜歡
特征提取分類(lèi)器車(chē)輛
基于Daubechies(dbN)的飛行器音頻特征提取
車(chē)輛
BP-GA光照分類(lèi)器在車(chē)道線識(shí)別中的應(yīng)用
Bagging RCSP腦電特征提取算法
冬天路滑 遠(yuǎn)離車(chē)輛
加權(quán)空-譜與最近鄰分類(lèi)器相結(jié)合的高光譜圖像分類(lèi)
結(jié)合模糊(C+P)均值聚類(lèi)和SP-V-支持向量機(jī)的TSK分類(lèi)器
提高車(chē)輛響應(yīng)的轉(zhuǎn)向輔助控制系統(tǒng)
基于MED和循環(huán)域解調(diào)的多故障特征提取
基于LLE降維和BP_Adaboost分類(lèi)器的GIS局部放電模式識(shí)別