文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)02-0116-04
為了使機(jī)器人替代人類執(zhí)行簡單而重復(fù)的任務(wù)或在危險(xiǎn)環(huán)境中作業(yè),制作了大量機(jī)器視覺系統(tǒng)進(jìn)行試驗(yàn)。但是所建立的機(jī)器視覺檢測(cè)與處理系統(tǒng),僅局限于對(duì)人腦處理圖像的低級(jí)模仿,而對(duì)圖像的前期處理則要進(jìn)行大量的數(shù)學(xué)運(yùn)算,占用了大部分系統(tǒng)資源,這使機(jī)器人系統(tǒng)的反應(yīng)速度非常緩慢,遠(yuǎn)遠(yuǎn)達(dá)不到像人類一樣的反應(yīng)速度。
目前,計(jì)算機(jī)所使用的中央處理器通常為傳統(tǒng)的馮·諾依曼體系結(jié)構(gòu)[1-5],該體系結(jié)構(gòu)為串行工作,雖然可以增加流水線深度提高中央處理器處理速度,在流水線上實(shí)現(xiàn)指令級(jí)并行,但是在同一時(shí)刻只能有一個(gè)運(yùn)算結(jié)果輸出給數(shù)據(jù)總線。哈佛體系結(jié)構(gòu)相對(duì)馮·諾依曼體系結(jié)構(gòu)有所改進(jìn),取指令與取數(shù)據(jù)同時(shí)進(jìn)行,但其運(yùn)算結(jié)果還是串行輸出,所以海量圖像數(shù)據(jù)處理的瓶頸限制了圖像處理技術(shù)與機(jī)器視覺技術(shù)領(lǐng)域的發(fā)展,只能在精簡算法、減少運(yùn)算量方面著手以加快圖像處理速度。而流處理器可以實(shí)現(xiàn)數(shù)據(jù)級(jí)、指令級(jí)、任務(wù)級(jí)的并行,根據(jù)圖像像素點(diǎn)之間相互獨(dú)立與數(shù)據(jù)類型一致的特點(diǎn),利用流處理器制作的圖像并行處理系統(tǒng)平臺(tái),可以通過并行的數(shù)據(jù)運(yùn)算來提高圖像處理的速度,從而提高整個(gè)機(jī)器人系統(tǒng)的反應(yīng)速度。
針對(duì)現(xiàn)有圖像處理方法存在運(yùn)算瓶頸的不足,本文提出了一種基于流處理器的圖像并行處理系統(tǒng)。該系統(tǒng)采用Storm-1流處理器作為圖像并行處理平臺(tái),分析了現(xiàn)有灰度圖像處理算法的并行性,并根據(jù)所建立的流處理器程序模型將算法進(jìn)行流化,以適應(yīng)流處理器并行運(yùn)算的硬件體系結(jié)構(gòu),從而實(shí)現(xiàn)了圖像數(shù)據(jù)處理的并行運(yùn)算,加快了圖像灰度變換速度。
1 流處理器
流處理器體系結(jié)構(gòu)是一個(gè)新興的體系結(jié)構(gòu)形式,與基于馮·諾依曼體系結(jié)構(gòu)的傳統(tǒng)處理器部分體系結(jié)構(gòu)相似,兩種體系結(jié)構(gòu)的比較如圖1所示[6]。傳統(tǒng)的處理器要對(duì)零散、無規(guī)律的數(shù)據(jù)進(jìn)行運(yùn)算處理,數(shù)據(jù)的運(yùn)算和存取操作必須緊密耦合,訪存操作占據(jù)大量系統(tǒng)資源。其體系結(jié)構(gòu)最大特點(diǎn)是處理器內(nèi)部大部分面積被用作放置一級(jí)、二級(jí)緩存,而計(jì)算單元只占據(jù)芯片較小面積。流處理器其運(yùn)算單元占整個(gè)芯片面積較大,其數(shù)量也遠(yuǎn)遠(yuǎn)多于傳統(tǒng)處理器,而緩存面積較小,其容量也低于傳統(tǒng)處理器。在數(shù)據(jù)處理方面,流處理器是將操作數(shù)據(jù)定義為流,數(shù)據(jù)為同構(gòu)有序的流動(dòng)與處理,數(shù)據(jù)運(yùn)算和數(shù)據(jù)存取分離,使訪存開銷減小,其高執(zhí)行效率和并行計(jì)算的特點(diǎn)適用于圖像處理與機(jī)器視覺領(lǐng)域[7]。
2 圖像并行處理系統(tǒng)
為了增強(qiáng)機(jī)器人系統(tǒng)的互動(dòng)性與實(shí)時(shí)性,實(shí)現(xiàn)圖像數(shù)據(jù)的高速并行處理,采用SPI(Stream Processor Inc)公司的Storm-1系列的SP16HP-G220流數(shù)字信號(hào)處理器作為系統(tǒng)中央處理器[8],其體系結(jié)構(gòu)如圖2所示。該處理器為SoC級(jí)流處理器,其工作頻率為700 MHz,每秒可進(jìn)行1 120億次32位乘加操作。System MIPS為流處理器主控制核心,負(fù)責(zé)系統(tǒng)的初始化、任務(wù)調(diào)度與I/O口驅(qū)動(dòng)等整體操作。DSP子系統(tǒng)以一個(gè)32 bit的RISC處理器作為系統(tǒng)控制器,負(fù)責(zé)將需要執(zhí)行運(yùn)算的數(shù)據(jù)進(jìn)行流化傳送給數(shù)據(jù)并行處理單元(DPU)。DPU是流處理器的計(jì)算核心,進(jìn)行并行圖像數(shù)據(jù)運(yùn)算。該流處理器的DPU擁有16個(gè)計(jì)算簇,每個(gè)計(jì)算簇?fù)碛幸粋€(gè)16 KB的寄存器,組成256 KB的片上存儲(chǔ)器,計(jì)算簇中含有5個(gè)32位乘加運(yùn)算器,計(jì)算簇通過DPU Dispatcher硬件完成流的導(dǎo)入與導(dǎo)出操作。I/O子系統(tǒng)擁有108個(gè)高速I/O接口用于視頻采集、傳感器通信和數(shù)據(jù)交換;PCI接口支持66 MHz/33 MHz數(shù)據(jù)總線;內(nèi)存控制單元支持DDR1和DDR2內(nèi)存,傳輸速率為666 MHz,最大支持2 GB內(nèi)存尋址空間。
圖像并行處理系統(tǒng)主要進(jìn)行圖像處理工作,解決圖像數(shù)據(jù)處理運(yùn)算速度瓶頸的問題,為機(jī)器人主控系統(tǒng)及其執(zhí)行機(jī)構(gòu)提供運(yùn)行數(shù)據(jù)支持,其機(jī)器視覺系統(tǒng)結(jié)構(gòu)如圖3所示。該系統(tǒng)由CCD傳感器作為圖像并行處理系統(tǒng)的輸入,圖像并行處理系統(tǒng)作為機(jī)器視覺系統(tǒng)的運(yùn)算處理核心進(jìn)行高速并行圖像處理,處理后將數(shù)據(jù)傳送給機(jī)器人的主控系統(tǒng)進(jìn)行相應(yīng)操作。
3 流處理器程序模型
根據(jù)流處理器硬件體系結(jié)構(gòu),流程序模型分為流級(jí)程序模型和核心級(jí)程序模型[9-11],分別運(yùn)行在DSP子系統(tǒng)與數(shù)據(jù)并行處理單元。流級(jí)程序負(fù)責(zé)控制標(biāo)量處理器、流控制器和片外存儲(chǔ)器,并且進(jìn)行數(shù)據(jù)流化與流組織輸入輸出;核心級(jí)程序負(fù)責(zé)進(jìn)行數(shù)據(jù)并行計(jì)算,根據(jù)數(shù)據(jù)處理的復(fù)雜程度,將運(yùn)算處理過程分為一個(gè)或多個(gè)核心子程序。
3.1 流級(jí)程序模型
數(shù)據(jù)流的運(yùn)算對(duì)流級(jí)程序是透明的,流程序不對(duì)數(shù)據(jù)流中的信息進(jìn)行實(shí)際的運(yùn)算操作。流級(jí)程序首先在初始化時(shí)將需要操作的數(shù)據(jù)定義為流,然后將數(shù)據(jù)流加載到數(shù)據(jù)并行處理單元,并按照算法調(diào)用核心級(jí)程序?qū)?shù)據(jù)流進(jìn)行操作,最后通過計(jì)算簇寄存器輸出與存儲(chǔ)流數(shù)據(jù),圖4所示為流數(shù)據(jù)輸入給計(jì)算簇的示意圖。圖5為流級(jí)程序模型,spi_load和spi_stroe為Storm-1系列流處理器關(guān)鍵詞,其功能為加載流與存儲(chǔ)流。format和encode為調(diào)用核心級(jí)程序,在數(shù)據(jù)并行處理單元中執(zhí)行。
3.2 核心級(jí)程序模型
在數(shù)據(jù)并行處理單元中運(yùn)行的程序?yàn)楹诵募?jí)程序,該程序負(fù)責(zé)對(duì)輸入的流數(shù)據(jù)進(jìn)行密集的數(shù)學(xué)運(yùn)算。核心級(jí)程序的編寫與應(yīng)用有緊密耦合關(guān)系,不同的算法應(yīng)用有不同的程序模型與之對(duì)應(yīng),但其主要思想為挖掘算法的并行性。當(dāng)流級(jí)程序?qū)⒔M織好的數(shù)據(jù)流輸入給數(shù)據(jù)并行處理單元后,核心級(jí)程序首先進(jìn)行常數(shù)設(shè)置和參數(shù)讀取等操作,然后對(duì)輸入流根據(jù)算法進(jìn)行運(yùn)算等操作,最后向計(jì)算簇寄存器寫入流數(shù)據(jù)結(jié)果。
4 灰度變換及其算法流化
由于圖像處理算法眾多,其算法結(jié)構(gòu)差別較大,因此,選取圖像處理中具有代表性的灰度變換進(jìn)行并行性分析與算法流化。圖像的灰度變換過程就是將彩色圖像變換為黑白圖像,因?yàn)榛叶葓D像更加容易進(jìn)行圖像分析與運(yùn)算,所以機(jī)器視覺系統(tǒng)在通過CCD傳感器采集到彩色圖像后的第一步預(yù)處理就是將其變換為灰度圖像?;叶茸儞Q方程如下:
Xrgb=0.299 R+0.587 G+0.114 B (1)
其中,Xrgb為圖像的灰度值,R、G、B分別為RGB圖像的三個(gè)分量值。
原始的灰度處理方法是將圖像看成一個(gè)二維數(shù)組F(i,j),對(duì)圖像按照從左到右,從上到下的順序掃描,在掃描的過程中逐點(diǎn)對(duì)各像素進(jìn)行灰度變換,每次掃描過程之間沒有任何相關(guān)性,并且輸入和輸出數(shù)據(jù)之間也沒有聯(lián)系,所以在處理的過程中各像素點(diǎn)是相互獨(dú)立的,沒有數(shù)據(jù)相關(guān)性,因此該算法具有良好的并行性。根據(jù)式(1),每進(jìn)行一次灰度變換,需要進(jìn)行3次乘法運(yùn)算操作和2次加法運(yùn)算操作,將該算法固化到計(jì)算簇中,可在3個(gè)時(shí)鐘周期完成一個(gè)像素的灰度變換操作。將初始化中定義為流的圖像數(shù)據(jù)加載到所有計(jì)算簇中,即完成算法的流化等處理操作。其加載形式如圖4所示。通過對(duì)算法流化開發(fā)算法程序的并行性,減少訪存次數(shù)來提高整個(gè)算法程序的執(zhí)行效率。
對(duì)灰度變換模型與算法程序并行性的分析,可將整個(gè)灰度變換分解為3個(gè)計(jì)算核心組成核心級(jí)程序,如圖6所示,整個(gè)計(jì)算核心程序固化在數(shù)據(jù)并行處理單元的計(jì)算簇中。首先將流級(jí)程序定義的流圖像數(shù)據(jù)加載到并行處理單元的流數(shù)據(jù)輸入端口作為輸入流,計(jì)算核心1在完成初始化過程后對(duì)順序流過的數(shù)據(jù)進(jìn)行并行計(jì)算,計(jì)算完成后流出計(jì)算核心1,并以中間流的形式流入計(jì)算核心2;然后通過類似操作完成整個(gè)流圖像數(shù)據(jù)的灰度變換;最后計(jì)算核心3將輸出流存儲(chǔ)到計(jì)算簇寄存器中供流級(jí)程序使用。
5 實(shí)驗(yàn)仿真與分析
5.1 仿真系統(tǒng)及實(shí)驗(yàn)樣本
為了對(duì)流化算法進(jìn)行量化分析和對(duì)比實(shí)驗(yàn)以驗(yàn)證其優(yōu)越性,建立了一套實(shí)驗(yàn)仿真系統(tǒng),采用Intel Pentium Ⅲ作為中央處理器,處理器主頻為733 MHz,內(nèi)存為256 MB,操作系統(tǒng)為Windows XP SP3,利用MATLAB 7.0軟件構(gòu)建了仿真對(duì)比實(shí)驗(yàn)平臺(tái)。仿真系統(tǒng)以SP16HP-G220流數(shù)字信號(hào)處理器為基準(zhǔn)建立了仿真系統(tǒng)模型,模型內(nèi)部含有16路計(jì)算簇與該流處理器相對(duì)應(yīng),并將流化完成的灰度變換程序?qū)懭朐摲抡婺P椭羞M(jìn)行仿真實(shí)驗(yàn)。實(shí)驗(yàn)樣本如圖7中的(a)、(c)、(e)、(g)、(i)所示,其圖片像素大小分別為500萬、200萬、78萬、48萬、30萬。通過使用不同的處理器處理實(shí)驗(yàn)樣本進(jìn)行對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)分別仿真?zhèn)鹘y(tǒng)處理器與流處理器對(duì)實(shí)驗(yàn)樣本進(jìn)行灰度變換,由于仿真模型的預(yù)處理部分都是采用馮·諾依曼體系結(jié)構(gòu)指令集,所以只記錄傳統(tǒng)處理器運(yùn)行普通程序與流處理器運(yùn)行流程序處理不同實(shí)驗(yàn)樣本時(shí)算法部分操作所消耗的時(shí)間,最后對(duì)數(shù)據(jù)進(jìn)行分析得到流處理器相對(duì)于傳統(tǒng)處理器的算法運(yùn)算加速比。
5.2 灰度變換實(shí)驗(yàn)結(jié)果分析
灰度變換實(shí)驗(yàn)結(jié)果如圖7中(b)、(d)、(f)、(h)、(j)所示,傳統(tǒng)處理方法與流化算法處理圖像結(jié)果相同。表1為灰度變換實(shí)驗(yàn)結(jié)果,記錄了三幅不同尺寸的圖片分別使用傳統(tǒng)處理器與流處理器進(jìn)行灰度變換操作時(shí)算法部分程序所消耗的時(shí)間。
本文針對(duì)機(jī)器視覺系統(tǒng)中圖像處理計(jì)算數(shù)據(jù)量大、處理速度慢等問題,設(shè)計(jì)了一種基于流處理器的圖像并行處理系統(tǒng)。該系統(tǒng)采用Strom-1系列SP16HP-G220流數(shù)字信號(hào)處理器作為并行處理系統(tǒng)核心,根據(jù)其硬件體系結(jié)構(gòu)建立了流處理器程序模型,并參考圖像處理實(shí)際需求選取具有代表性的灰度變換進(jìn)行了算法并行性分析與流化,編寫了流程序與傳統(tǒng)程序進(jìn)行了對(duì)比仿真實(shí)驗(yàn)。圖像并行處理系統(tǒng)與傳統(tǒng)圖像處理系統(tǒng)處理灰度變換其算法部分最大加速比為200。通過實(shí)驗(yàn)表明,灰度變換算法在流處理器上可以獲得較高的性能加速比,反映出流處理器在圖像處理領(lǐng)域的巨大優(yōu)勢(shì),同時(shí)也證明了該圖像并行處理系統(tǒng)適用于高密度數(shù)據(jù)運(yùn)算的機(jī)器視覺系統(tǒng),能夠滿足機(jī)器人對(duì)信息處理時(shí)實(shí)性的需求,并為相關(guān)領(lǐng)域的應(yīng)用提供借鑒。
參考文獻(xiàn)
[1] KHILANY B, DALLY W J, CHANG A, et al. VLSI design and verification of the imagine processor[C].Proceedings of the IEEE International Conference on Computer Design. Freiburg, Germany: IEEE, 2002:289-294.
[2] RAMAN S K,PENTKOVSKI V, KESHAVA J. Implementing streaming SIMD extensions on the Pentium III processor[J]. IEEE Micro, 2000,20(4):47-57.
[3] CLARK L T, HOFFMAN E J, MILLER J, et al. An embedded 32-b microprocessor core for low-power and high-performance applications[J]. IEEE Solid State Circuits,2001,36(11):1599-1608.
[4] KAPASI U J, RIXNER S, DALLY W J, et al. Programmable stream processors[J]. IEEE Computer, 2003,36(8):54-62.
[5] SAKURAI M, NAGATA H, YAMADA M, et al. A transport stream processor for HDD recording and playback of HDTV signal[J]. IEEE Transactions on Consumer Electronics, 2002,48(4):810-815.
[6] TENLLADO C, SETOAIN J, PRIETO M, et al. Parallel implementation of the 2Ddiscrete wavelet transform on graphics processing units: filter bank versus lifting[J]. IEEE Transactions on Parallel and Distributed Systems, 2008,19(3):299-310.
[7] CHAI S M, CHIRICESCU S, ESSICK R, et al. Streaming processors for next-generation mobile imaging applications [J]. IEEE Communications, 2005,43(12):81-89.
[8] YANG X J, YAN X B, XING Z C, et al. Fei Teng 64 stream processing system: architecture, compiler, and programming[J]. IEEE Parallel and Distributed Systems,2009,20(8):1142-1157.
[9] KHAILANY B, DALLY W J, KAPASI U J,et al. Imagine: media processing with streams[J].IEEE Micro, 2001,21(2):35-46.
[10] KHAILANY B, WILLIAMS T, LIN J, et al. A programmable 512 GOPS stream processor for signal, image, and video processing[J]. IEEE Solid State Circuits, 2008,43(1):202-213.
[11] CHEN J C, CHIEN S Y.CRISP: coarse-grained reconfig-urable image stream processor for digital still cameras and camcorders[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2008,18(9):1223-1236.