亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

基于gpu的圖像特征提取算法的加速方法

文檔序號(hào):9788098閱讀:1213來源:國知局
基于gpu的圖像特征提取算法的加速方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于并行處理器技術(shù)領(lǐng)域,具體涉及一種是圖像特征提取算法的加速方法。
【背景技術(shù)】
[0002]隨著人類進(jìn)入數(shù)字時(shí)代,每天都有大量來自不同領(lǐng)域的數(shù)據(jù)產(chǎn)生。其中,多媒體數(shù)據(jù)類型,如圖像、視頻等,已經(jīng)成為主要的數(shù)據(jù)類型之一。如何在日益增多的圖像/視頻數(shù)據(jù)中有效篩選信息已經(jīng)受到了越來越多的研究關(guān)注。相比于傳統(tǒng)的文本類應(yīng)用,以多媒體數(shù)據(jù)為中心的應(yīng)用,如檢索引擎、過濾系統(tǒng)、拷貝檢測等,有著越來越廣泛的實(shí)用需求。其中,圖像特征提取算法作為圖像/視頻信息檢索篩選的一個(gè)重要基礎(chǔ)算法,能有效地提取出圖像或視頻中關(guān)鍵幀的信息以供圖像或視頻間的比較,在這類系統(tǒng)應(yīng)用中作為主要算法被廣泛地使用。
[0003]從計(jì)算過程上講,圖像檢索算法可以分成特征提取階段和特征匹配階段。特征提取階段根據(jù)特征提取算法將圖像的特征提取出來,包括圖像的顏色特征,紋理特征,或是圖像中的特征點(diǎn)(如特別亮的點(diǎn))等。特征匹配階段以比較兩幅圖像的特征來判斷兩幅圖像是否匹配。從精確性上講,基于局部特征的算法使用成百上千個(gè)特征代表一個(gè)圖像(如圖像中的特征點(diǎn)),因而精確性高,已被越來越多的應(yīng)用系統(tǒng)所使用?,F(xiàn)今主流的局部特征算法有SIFT、SURF算法等。但是,由于這種算法不但需要處理的數(shù)據(jù)量十分巨大,而且算法本身也很復(fù)雜,因而在處理速度上受到了很大的限制,在一些應(yīng)用中則不能滿足用戶的實(shí)時(shí)需求。因此,如何有效提升局部特征提取算法的處理速度成為當(dāng)前體系結(jié)構(gòu)和檢索領(lǐng)域的一個(gè)研究熱點(diǎn)。
[0004]最近幾年,隨著半導(dǎo)體技術(shù)的發(fā)展和多核技術(shù)的普及,各種并行計(jì)算系統(tǒng)逐漸成為應(yīng)用設(shè)計(jì)的主流。隨著圖像處理單元GPlXgeneral purpose processors)通用性和可編程性的增強(qiáng),它也成為其中一個(gè)不可或缺的組成部分?,F(xiàn)代GPU不僅僅是一個(gè)單純的圖像處理引擎,更是一個(gè)高度并行的可編程處理器。相比于(PU來說,在相同晶體管數(shù)量的情況下,GPU用更多的晶體管來進(jìn)行計(jì)算。高度數(shù)據(jù)并行的本質(zhì)使GPU有著更為強(qiáng)大的算術(shù)處理能力,同時(shí),它也有著更高的存儲(chǔ)器帶寬和更加便宜的價(jià)格,這為它在高性能計(jì)算領(lǐng)域帶來了極大的競爭力。
[0005]圖像檢索中的局部特征提取算法存在多種并行方式,這為它在GPU上的并行實(shí)現(xiàn)提供了可能。同時(shí),GPU的強(qiáng)大計(jì)算能力,為提高局部特征提取算法的性能提供了強(qiáng)有力的基礎(chǔ)。因此,本發(fā)明致力于利用GPU來對(duì)基于局部特征提取算法的圖像檢索算法進(jìn)行優(yōu)化加速。

【發(fā)明內(nèi)容】

[0006]本發(fā)明的目的在于對(duì)目前主流的圖像特征提取算法提供一種優(yōu)化加速的方法。
[0007]本發(fā)明提供的對(duì)圖像特征提取算法進(jìn)行優(yōu)化加速的方法,主要利用了GPU技術(shù)。即本發(fā)明對(duì)圖像特征提取算法在GPU上予于細(xì)粒度地并行實(shí)現(xiàn),并根據(jù)GPU的特性進(jìn)行優(yōu)化;同時(shí),采用異步流水線的協(xié)同工作機(jī)制使(PU與GPU協(xié)同工作,從而進(jìn)一步提高處理效率。
[0008]本發(fā)明首先在GPU上細(xì)粒度地實(shí)現(xiàn)圖像特征提取的并行算法,所謂細(xì)粒度是指在局部特征提取算法的每一個(gè)階段分別以最小的粒度,如按每個(gè)特征點(diǎn),來開發(fā)數(shù)據(jù)并行。細(xì)粒度的并行能更充分地發(fā)揮GPU的并行計(jì)算能力。本發(fā)明使用CUDA (Compute UnifiedDevice Architecture)編程模型,將這種細(xì)粒度的數(shù)據(jù)并行映射到GPU上計(jì)算。所選取的局部特征檢索算法為目前主流的檢索算法SURF(Speeded_Up Robust Features)。在描述具體的并行實(shí)現(xiàn)之前,我們先介紹一下局部特征檢索算法的主要算法過程,然后再說明每一個(gè)階段是怎樣在GHJ上得以實(shí)現(xiàn)的。
[0009]局部特征檢索算法檢測出圖像特征并對(duì)這些特征加以描述,它主要分三階段:圖像初始化、特征檢測和特征描述,如圖1所示。
[0010]圖像初始化,其過程中分為載入圖像、計(jì)算灰度圖像、計(jì)算積分圖像三步。特征檢測部分,則利用積分圖像檢測出圖像的特征點(diǎn)(比如說暗點(diǎn)中特別亮的點(diǎn))。接著特征描述部分使用特定的數(shù)據(jù)結(jié)構(gòu)對(duì)找到的特征點(diǎn)加以描述,以方便以后對(duì)圖像的處理。在局部特征檢索算法中,主要的計(jì)算時(shí)間集中在特征檢測與特征描述兩個(gè)部分,所以本發(fā)明將這兩個(gè)部分放在GPU上計(jì)算。
[0011]所述的特征檢測,首先要計(jì)算每個(gè)點(diǎn)的特征值。SURF算法中,采用采樣的概念避免計(jì)算每一個(gè)像素點(diǎn)的特征值。此階段映射到GPU上時(shí),由于每個(gè)點(diǎn)的特征值計(jì)算相對(duì)獨(dú)立,因此,每個(gè)采樣像素點(diǎn)為一個(gè)GPU線程(GPU上各階段線程個(gè)數(shù)如圖1圓括號(hào)中所示)。由于該階段中有較多判斷語句,會(huì)影響GPU的性能,所以,本發(fā)明使用0個(gè)內(nèi)核循環(huán)計(jì)算來避免GPU上的分支計(jì)算,oSSURF算法中圖像層數(shù)。當(dāng)每個(gè)點(diǎn)的特征值計(jì)算完畢之后,即進(jìn)入特征點(diǎn)定位階段。該階段在每8個(gè)相鄰點(diǎn)中(包括2個(gè)圖像層)選取特征值最大的點(diǎn)作為可選的特征點(diǎn)。因此,每8個(gè)點(diǎn)為一個(gè)GPU線程進(jìn)行計(jì)算。
[0012]所述的特征描述,可分為計(jì)算哈爾小波值、計(jì)算特征方向、創(chuàng)建特征窗口三步。首先SURF算法中定義對(duì)以特征點(diǎn)為圓心,6*scale為半徑的圓內(nèi)所有的點(diǎn)計(jì)算Harr小波變換,因此每個(gè)特征點(diǎn)周圍有109個(gè)點(diǎn),我們映射到GPU上時(shí)每個(gè)線程對(duì)應(yīng)計(jì)算一個(gè)點(diǎn)的Haar小波變換。接著,SURF算法在計(jì)算特征方向時(shí)以0.15弧度為方向區(qū)域大小,得到2*V0.15 ? 42個(gè)特征方向區(qū)域,109個(gè)周圍點(diǎn)對(duì)該42個(gè)特征區(qū)域進(jìn)行投票,票數(shù)最多的那個(gè)方向即為該特征點(diǎn)的方向。在該階段中每個(gè)特征區(qū)域?yàn)橐粋€(gè)GPU線程。最后,每個(gè)特征點(diǎn)將生成一個(gè)64維特征向量,該向量的計(jì)算是由特征點(diǎn)周圍4*4的區(qū)域中計(jì)算出來的,因此,每個(gè)特征點(diǎn)又分為
16個(gè)GPU線程來計(jì)算。
[0013]在細(xì)粒度并行的基礎(chǔ)上,本發(fā)明還利用GPU的特性,進(jìn)一步進(jìn)行優(yōu)化加速。具體是利用GPU內(nèi)存即GPU紋理存儲(chǔ)器在處理2維數(shù)據(jù)時(shí)的特點(diǎn)來提高算法性能,并盡可能地減少算法對(duì)內(nèi)存的反復(fù)分配與釋放。
[0014]GPU紋理存儲(chǔ)器在硬件上提供對(duì)于二維,三維局部性的支持。即對(duì)于紋理內(nèi)存上的二維數(shù)組,當(dāng)訪問一個(gè)像素點(diǎn)時(shí),其上下左右的像素點(diǎn)都會(huì)同時(shí)被放入紋理內(nèi)存的緩存上。SURF算法中存在大量快速近似積分的計(jì)算,這些計(jì)算需要訪問積分?jǐn)?shù)組,并且該訪問有明顯的二維局部性。利用GPU的紋理存儲(chǔ)器對(duì)二維數(shù)據(jù)的內(nèi)存訪問有很好的性能提升。將具體的二維數(shù)組綁定到GHJ紋理存儲(chǔ)器上,可以用CUDA中cudaBindTexture2D方法。
[0015]同時(shí),算法中在存儲(chǔ)原圖像、積分圖像、特征值、以及其他變量時(shí),都是在每張圖像處理開始和結(jié)尾進(jìn)行內(nèi)存分配和釋放。在批量處理圖片時(shí),這樣的分配和釋放GPU內(nèi)存是冗余并且影響性能的。本發(fā)明在程序初始階段就分配好固定的內(nèi)存,從而減少多余的內(nèi)存分配與釋放。
[0016]本發(fā)明還使CPU和GPU以異步流水線的方式協(xié)同工作。在傳統(tǒng)情況下CPU和GPU協(xié)同計(jì)算的流程是:(I)CPU計(jì)算需要提供的數(shù)據(jù);(2)CPU將數(shù)據(jù)從CPU內(nèi)存?zhèn)鞯紾PU內(nèi)存;(3)GPU進(jìn)行計(jì)算。在這樣的流程中,GPU在進(jìn)行計(jì)算時(shí),CPU資源是被閑置的,同樣地,GPU也總是要等待CPU計(jì)算并傳輸完數(shù)據(jù)后才能進(jìn)行處理。相當(dāng)于CPU計(jì)算,數(shù)據(jù)傳輸和GPU計(jì)算以串行的方式在進(jìn)行。為了使三部分執(zhí)行時(shí)間能夠重疊從而進(jìn)一步提高性能,本發(fā)明利用異步流水線的方式來實(shí)現(xiàn)。
[0017]所謂流水線的方式是指將整個(gè)算法分成兩個(gè)部分,CPU處理第一部分的計(jì)算,GPU處理第二部分的計(jì)算,數(shù)據(jù)以流的方式在CPU與GPU間傳輸,達(dá)到兩個(gè)硬件并行工作的目的。也就是說,CPU在做后一張圖片的計(jì)算時(shí),GPU能夠同時(shí)處理前一張圖片的計(jì)算,以此達(dá)到并行計(jì)算的效果。本技術(shù)的具體實(shí)現(xiàn)中,CHJ專門做初始化數(shù)據(jù)的計(jì)算,并把數(shù)據(jù)傳入GPU內(nèi)存,而GPU則從內(nèi)存中讀出積分圖像等數(shù)據(jù),并進(jìn)行特征檢測與特征描述計(jì)算。由于CPU初始化圖像的速度與GPU特征檢索與描述的速度大致相當(dāng),因此CPU與GPU能有效地保持并行計(jì)算。同時(shí),由于GPU支持DMA異步傳輸?shù)奶攸c(diǎn),和流
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1