Adaboost算法的FPGA實(shí)現(xiàn)與性能分析
引言 Adaboost 算法是Freund 和Schapire 于1995 年提出的,全稱為Adaptive Boosting。它是 Boosting 算法的改進(jìn),意為該算法通過機(jī)器訓(xùn)練與學(xué)習(xí)不斷自適應(yīng)地調(diào)整假設(shè)的錯(cuò)誤率,這 種靈活性使得Adaboost 算法很容易與實(shí)際應(yīng)用聯(lián)系起來。2001 年,微軟研究院的P.Viola 提出了基于Haar 特征的Adaboost 算法[1],創(chuàng)造性地將積分圖的概念引入到人臉檢測的特征 計(jì)算當(dāng)中,由于此算法使用了大量尺寸不一的矩形作用來表征人臉。并且該算法中用以檢測 人臉的分類器是采用的級(jí)聯(lián)結(jié)構(gòu),按照由弱到強(qiáng)的順序組織的,其優(yōu)點(diǎn)在于按照統(tǒng)計(jì)概率, 在圖像檢測的一開始就能夠?qū)⒋蟛糠植话四樀膮^(qū)域排除在外,省去了后面計(jì)算負(fù)載更重 的檢測步驟,以此達(dá)到檢測速度提升的目的。經(jīng)過實(shí)際測試,P3 700MHz 的處理器對(duì)352*288 的圖像進(jìn)行檢測的速度為15 幀/秒[2]。但是如果在嵌入式平臺(tái)上運(yùn)行的話,純軟件的檢測速 度則為2 幀/秒[3]。本設(shè)計(jì)將這種快速檢測算法轉(zhuǎn)化成了一種并行處理圖片像素點(diǎn)的硬件結(jié) 構(gòu),能夠大幅度提升圖像中的人臉檢測速度。 目標(biāo)平臺(tái) Virtex5 系列FPGA 是Xilinx 最新一代基于65nm 的FPGA 產(chǎn)品。相比上代產(chǎn)品,速度 平均提高30%。其改進(jìn)后的六輸入的查找表 (LUT) 和新型對(duì)角互連結(jié)構(gòu),減少了邏輯層次, 增強(qiáng)了構(gòu)造塊之間的信號(hào)互連。 本文系統(tǒng)的實(shí)現(xiàn)主要用到了兩類邏輯資源來優(yōu)化系統(tǒng)性能:DSP48E Slice:25x18 位二進(jìn)制補(bǔ)碼乘法器能產(chǎn)生48 位全精度結(jié)果。此功能單元還能夠 實(shí)現(xiàn)諸多DSP 模塊如乘累加器、桶形移位器、寬總線多路復(fù)用器等。 Block RAM:可配置成2 個(gè)18 Kb 或1 個(gè)36 Kb 的Block RAM,也能夠配置為雙端口 RAM 或FIFO,并提供了ECC 校驗(yàn)檢查功能,提高了系統(tǒng)可靠性。 硬件系統(tǒng)結(jié)構(gòu) 本文采用了一種像素積分單元陣列的結(jié)構(gòu)來實(shí)現(xiàn)對(duì)圖像進(jìn)行人臉檢測的并行性處理 [4,5]。該陣列的計(jì)算對(duì)象為Haar 特征。該特征被抽象為各種尺寸大小的矩形。一系列的矩形 組合起來即被用來表征人臉。黑白矩形內(nèi)像素的灰度值經(jīng)過加權(quán)求和后即為該特征的特征 值。積分圖ii 的定義是: 系統(tǒng)結(jié)構(gòu)框圖如圖 3 所示,整個(gè)系統(tǒng)的工作流程和各模塊功能闡述如下: 圖像輸入模塊:系統(tǒng)輸入端外接一個(gè)模擬攝像頭,采集到的圖像信號(hào)經(jīng)過板上的A/D 芯片轉(zhuǎn)換成ITU-R BT.656 (YCrCb 4:2:2,8 位數(shù)據(jù)寬度)分辨率為352x288(CIF)的圖像格式。 該模塊的作用為當(dāng)檢測控制狀態(tài)機(jī)發(fā)送初始化信號(hào)后,通過I2C 總線配置A/D 芯片完成信號(hào)轉(zhuǎn)換。另外,由于BT.656 格式混合包含了視頻的場信息和圖像數(shù)據(jù),因此該模塊還要從 BT.656 信號(hào)中提取出圖像數(shù)據(jù)存放到圖像RAM 中。針對(duì)該實(shí)現(xiàn),RAM 大小為8 位寬度, 深度為101376。
其中ii(x, y)是積分圖在點(diǎn)(x, y)處的積分值,i(x', y')是圖像在點(diǎn)(x', y')處的灰度值。利用積分圖可以快速計(jì)算矩形S的灰度和,即Sum=A+D-B-C,其中A、B、C、D 是積分圖中矩形頂點(diǎn)對(duì)應(yīng)的積分值。
評(píng)論