第一篇:基于OpenCL的尺度不變特征變換算法的并行設(shè)計(jì)與論文
針對尺度不變特征變換(SIFT)算法實(shí)時性差的問題,提出了利用開放式計(jì)算語言(OpenCL)并行優(yōu)化的SIFT算法。首先,通過對原算法各步驟進(jìn)行組合拆分、重構(gòu)特征點(diǎn)在內(nèi)存中的數(shù)據(jù)索引等方式對原算法進(jìn)行并行化重構(gòu),使得計(jì)算機(jī)網(wǎng)絡(luò)算法的中間計(jì)算結(jié)果能夠完全在顯存中完成交互;然后,采用復(fù)用全局內(nèi)存對象、共享局部內(nèi)存、優(yōu)化內(nèi)存讀取等策略對原算法各步驟進(jìn)行并行設(shè)計(jì),提高數(shù)據(jù)讀取效率,降低傳輸延時;最后,利用OpenCL語言在圖形處理單元(GPU)上實(shí)現(xiàn)了SIFT算法的細(xì)粒度并行加速,并在中央處理器(CPU)上完成了移植。與原SIFT算法配準(zhǔn)效果相近時,并行化的算法在GPU和CPU平臺上特征提取速度分別提升了10.51~19.33和2.34~4.74倍。實(shí)驗(yàn)結(jié)果表明,利用OpenCL并行加速的SIFT算法能夠有效提高圖像配準(zhǔn)的實(shí)時性,并能克服統(tǒng)一計(jì)算設(shè)備架構(gòu)(CUDA)因移植困難而不能充分利用異構(gòu)系統(tǒng)中多種計(jì)算核心的缺點(diǎn)。
0引言
以尺度不變特征變換(Scale Invariant Feature Transform,SIFT)算法[1]為代表的基于特征的圖像匹配方法近幾年發(fā)展迅速,該算法對光照、角度或尺度變化的圖像都有較好的匹配精度和適應(yīng)性,但實(shí)時性差。為了提高實(shí)時性,在此基礎(chǔ)上又衍生出了主成分分析(Principal Component Analysis,PCA)SIFT[2]、快速魯棒特征(Speed Up Robust Feature,SURF)檢測[3]等改進(jìn)算法。這些改進(jìn)的算法盡管在速度方面有所提升,但實(shí)時性仍然不能滿足實(shí)際應(yīng)用要求且在抗尺度和抗旋轉(zhuǎn)方面性能都有不同程度的下降,因此仍無法取代經(jīng)典的SIFT算法[4]。
近年來隨著圖形處理器(Graphics Processing Unit,GPU)計(jì)算能力的不斷提升,利用GPU天然硬件并行的特性來加速非圖形通用大規(guī)模運(yùn)算逐漸受到人們的青睞,目前較為成熟并得到廣泛應(yīng)用的GPU并行編程模型為英偉達(dá)(NVIDIA)公司開發(fā)的統(tǒng)一計(jì)算設(shè)備架構(gòu)(Compute Unified Device Architecture,CUDA)模型。文獻(xiàn)[5-7]利用CUDA實(shí)現(xiàn)了SIFT算法關(guān)鍵步驟的GPU并行加速,取得了一定的加速效果。文獻(xiàn)[8-9]在移動GPU平臺上利用開放式計(jì)算語言(Open Computing Language,OpenCL)實(shí)現(xiàn)了SIFT算法的并行加速,相對于移動中央處理器(Central Processing Unit,CPU)取得了4.6~7.8倍的加速效果。另外,完成同樣的計(jì)算,GPU比CPU的功耗低87%,即利用OpenCL實(shí)現(xiàn)的GPU并行運(yùn)算相對于傳統(tǒng)的CPU具有更高的性能功耗比,但以上方法大多采用步驟分離的優(yōu)化,沒能充分利用GPU全局內(nèi)存以及算法各步驟的中間計(jì)算結(jié)果,加速效果受顯存帶寬的制約。
另外利用CUDA實(shí)現(xiàn)的算法只適用于NVIDIA顯卡,移植困難,而目前的計(jì)算機(jī)系統(tǒng)大多是“CPU+協(xié)處理器”的異構(gòu)系統(tǒng)[10],這使得CUDA無法充分利用異構(gòu)系統(tǒng)中不同類型的計(jì)算核心。具有跨平臺特性的開放式并行編程語言O(shè)penCL的出現(xiàn)為解決此問題提供了契機(jī),利用OpenCL設(shè)計(jì)的并行算法能夠在CPU+(GPU、數(shù)字信號處理器(Digital Signal Processor,DSP)、現(xiàn)場可編程門陣列(FieldProgrammable Gate Array,F(xiàn)PGA)等異構(gòu)系統(tǒng)間移植[11-12],該特性使得經(jīng)OpenCL優(yōu)化的算法能夠擺脫對硬件平臺的依賴。自2010年OpenCL1.1發(fā)布以來,對OpenCL技術(shù)的應(yīng)用研究逐漸興起。陳鋼等[13]對OpenCL內(nèi)存操作作了深入的分析;Yan等[14]利用OpenCL實(shí)現(xiàn)了SURF算法的并行加速。OpenCL編程相比CUDA更為復(fù)雜[15],在軟件開發(fā)方面也面臨更多的挑戰(zhàn)和困難,目前在PC平臺上還沒有利用OpenCL并行優(yōu)化的SIFT算法出現(xiàn)。
針對以上問題,本文對SIFT算法步驟及數(shù)據(jù)索引方式進(jìn)行重構(gòu),提高其并行度,然后通過優(yōu)化內(nèi)存讀取、合理利用OpenCL內(nèi)存層次等策略對該算法進(jìn)一步優(yōu)化,在NVIDIA GPU平臺上實(shí)現(xiàn)了SIFT特征的快速提取。為研究OpenCL的可移植性,將優(yōu)化的GPU版本移植到Intel雙核CPU平臺上,實(shí)驗(yàn)表明優(yōu)化后的算法在兩種計(jì)算平臺上的實(shí)時性都有一定提升。
1SIFT特征提取算法流程
SIFT算法最早由Lowe[1]在1999年提出并于2004年完善,由于其良好的匹配特性,目前已得到廣泛研究與應(yīng)用。SIFT特征點(diǎn)提取實(shí)質(zhì)是在不同尺度空間上查找關(guān)鍵點(diǎn)(特征點(diǎn)),算法基本步驟如下。
1)尺度空間構(gòu)建。
2)高斯差分金字塔空間構(gòu)建。
3)DOG空間極值點(diǎn)檢測。
DOG空間極值點(diǎn)檢測就是將DOG圖像中每個像素與它同尺度的8鄰域點(diǎn)及上下相鄰尺度對應(yīng)的9×2個鄰域點(diǎn)進(jìn)行比較,若為極值點(diǎn)則作為候選特征點(diǎn),記錄其位置和對應(yīng)的尺度。為獲得更精確的特征點(diǎn)位置,在候選特征點(diǎn)處進(jìn)行泰勒展開,得到式(4):
D(x)=D+DTxx+12xT2Dx2x(4)
其中:關(guān)鍵點(diǎn)偏移量為x此處的偏移量x,與后面的x的命名重復(fù),不太規(guī)范,因一篇論文中,一個變量僅能代表一個含義,若包括兩個含義,則指代不清晰,是否可以用另一個變量對此進(jìn)行說明?
回復(fù):這兩個變量x是使用字體來區(qū)分的,一個是粗斜體表示向量,一個是細(xì)斜體,表示普通變量。是可以區(qū)分的。
這個公式是經(jīng)典文獻(xiàn)[1]中此算法的原作者提出的公式,也是用這種方式表述的。為保持統(tǒng)一,所以我覺得可以不用修改。=(x,y,σ)T;(x,y,σ)在該極值點(diǎn)處的值為D;令D(x)x=0,可通過式(5)求得極值:
=-2D-1x2Dx(5)
在Lowe[1]的文章中當(dāng)在任意方向上的偏移量大于0.5時,認(rèn)為該點(diǎn)與其他關(guān)鍵點(diǎn)很相似,將其剔除;否則保留該點(diǎn)為候選特征點(diǎn),并計(jì)算該點(diǎn)對應(yīng)的尺度。
4)特征點(diǎn)主方向計(jì)算。
5)SIFT特征矢量生成。
將特征點(diǎn)鄰域內(nèi)圖像坐標(biāo)根據(jù)步驟4)計(jì)算出的特征點(diǎn)主方向進(jìn)行旋轉(zhuǎn),使得特征向量具有旋轉(zhuǎn)不變性,旋轉(zhuǎn)后以特征點(diǎn)為中心劃分成4×4個子區(qū)域,在每個子區(qū)域內(nèi)計(jì)算8方向的梯度方向直方圖,即可構(gòu)成4×4×8共128維SIFT特征矢量。
2SIFT算法的并行化重構(gòu)
OpenCL標(biāo)準(zhǔn)將內(nèi)核可用的內(nèi)存分為私有內(nèi)存、局部內(nèi)存和全局內(nèi)存/常量內(nèi)存等類型[16],所以在利用OpenCL優(yōu)化算法時,充分挖掘GPU內(nèi)存的存儲層次,合理分配工作組大小是提高并行運(yùn)算效率的關(guān)鍵[17]。為提高算法并行度方便數(shù)據(jù)劃分、降低內(nèi)存帶寬要求,本文對SIFT算法作了以下重構(gòu)。
1)步驟合并。將構(gòu)造尺度空間、創(chuàng)建高斯金字塔及極值點(diǎn)檢測三步驟統(tǒng)一設(shè)計(jì),目的是充分利用OpenCL的global memory和local memory的訪問機(jī)制,使得這3個步驟的中間計(jì)算結(jié)果最大限度地在顯存中完成交互,減少內(nèi)存與顯存間的數(shù)據(jù)交換次數(shù),隱藏帶寬延時。
2)步驟拆分。將極值點(diǎn)定位分為極值點(diǎn)坐標(biāo)檢測和極值點(diǎn)精確定位兩步:第1步只返回極值點(diǎn)坐標(biāo),目的是輔助主機(jī)端完成內(nèi)存分配;第2步完成極值點(diǎn)精確定位。
3)重構(gòu)數(shù)據(jù)索引。本文全面摒棄基于隊(duì)列的特征點(diǎn)索引方式,而是采用線性存儲的方式管理特征點(diǎn)集,這對OpenCL內(nèi)核的工作項(xiàng)劃分、提高數(shù)據(jù)讀取效率以及降低內(nèi)存訪問沖突都非常有效。
4)任務(wù)細(xì)粒度并行。經(jīng)過數(shù)據(jù)索引重構(gòu),在OpenCL的內(nèi)核運(yùn)行時,可方便地部署大規(guī)模的工作組和工作項(xiàng),實(shí)現(xiàn)計(jì)算任務(wù)的細(xì)粒度劃分。經(jīng)過以上設(shè)計(jì)后不僅能提高數(shù)據(jù)訪問速度,而且能夠避免潛在的內(nèi)存訪問沖突。
3SIFT算法的OpenCL實(shí)現(xiàn)
圖1為并行設(shè)計(jì)的SIFT特征提取流程。整個設(shè)計(jì)充分利用全局內(nèi)存以降低數(shù)據(jù)傳輸延時。主機(jī)端首先分配相應(yīng)內(nèi)存對象,然后依次入列高斯模糊、DOG金字塔和極值點(diǎn)檢測3個OpenCL內(nèi)核,完成后即可生成尺度空間和DOG金字塔,從全局優(yōu)化考慮,將這兩部的結(jié)果駐留在全局內(nèi)存中,只返回經(jīng)壓縮的極值點(diǎn)坐標(biāo)。接著按序運(yùn)行極值點(diǎn)精確定位、特征點(diǎn)方向計(jì)算和特征向量生成3個步驟,計(jì)算完成后即完成特征提取全過程。整個流程僅有返回極值點(diǎn)坐標(biāo)和返回特征點(diǎn)結(jié)果兩次讀回操作,其余的中間結(jié)果全部在顯存中完成交互,提高數(shù)據(jù)利用率,降低顯存帶寬要求。
3.1高斯模糊+DOG+極值點(diǎn)檢測內(nèi)核設(shè)計(jì)
深入發(fā)掘算法的并行潛力,充分利用OpenCL的內(nèi)存層次、合理配置工作項(xiàng)數(shù)量和工作組大小是性能提升的關(guān)鍵,也是內(nèi)核設(shè)計(jì)的難點(diǎn)。
3.1.1高斯濾波內(nèi)核設(shè)計(jì)及工作項(xiàng)分配
為降低計(jì)算量,將二維高斯變換分解為沿水平和垂直方向的一維變換,分解后可減少(N2-2×N)×W×H次乘法運(yùn)算(N為高斯核大小,W、H為圖像的寬和高)。由于每個像素相互獨(dú)立,所以在NDRange函數(shù)入列高斯濾波內(nèi)核時將工作項(xiàng)大小設(shè)置為W×H-N,即每個工作項(xiàng)完成一個像素的卷積。另外,進(jìn)行卷積時相鄰像素(圖2黑實(shí)線框內(nèi)數(shù)據(jù))要重復(fù)讀取圖2灰色部分的數(shù)據(jù),為提高讀取效率,本文通過配置工作組,實(shí)現(xiàn)原始數(shù)據(jù)在局部內(nèi)存中共享。圖2為水平高斯核寬度為7、工作組大小設(shè)置為8時的數(shù)據(jù)分配,圖2表示每8個工作組讀取14個數(shù)據(jù),完成8個點(diǎn)(圖2黑虛線框內(nèi)數(shù)據(jù))的卷積運(yùn)算。
在工作組內(nèi)共享局部內(nèi)存通常能提高計(jì)算性能,但并不絕對[18]。為找到工作組的最佳大小,本文測試了不同工作組大小時,寬度為11的高斯核對分辨率為1280×960的圖片進(jìn)行水平卷積的耗時,測試結(jié)果如圖3所示。隨著工作組的增大,耗時逐漸減少,當(dāng)工作組大于128后,耗時基本不再改變,又因?yàn)榫植績?nèi)存的限制,工作組不宜太大,于是本文將工作組大小配置為128。如此設(shè)計(jì)需考慮同一工作組中工作項(xiàng)的同步化問題,本文采用OpenCL提供的barrier(CLK_LOCAL_MEM_FENCE)障礙函數(shù)來實(shí)現(xiàn),垂直濾波與此類似,不再贅述。
3.1.2DOG金字塔構(gòu)建
此步驟的內(nèi)核有兩種設(shè)計(jì)方法:1)一次入列內(nèi)核,只將高斯金字塔相鄰兩層相減,得到一層DOG圖像;2)一次入列內(nèi)核,將高斯金字塔整組圖像傳入內(nèi)核,計(jì)算完成后即可得到一組DOG圖像。
經(jīng)實(shí)驗(yàn)發(fā)現(xiàn),第2種方法數(shù)據(jù)利用率高,耗時較短。又因?yàn)楦咚菇鹱炙拷M層數(shù)固定,所以第2種設(shè)計(jì)的參數(shù)也固定,于是本文采用第2種設(shè)計(jì)方法,數(shù)據(jù)劃分如圖4所示。為進(jìn)一步提高運(yùn)算效率,對數(shù)據(jù)的運(yùn)算都以float4型向量進(jìn)行,共配置(W×H+3)/4個工作項(xiàng),即每個工作項(xiàng)完成一組高斯金字塔對應(yīng)位置(圖4單個虛線框內(nèi)數(shù)據(jù))的float4型向量相減。
3.1.3極值點(diǎn)檢測及內(nèi)核精確定位
入列極值點(diǎn)精確定位內(nèi)核前,主機(jī)端需預(yù)先分配內(nèi)存,而事先并不知道需要為多少個特征點(diǎn)分配內(nèi)存,所以本文將極值點(diǎn)檢測和精確定位作為兩個內(nèi)核先后入列,為減少數(shù)據(jù)傳輸,極值點(diǎn)檢測內(nèi)核只返回壓縮的極值點(diǎn)坐標(biāo)數(shù)組。
極值點(diǎn)檢測內(nèi)核計(jì)算完成后,根據(jù)返回的極值點(diǎn)坐標(biāo)在CPU端統(tǒng)計(jì)極值點(diǎn)位置和個數(shù)N,然后為N個特征點(diǎn)分配內(nèi)存,如圖5所示(實(shí)際分配1.5×N個,Lowe[1]文中指出實(shí)際的特征點(diǎn)數(shù)會是極值點(diǎn)數(shù)N的1.15倍左右)。圖5中每個虛線框用來保存一個特征點(diǎn)的完整信息。最后入列極值點(diǎn)精確定位內(nèi)核,每個極值點(diǎn)配置一個工作項(xiàng),計(jì)算出的精確坐標(biāo)按工作項(xiàng)索引存入圖5對應(yīng)的位置。
3.2計(jì)算梯度方向直方圖
至此,已經(jīng)得到每個特征點(diǎn)的坐標(biāo)、尺度,并按線性存儲在圖5所示的全局內(nèi)存中。因?yàn)槊總€特征點(diǎn)在內(nèi)存中按線性排列,相互獨(dú)立,所以為每個特征點(diǎn)配置一個工作組來計(jì)算梯度方向直方圖,工作組分配如圖6(a)所示。將工作組內(nèi)工作項(xiàng)設(shè)置為2維,為確定工作組最佳大小,本文嘗試了{(lán)1,RAD}、{2,RAD}、{4,RAD}、{8,RAD}四種方式,經(jīng)測試{2,RAD}效果最好(其中RAD為特征點(diǎn)的鄰域?qū)挾?。當(dāng)RAD=5時,每個工作組分配10個工作項(xiàng),工作組中的數(shù)據(jù)分配如圖6(b)所示,圖6(b)中標(biāo)有相同數(shù)字的像素被同一工作項(xiàng)處理。為實(shí)現(xiàn)數(shù)據(jù)共享,在工作組local_memory中構(gòu)建方向直方圖,這時必須使用OpenCL提供的atomic_add原子累加操作才能保證多個工作項(xiàng)同時累加直方圖同一位置時不會出錯。直方圖生成后統(tǒng)計(jì)出大于直方圖極值80%的點(diǎn)的個數(shù)和角度,作為獨(dú)立的候選特征點(diǎn),將結(jié)果填入圖5中對應(yīng)的位置。
3.3特征向量生成計(jì)算出特征點(diǎn)主方向后,即可入列特征向量生成內(nèi)核,因數(shù)據(jù)重構(gòu)后各特征點(diǎn)在內(nèi)存中線性存儲且可獨(dú)立計(jì)算,所以為每個特征點(diǎn)分配一個工作組。又因每個特征點(diǎn)鄰域被劃分為4×4個子區(qū)域,所以為每個工作組配置16個工作項(xiàng)分別計(jì)算每個子區(qū)域的8個方向,數(shù)據(jù)劃分如圖7。圖7中每個箭頭的長度表示每個方向的梯度累計(jì)值,箭頭越長代表值越大。所有工作組計(jì)算完畢后,整個SIFT特征提取算法執(zhí)行完畢,提取出的特征點(diǎn)全部存儲在圖5所示的線性內(nèi)存中。
利用以上方法對兩幅圖片進(jìn)行特征提取后,即可利用歐氏距離準(zhǔn)則完成兩幅圖片特征點(diǎn)的粗匹配,然后用隨機(jī)抽樣一致(RANdom Sample Consensus,RANSAC)算法對粗匹配對進(jìn)行提純,計(jì)算得到兩幅圖片之間的變換矩陣,完成兩幅圖片的匹配。
4優(yōu)化后的算法在CPU上的移植
為進(jìn)一步驗(yàn)證OpenCL的可移植性并比較OpenCL在不同平臺上的加速性能,本文將優(yōu)化后的OpenCL_GPU_SIFT算法移植為能在CPU上運(yùn)行的OpenCL_CPU_SIFT版本。盡管OpenCL具有跨平臺特性,但由于硬件資源的差異,仍需注意以下兩點(diǎn):
1)本文采用的Intel core i5 3210m CPU不支持OpenCL 32位原子操作,所以在3.2節(jié)的內(nèi)核設(shè)計(jì)中無法使用atomic_add原子累加操作,只能將3.2節(jié)的工作組大小配置為1,此時每個工作組中只有一個工作項(xiàng),因而不能實(shí)現(xiàn)局部內(nèi)存共享。
2)工作組中工作項(xiàng)的數(shù)量上限一般受限于兩點(diǎn):一是設(shè)備所能提供的資源數(shù),二是內(nèi)核所需的資源數(shù),這里的資源主要指的是局部內(nèi)存。針對3.2節(jié)的內(nèi)核,GT635m GPU的局部內(nèi)存為47KB(K表示×1024),工作組上限為512,而Intel 3210m CPU的局部內(nèi)存只有32KB(K表示×1024),工作組上限為352,所以工作組大小一定要根據(jù)硬件平臺來設(shè)置,這點(diǎn)尤為重要。針對以上兩點(diǎn)修改后得到的OpenCL_CPU_SIFT版本即可運(yùn)行于Intel 3210m CPU中,可見OpenCL具有較好的可移植性。
5實(shí)驗(yàn)結(jié)果及分析
5.1實(shí)驗(yàn)平臺
本實(shí)驗(yàn)的實(shí)驗(yàn)平臺CPU為Intel Core i5 3210m,雙核心四線程,2.5GHz;GPU采用NVIDA GeForce GT 635m,核心頻率660MHz,96個流處理器單元,128位總線寬度;開發(fā)環(huán)境為Vs2013,OpenCV版本2.4.9,OpenCL版本1.1。
5.2實(shí)驗(yàn)方法
本文實(shí)驗(yàn)的代碼是在Rob Hess維護(hù)的SIFT算法(http://robwhess.github.io/opensift/,本文稱之為CPU_SIFT)的基礎(chǔ)上修改而來。實(shí)驗(yàn)分別測試并行化的OpenCL_CPU_SIFT和OpenCL_GPU_SIFT這兩個版本用時,并與未優(yōu)化的CPU_SIFT版本用時作比較分別計(jì)算兩個版本的加速比。實(shí)驗(yàn)選取a,b兩組圖片。a組有a1~a5共5幅圖片,b組有b1~b4 4對共8幅圖片。為使實(shí)驗(yàn)結(jié)果更具有參考性,其中a1選取Rob Hess采用的behavior圖,分辨率為320×300;a2選取國際通用的Lena圖,分辨率為512×512;a3此處是否描述有誤?即a2~a5,共4幅圖像,而后面的描述中卻有3幅,所以請作相應(yīng)調(diào)整?!玜5為利用CCD攝像頭獲取的3幅紋理從簡單到復(fù)雜的測試圖片,分辨率分別為960×720、1280×960、2560×1440。另外為了測試優(yōu)化后的算法對不同圖片的適應(yīng)性,b組圖片選取4對有角度、光照和尺度變化的圖片,分辨率統(tǒng)一為1280×960。
5.3實(shí)驗(yàn)結(jié)果
在與原CPU_SIFT算法匹配效果一致的情況下,各圖片的耗時如表2所示,利用OpenCL優(yōu)化后的CPU版本和GPU版本的加速比最大分別為4倍和19倍左右,如圖8所示。這表明OpenCL不僅具有優(yōu)秀的并行計(jì)算能力,而且具有較好的跨平臺特性,這也是OpenCL相對于CUDA的一大優(yōu)勢。
通過對比表1和表2可知,本文在PC平臺實(shí)現(xiàn)的SIFT算法的加速比比文獻(xiàn)[9]中實(shí)現(xiàn)的加速比更高,特別是當(dāng)圖像分辨率較大時,本文實(shí)現(xiàn)的加速比會進(jìn)一步增大。這主要是因?yàn)閮牲c(diǎn):1)數(shù)據(jù)量越大,越能充分發(fā)揮GPU并行運(yùn)算的能力,越能隱藏?cái)?shù)據(jù)傳輸延時;2)由于移動處理器架構(gòu)的限制,文獻(xiàn)[9]只針對SIFT特征點(diǎn)檢測部分進(jìn)行了優(yōu)化,而本文則是對整個SIFT算法流程進(jìn)行統(tǒng)一優(yōu)化,充分利用了GPU的全局內(nèi)存,數(shù)據(jù)讀取效率更高。另外,通過對比進(jìn)一步證明了OpenCL對移動平臺和PC平臺都具有廣泛的適用性,再次說明OpenCL具有較好的可移植性和跨平臺性。
圖9為本文算法對a組圖像的特征提取結(jié)果。由圖9可知,優(yōu)化的算法對圖像處理領(lǐng)域常用的Lena圖和behavior圖都能有效地提取特征點(diǎn),a3~a5三張圖片的紋理由簡單到復(fù)雜,優(yōu)化后的算法均能有效提取特征點(diǎn)。在b組圖片中,b1的兩幅圖片有角度變化,b2有光照變化,b3既有角度又有光照變化,b4的角度、光照和尺度均有變化,匹配結(jié)果如圖10所示。綜合圖9和圖10的實(shí)驗(yàn)結(jié)果可知,優(yōu)化后的算法對不同分辨率、不同紋理復(fù)雜度的圖像都能提取穩(wěn)定的特征點(diǎn),對具有角度、光照和尺度變化的圖像都能正確匹配,這表明并行化后的算法對各種圖片都有較好的適應(yīng)性。
為進(jìn)一步分析不同平臺不同數(shù)據(jù)規(guī)模對OpenCL加速性能的影響,針對a3、a4和a5三幅不同分辨率的圖像,本文分別統(tǒng)計(jì)了優(yōu)化后的GPU和CPU版本各步驟的加速比,結(jié)果如圖11和圖12。圖11和圖12中步驟1為高斯模糊+高斯差分金字塔生成,步驟2為極值點(diǎn)定位,步驟3為計(jì)算方向直方圖,步驟4為特征矢量生成。對比圖11和圖12可知,無論是GPU還是CPU平臺,優(yōu)化后,高斯模糊+高斯差分金字塔生成步驟加速比都最大,GPU版本甚至達(dá)到了50倍,這是因?yàn)樵摬襟E中各工作項(xiàng)數(shù)據(jù)獨(dú)立無分支,并行度高。而極值點(diǎn)定位步驟有大量的選擇判斷語句,并行度較差,閆鈞華等[19]將此步驟放在CPU端執(zhí)行,本文將此步驟一并優(yōu)化,速度有一定提升但不夠理想,這是因?yàn)樵诓⑿芯幊讨袩o論CPU還是GPU都受分支語句的影響,GPU尤其如此。另外,與圖11不同,圖12中的三條曲線無交叉,隨著圖片分辨率的增大各步驟的加速比都逐步增大,說明數(shù)據(jù)規(guī)模越大越能發(fā)揮并行運(yùn)算的優(yōu)勢。另外OpenCL_CPU_SIFT版本的特征向量生成步驟比計(jì)算方向直方圖步驟的加速效果更好,這是因?yàn)榍罢咄ㄟ^工作組共享局部內(nèi)存能充分利用CPU的L1 cache,從而提升運(yùn)算性能。
6結(jié)語
本文對SIFT算法進(jìn)行合并、拆分和數(shù)據(jù)重構(gòu)等并行化設(shè)計(jì),改善提高了算法的并行度,并通過合理設(shè)置工作組和工作項(xiàng)大小,充分利用內(nèi)存層次等方法對算法進(jìn)一步優(yōu)化。利用OpenCL并行編程語言的跨平臺特性,本文分別在NVIDIA GPU和Intel CPU平臺上對該算法進(jìn)行并行優(yōu)化,分別取得了10.51~19.33和2.34~4.74倍的加速,并利用OpenCL的可移植性解決了CUDA對硬件平臺的依賴問題。本文的研究內(nèi)容及結(jié)果可應(yīng)用于提升遙感圖像拼接、醫(yī)學(xué)影像配準(zhǔn)和流水線工件定位等領(lǐng)域的圖像匹配速度。
目前本文的優(yōu)化方法在同一時刻只將OpenCL內(nèi)核入列到CPU或者GPU中,即同一時刻只能充分利用CPU或GPU的計(jì)算能力,接下來本文將進(jìn)一步研究異構(gòu)系統(tǒng)中不同平臺間的并行性,將可并行運(yùn)行的內(nèi)核同時入列到CPU和GPU中運(yùn)行,進(jìn)而擴(kuò)展到多核多CPU和多GPU的復(fù)雜異構(gòu)系統(tǒng)中,進(jìn)一步提高算法的運(yùn)行速度。
第二篇:淺談辦公空間設(shè)計(jì)的要旨與特征論文
辦公空間對于人們來說已經(jīng)越來越重要,從某種意義上來說,人們的事業(yè)工作時間有的時候往往比家庭生活的時間還要多,辦公空間設(shè)計(jì)的要旨與特征對于辦公空間設(shè)計(jì)的過程來說起到了一個十分基礎(chǔ)性的作用,我們說,工作和生活兩不耽誤,工作中我們可能更需要一個良好的辦公環(huán)境,這樣能夠在身體上一定程度給我們帶來疲勞緩解,在生活上給我們帶來充分的休息,在工作中能夠促進(jìn)我們的工作積極性和提高我們的工作效率,這些辦公空間設(shè)計(jì)的要旨和特征需要我們在設(shè)計(jì)理論中進(jìn)行不斷地總結(jié),在現(xiàn)代化發(fā)展到今天,我們越來越尊重科學(xué)性的規(guī)劃設(shè)計(jì),越來越需要科學(xué)的觀念來加入到設(shè)計(jì)的元素當(dāng)中,這就需要我們對辦公空間的設(shè)計(jì)進(jìn)行更為科學(xué)的設(shè)計(jì),那些支撐我們科學(xué)設(shè)計(jì)的理論和特點(diǎn)是指導(dǎo)我們更加出色的擺布空間的重要內(nèi)容,從某種意義上講,這個空間設(shè)計(jì)的過程就是我們的學(xué)習(xí)和實(shí)踐過程,這些特征在設(shè)計(jì)理念出臺的過程中已經(jīng)不斷的證明其存在的意義和發(fā)展的趨勢和方向,在本文的研究中,我們試圖不斷的探討已經(jīng)存在的各種辦公空間設(shè)計(jì)概念和意義,在這樣的過程中我們也希望能夠不斷地提高我們對辦公室空間設(shè)計(jì)的意義和指導(dǎo)性,并為辦公空間設(shè)計(jì)走向更為專業(yè)化的發(fā)展軌道而不斷的努力提高。
辦公空間設(shè)計(jì)的基本理念和設(shè)計(jì)過程
作為辦公空間,正如前面我們所提到的那樣,辦公空間與生活空間是密不可分的,我們需要在辦公的同時也一樣能夠享受生活,辦公空間也要提供一定的空間內(nèi)涵,辦公空間就是要建立在以人為本和突出辦公特色以及突出所代表企業(yè)、機(jī)構(gòu)的形象等內(nèi)容,辦公空間設(shè)計(jì)不能是獨(dú)立的,不能是無所顧忌的,更不能是隨心所欲的,辦公空間的設(shè)計(jì)要為整個機(jī)構(gòu)服務(wù),要突出整個機(jī)構(gòu)的內(nèi)容,要注重企業(yè)的形象內(nèi)涵,要為機(jī)構(gòu)企業(yè)進(jìn)行更為長遠(yuǎn)的考慮,某種情況下甚至要具體到部門的職能上來,同時更要強(qiáng)調(diào)舒適性和高效率,能夠?yàn)闄C(jī)構(gòu)工作帶來一定的樂觀態(tài)度和積極性。我們在朱迪格拉芙的經(jīng)典著作中《辦公空間經(jīng)典集》設(shè)計(jì)當(dāng)中曾經(jīng)有過很多的想象空間。例如,對于辦公空間設(shè)計(jì)的種種方式和方法,技巧性的和細(xì)節(jié)性的指引等等。還有我國從工程學(xué)的角度出發(fā)對辦公空間進(jìn)行了全面的論述,列舉了一大批的辦公空間設(shè)計(jì)工程《。辦公空間設(shè)計(jì)與工程》這本著作就是我們一直在遵循的經(jīng)典,還有瑪麗蓮澤林斯基的《新型辦公空間設(shè)計(jì)》等等,都是我們遵循的基本空間設(shè)計(jì)理念和設(shè)計(jì)過程等內(nèi)容。
從辦公空間的設(shè)計(jì)過程來看,首先這就是一個明確問題和解決問題的過程,要根據(jù)辦公空間的實(shí)際需要來確定辦公空間的設(shè)計(jì),辦公空間的使用者將來確定是什么群體,什么性質(zhì)的辦公行為,人員和數(shù)量具體是多少,工作人員的年齡構(gòu)成和組織文化是什么,職能如何體現(xiàn),工作如何開展,整個工作流程如何運(yùn)作,工作采用什么樣的方式進(jìn)行,這些都是我們需要考慮到的細(xì)節(jié)問題。同時,我們還需要更多地考慮到辦公方式、空間使用和環(huán)境形象方面的問題,對于辦公空間的具體要求和具體內(nèi)涵,我們需要進(jìn)一步全面的考察到位。需要我們進(jìn)一步明確的還有辦公空間坐落的位置如何,企業(yè)的CI設(shè)計(jì)是什么,在室內(nèi)想如何體現(xiàn)機(jī)構(gòu)或者企業(yè)的形象等問題。最后,我們還要有成本概念,考慮項(xiàng)目資金的投入問題。對于以上問題,我們都需要進(jìn)行全方位的思考和研究,同時進(jìn)行有效的、系統(tǒng)的研發(fā)設(shè)計(jì)。對于辦公空間的初步規(guī)劃方面,在設(shè)計(jì)過程中一定要有所體現(xiàn)。從目前國內(nèi)的設(shè)計(jì)情況來看,近年來形成了一些較為常見的房間設(shè)置理念,根據(jù)機(jī)構(gòu)大小和職能來劃分空間設(shè)計(jì),有多少部門或者有多科室就有多少個房間,盡管這種方式方法比較簡潔,對于工作的私密性有一定的保障,但是在空間設(shè)計(jì)的理念出發(fā),這種設(shè)計(jì)方式就嚴(yán)重的缺乏靈活性,會導(dǎo)致整個空間設(shè)計(jì)出現(xiàn)死板、封閉的情況,對于員工的溝通和交流也是非常不方便的,我們強(qiáng)調(diào)團(tuán)隊(duì)合作就是要有開放性,過于封閉的空間布置很容易打斷這種開放式的結(jié)構(gòu)。所以,我們一般在設(shè)計(jì)過程就是要不斷的采用共享辦公空間與個人辦公空間相結(jié)合的規(guī)劃內(nèi)容。辦公空間設(shè)計(jì)的要旨
首先就是要確定辦公空間設(shè)計(jì)的目標(biāo),通過辦公空間的設(shè)計(jì)為辦公目標(biāo)提供一個良好的舒適、方便、安全、高效以及更加愉悅的環(huán)境,辦公空間的設(shè)計(jì)目標(biāo)步驟充分說明了我們的在空間設(shè)計(jì)的第一個要旨,就是尊重科學(xué)、尊重規(guī)律。例如,在保障舒適性的前提下,構(gòu)建一個更加科學(xué)合理的辦公空間,這其中涉及聲學(xué)、光學(xué)、熱工學(xué)、環(huán)境心理學(xué)和人體工程學(xué)等等學(xué)科的內(nèi)容,為了讓辦公空間更加方便,我們必須涉及空間流線學(xué)、人體工程學(xué)等內(nèi)容,在安全方面,更是涉及保密、消防、構(gòu)造等方面的問題,我們的辦公空間設(shè)計(jì)要能夠估計(jì)到所有的感官接受度,符合所有人的基本審美和功能需求。這就是我們確定辦公空間的首要目標(biāo)。其次,我們要考慮空間設(shè)計(jì)上的功能劃分,在功能劃分上,我們需要采取的主要設(shè)計(jì)內(nèi)涵是功能區(qū)域上的分割與寫作。例如,我們設(shè)計(jì)的門廳,它的開門方向和過渡方向如何,它的延展區(qū)域是如何,它的主要內(nèi)容如何,它連接中心地帶嗎?在通道設(shè)計(jì)上,我們更要考慮的是人流交通的問題,連接各個辦公室的區(qū)域紐帶。辦公室的主要場所必須是獨(dú)立的和開放的,同時還要考慮到公共場所和開放式,這樣更能適用于集體決策、談判和員工會議場所等問題。同時還需要更加積極的明確對外交往和接待等問題,同時,辦公空間設(shè)計(jì)還要考慮到公共空間的問題。例如,健身、游戲、茶水、休閑等生活化空間,同時將輔助性空間,如廁所、雜物室、設(shè)備、庫房、保密等要素考慮進(jìn)去,考慮到位。辦公空間設(shè)計(jì)的特征
主要在于空間的組織形式,室內(nèi)空間的流線型設(shè)計(jì)應(yīng)該不斷的順應(yīng)整體布置,保持在順而不亂的前提之下,我們說所謂的順,就是指順應(yīng)導(dǎo)向,順應(yīng)科學(xué),明確指引通道空間的問題,在區(qū)域布局上講究合理性,在設(shè)計(jì)過程中講究應(yīng)用型,在整個布局規(guī)劃中更加注重內(nèi)部的細(xì)節(jié)問題。其主要特征體現(xiàn)在五個方面:一是布局根據(jù)團(tuán)隊(duì)走。二是空間需要過渡。三是要存在正式的公共空間。四是用要發(fā)展的眼光來看待功能和規(guī)模變化。最后,我們在設(shè)計(jì)中有一個細(xì)節(jié)要注意,那就是明確空間設(shè)計(jì)中柱子位置和柱子之間的關(guān)系和尺度等原有空間建筑的形態(tài),要更加靈活的方式來開展空間分隔。