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

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

文檔序號(hào):9788098閱讀:來源:國(guó)知局
代碼。index表示當(dāng)前是第幾個(gè)CPU加載線程或是第幾個(gè)GPU控制線程,每一個(gè)CPU加載線程對(duì)應(yīng)一個(gè)GPU控制線程(每個(gè)GPU控制線程控制一個(gè)GPU的計(jì)算)。id是線程的識(shí)別號(hào),GPUNUM為GPU線程的個(gè)數(shù),我們的實(shí)現(xiàn)中,前GPUNUM個(gè)線程為CPU加載線程,后GPUNUM個(gè)線程為GPU控制線程。對(duì)每個(gè)線程來說,它遍歷訪問圖片,多個(gè)加載線程或多個(gè)GPU控制線程將以round robin的方式來訪問。以兩個(gè)加載線程為例,第一個(gè)線程訪問單數(shù)號(hào)的圖片,第二個(gè)線程訪問雙數(shù)號(hào)的線程。加載線程中,int_img為加載完畢后的圖片數(shù)據(jù)結(jié)構(gòu),其中包括圖片的寬度、高度、和圖片中每個(gè)像素點(diǎn)的值。像素值是一個(gè)很大的數(shù)組,若每個(gè)圖片都要重新分配內(nèi)存則影響性能,我們?cè)趦?nèi)存優(yōu)化的過程中創(chuàng)建了一個(gè)緩存,里面事先分配好頂GBUFSIZE個(gè)圖片大小的數(shù)組,緩存中的數(shù)組是可以循環(huán)利用的,每次新建一個(gè)圖片數(shù)據(jù)結(jié)構(gòu)時(shí),就將緩存中某一個(gè)數(shù)組分配給該int_img,并將數(shù)組清零即可,從而減少內(nèi)存分配的時(shí)間。當(dāng)數(shù)據(jù)加載完畢后,把int_img放到imgs_g這個(gè)數(shù)組中,并將對(duì)應(yīng)的f lag_g置為I,imgs_g數(shù)組和f lag_g數(shù)組大小都為頂GSIZE,且能夠被GPU控制線程所訪問XPU控制線程按順序訪問圖片,當(dāng)?shù)趇張圖片的flag不為I時(shí)就一直等待,等到該flag變成I,即圖片已經(jīng)加載完畢后,調(diào)用⑶DA方法DetDesO,需要計(jì)算的圖片數(shù)據(jù)已在imgs_g[i]中。每加載一張圖片loadnumber[index]++,每完成一張圖片的GPU運(yùn)算,processed[index]++,當(dāng)loadnumber[index]- processed[index]大于緩存大小時(shí),表明加載線程速度較快,加載線程需等待GHJ的計(jì)算。
[0036]由于GPU支持DMA異步傳輸?shù)奶攸c(diǎn),和流水線相結(jié)合,可以進(jìn)一步將數(shù)據(jù)傳輸部分的時(shí)間也重疊起來,即形成CPU計(jì)算、數(shù)據(jù)傳輸、以及GPU計(jì)算三個(gè)階段的流水線。形象地說,也就是當(dāng)CPU在進(jìn)行第i張圖片的初始化計(jì)算時(shí),同時(shí)將第1-Ι張圖片的初始化數(shù)據(jù)傳到GPU內(nèi)存中去,而GPU此時(shí)正在處理第1-2張圖片的特征檢測(cè)和描述?!揪唧w實(shí)施方式】如上述代碼所示,GPU控制線程中,若要調(diào)用CUDA方法計(jì)算第i張圖片,就需第i及第i+Ι張圖片都加載完畢。在06七068()方法中會(huì)用(311(^161]?^72048711(3()方法來異步傳輸?shù)谪? 1張圖片的數(shù)據(jù),從而使數(shù)據(jù)傳輸?shù)臅r(shí)間和GPU計(jì)算時(shí)間重疊起來。
[0037]另外,本發(fā)明還充分利用了CPU的剩余資源,讓多余的核也獨(dú)立完成部分算法,以提高性能。假設(shè)是4核的CPU,一個(gè)核用于控制GPU及數(shù)據(jù)傳輸,另一個(gè)核做CPU計(jì)算,那么另外的兩個(gè)核就可以獨(dú)立地完成部分圖片的特征提取計(jì)算,如圖2所示。
[0038](4)性能測(cè)試
本發(fā)明還包括詳細(xì)的測(cè)試結(jié)果,測(cè)試的主機(jī)是Intel Q8300的4核CPU,內(nèi)存大小為2GB。測(cè)試使用的GPU是GeForce GTX260,它有27個(gè)SM,總共216個(gè)核,時(shí)鐘率為1.24GHz,顯存大小為1GB。主機(jī)操作系統(tǒng)為Ubuntu 8.10(linux內(nèi)核版本為2.6.27-7-generic)。
[0039]如圖3所示,局部圖像特征提取算法在CPU串行執(zhí)行時(shí),每計(jì)算一張圖片需393毫秒,也就是I秒鐘處理2.56張,該速度遠(yuǎn)遠(yuǎn)小于實(shí)時(shí)處理速度。在CPU上并行地進(jìn)行SURF算法(按最快的分塊并行算),速度提升為14.86幀/秒。而細(xì)粒度的GPU實(shí)現(xiàn),將算法提高到74.45幀/秒,是CHJ上并行版本的5X。經(jīng)過GPU內(nèi)存優(yōu)化以及和CPU的協(xié)同工作,速度上升到84.56幀/秒和172.33幀/秒。該速度已達(dá)到實(shí)時(shí)的處理速度。
[0040]本發(fā)明還用了硬件配置為Intel 17的CI3U和GPUGTX295(480個(gè)核)做了進(jìn)一步測(cè)試,測(cè)試結(jié)果表明,在該配置下,局部特征提取算法的速度高達(dá)340.47幀/秒。
【主權(quán)項(xiàng)】
1.一種基于GPU的圖像特征提取算法的加速方法,其特征在于: 首先在GPU上細(xì)粒度地實(shí)現(xiàn)圖像特征提取的并行算法,所謂細(xì)粒度是指在局部特征提取算法的每一個(gè)階段分別以最小的粒度,即按每個(gè)特征點(diǎn),來開發(fā)數(shù)據(jù)并行;使用CUDA編程模型,將這種細(xì)粒度的數(shù)據(jù)并行映射到GPU上計(jì)算;所述的局部特征檢索算法采用檢索算法SURF; 所述的局部特征檢索算法檢測(cè)出圖像特征并對(duì)這些特征加以描述,它分為三階段:圖像初始化、特征檢測(cè)和特征描述;特征檢測(cè)與特征描述兩個(gè)部分放在GPU上計(jì)算; 所述圖像初始化,分為載入圖像、計(jì)算灰度圖像、計(jì)算積分圖像三步; 所述特征檢測(cè),是利用積分圖像檢測(cè)出圖像的特征點(diǎn);其中,首先計(jì)算每個(gè)點(diǎn)的特征值;此階段映射到GPU上時(shí),每個(gè)點(diǎn)的特征值計(jì)算相對(duì)獨(dú)立,每個(gè)采樣像素點(diǎn)為一個(gè)GPU線程;具體使用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)中選取特征值最大的點(diǎn)作為可選的特征點(diǎn);每8個(gè)點(diǎn)為一個(gè)GPU線程進(jìn)行計(jì)算; 所述特征描述,使用特定的數(shù)據(jù)結(jié)構(gòu)對(duì)找到的特征點(diǎn)加以描述,以方便以后對(duì)圖像的處理;其中,首先對(duì)每個(gè)特征點(diǎn)周圍的109個(gè)像素點(diǎn)做哈爾小波變換,該階段每個(gè)周圍的像素點(diǎn)為一個(gè)GHJ線程;接著,該109個(gè)周圍點(diǎn)對(duì)特征點(diǎn)的42個(gè)特征方向區(qū)域進(jìn)行投票,票數(shù)最多的那個(gè)方向?yàn)樵撎卣鼽c(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ì)算。2.根據(jù)權(quán)利要求1所述的基于GPU的圖像特征提取算法的加速方法,其特征在于:利用GPU內(nèi)存即GPU紋理存儲(chǔ)器在處理2維數(shù)據(jù)時(shí)的特點(diǎn)來提高算法性能,并盡可能地減少算法對(duì)內(nèi)存的反復(fù)分配與釋放;具體是對(duì)于S U R F算法中涉及的二維數(shù)組,用C U D A中cudaBindTexture2D方法綁定到GPU紋理存儲(chǔ)器上; 同時(shí),SURF算法中在存儲(chǔ)原圖像、積分圖像、特征值、以及其他變量時(shí),都在每張圖像處理開始和結(jié)尾進(jìn)行內(nèi)存分配和釋放;在批量處理圖片時(shí),在程序初始階段就分配好固定的內(nèi)存,從而減少多余的內(nèi)存分配與釋放。3.根據(jù)權(quán)利要求2所述的基于GPU的圖像特征提取算法的加速方法,其特征在于:使CPU和GPU以異步流水線的方式協(xié)同工作; 所謂流水線的方式是指將整個(gè)算法分成兩個(gè)部分,CPU處理第一部分的計(jì)算,GPU處理第二部分的計(jì)算,數(shù)據(jù)以流的方式在CHJ與GPU間傳輸,以實(shí)現(xiàn)兩個(gè)硬件并行工作;其中,CPU專門做初始化數(shù)據(jù)的計(jì)算,并把數(shù)據(jù)傳入GPU內(nèi)存,而GPU則從內(nèi)存中讀出積分圖像等數(shù)據(jù),并進(jìn)行特征檢測(cè)與特征描述計(jì)算; 同時(shí),由于GPU支持DMA異步傳輸?shù)奶攸c(diǎn),和流水線相結(jié)合,進(jìn)一步將數(shù)據(jù)傳輸部分的時(shí)間也重疊起來,即形成CPU計(jì)算、數(shù)據(jù)傳輸、以及GPU計(jì)算三個(gè)階段的流水線。4.根據(jù)權(quán)利要求3所述的基于GPU的圖像特征提取算法的加速方法,其特征在于:還利用CPU的剩余資源,讓CPU多余的核也獨(dú)立完成部分算法的處理。
【專利摘要】本發(fā)明屬于并行處理器技術(shù)領(lǐng)域,具體涉及一種基于GPU的圖像特征提取算法的加速方法。本發(fā)明主要對(duì)目前主流的圖像特征提取算法在GPU上進(jìn)行了細(xì)粒度的并行實(shí)現(xiàn),同時(shí)根據(jù)GPU的特性進(jìn)行了優(yōu)化加速,并且采用了異步流水線的協(xié)同工作機(jī)制來使CPU與GPU可以協(xié)同計(jì)算。測(cè)試結(jié)果表明,當(dāng)硬件配置為Intel?Q8300的CPU和GTX260的GPU時(shí),算法速度為172.33幀/秒,是串行算法的67倍。而當(dāng)硬件配置為Intel?I7的CPU和GTX295的GPU時(shí),速度高達(dá)340.47幀/秒,可以較好地滿足實(shí)時(shí)處理的需求。
【IPC分類】G06T1/20
【公開號(hào)】CN105550974
【申請(qǐng)?zhí)枴緾N201510915260
【發(fā)明人】張為華, 魯云萍
【申請(qǐng)人】復(fù)旦大學(xué)
【公開日】2016年5月4日
【申請(qǐng)日】2015年12月13日
當(dāng)前第3頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1