本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種圖像數(shù)據(jù)集的稀疏表示的加速方法以及裝置。
背景技術(shù):
圖像數(shù)據(jù)集的稀疏表示包括自學(xué)習(xí)方法,自學(xué)習(xí)方法不需任何預(yù)定的形式獲取超完備字典,自學(xué)習(xí)方法的基本假設(shè)是:復(fù)雜的非相干特性的結(jié)構(gòu)可以直接從數(shù)據(jù)提取,而不是使用一個數(shù)學(xué)表達描述。例如,給定一組圖像向量,K-SVD(全稱:K-Singular Value Decomposition;中文:K-奇異值分解)方法能在嚴(yán)格的稀疏約束下尋找導(dǎo)致在該組中每個成員表示最好的字典。非參數(shù)貝葉斯字典學(xué)習(xí)使用一個截斷的β-伯努利過程來學(xué)習(xí)相匹配的圖像塊的字典。
在當(dāng)前大數(shù)據(jù)的時代,圖像數(shù)據(jù)集的大小已經(jīng)呈爆炸式的增長,而自學(xué)習(xí)的方法不能有效的處理非常大的數(shù)據(jù)集,因為每次學(xué)習(xí)迭代都需要訪問整個數(shù)據(jù)集,處理速度較慢。
因此,現(xiàn)有技術(shù)中存在對圖像數(shù)據(jù)集的稀疏表示的處理速度較慢的技術(shù)問題。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例通過提供一種圖像數(shù)據(jù)集的稀疏表示的加速方法以及裝置,用以解決現(xiàn)有技術(shù)中存在的對圖像數(shù)據(jù)集的稀疏表示的處理速度較慢的技術(shù)問題。
本發(fā)明實施例提供了一種圖像數(shù)據(jù)集的稀疏表示的加速方法,所述方法包括:
獲得圖像數(shù)據(jù)集S,S={Yi|1≤i≤s^Yi∈Rn×N};
將S中每個圖像轉(zhuǎn)換為圖像塊;
將S中的圖像塊分為m個塊組,其中m為最大數(shù)量的CPU線程數(shù);
在GPU中,通過m個CPU線程并行計算IK-SVD算法對所述m個塊組的稀疏表示,所述GPU支持Hyper-Q功能與動態(tài)并行功能。
可選地,所述將S中每個圖像轉(zhuǎn)換為圖像塊,具體為:
針對S中任一圖像Y∈S,將Y分為Pi個塊,
可選地,所述通過m個CPU線程并行計算IK-SVD算法對所述m個塊組的稀疏表示,具體包括:
所述m個線程對m個塊組并行執(zhí)行:將局部數(shù)據(jù)傳送到GPU存儲器;計算稀疏系數(shù);從GPU輸出結(jié)果。
可選地,所述計算稀疏系數(shù),具體包括:
通過IK-SVD算法訓(xùn)練對塊組中的第一個圖像塊獲得超完備字典D1;
根據(jù)塊組中的剩余圖像塊對所述超完備字典D1進行更新,其中,在每一次更新時通過GPU計算遞歸Cholesky分解中的矩陣運算,直到收斂。
可選地,所述在每一次更新時通過GPU計算遞歸Cholesky分解中的矩陣運算,包括:
通過和選取所述新的原子;以及
通過GPU計算遞歸Cholesky分解中矩陣的左上角矩陣Ln-1更新;以及
通過GPU計算所述矩陣中子矩陣A和子矩陣B的順序更新。
本發(fā)明實施例第二方面還提供一種圖像數(shù)據(jù)集的稀疏表示的加速裝置,其特征在于,所述裝置包括:
獲得單元,用于獲得圖像數(shù)據(jù)集S,S={Yi|1≤i≤s^Yi∈Rn×N};
轉(zhuǎn)換單元,用于將S中每個圖像轉(zhuǎn)換為圖像塊;
分組單元,用于將S中的圖像塊分為m個塊組,其中m為最大數(shù)量的CPU線程數(shù);
計算單元,用于在GPU中,通過m個CPU線程并行計算IK-SVD算法對所述m個塊組的稀疏表示,所述GPU支持Hyper-Q功能與動態(tài)并行功能。
可選地,所述轉(zhuǎn)換單元具體用于針對S中任一圖像Y∈S,將Y分為Pi個塊,
可選地,所述計算單元具體用于所述m個線程對m個塊組并行執(zhí)行:將局部數(shù)據(jù)傳送到GPU存儲器;計算稀疏系數(shù);從GPU輸出結(jié)果。
可選地,所述計算單元具體用于通過IK-SVD算法訓(xùn)練對塊組中的第一個圖像塊獲得超完備字典D1,并根據(jù)塊組中的剩余圖像塊對所述超完備字典D1進行更新,其中,在每一次更新時通過GPU計算遞歸Cholesky分解中的矩陣運算,直到收斂。
可選地,所述計算單元具體用于通過和選取所述新的原子,以及通過GPU計算遞歸Cholesky分解中矩陣的左上角矩陣Ln-1更新,以及通過GPU計算所述矩陣中子矩陣A和子矩陣B的順序更新。
本發(fā)明實施例中提供的一個或多個技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點:
由于采用了將圖像數(shù)據(jù)集S中每個圖像轉(zhuǎn)換為圖像塊,并將S中的圖像塊分為m個塊組,最后在GPU中通過m個CPU線程并行技術(shù)IK-SVD算法對m個塊組的稀疏表示的技術(shù)方案,其中m個CPU線程在GPU中計算m個塊組的稀疏表示時各不影響,同時IK-SVD算法需要多次執(zhí)行稀疏編碼,所以在GPU中通過m個線程并行計算IK-SVD算法對m個塊組的稀疏表示時的計算速度能夠得到大大提高,解決了現(xiàn)有技術(shù)中存在的對圖像數(shù)據(jù)集的稀疏表示的處理速度較慢的技術(shù)問題。
附圖說明
圖1為本發(fā)明實施例提供的圖像數(shù)據(jù)集的稀疏表示的加速方法的流程圖;
圖2為本發(fā)明實施例提供的圖像數(shù)據(jù)集的稀疏表示的加速方法的過程示意圖;
圖3為本發(fā)明實施例提供的BRC格式矩陣的表示示意圖;
圖4為本發(fā)明實施例提供的圖像數(shù)據(jù)集的稀疏表示的加速裝置的模塊圖。
具體實施方式
本發(fā)明實施例通過提供一種圖像數(shù)據(jù)集的稀疏表示的加速方法以及裝置,用以解決現(xiàn)有技術(shù)中存在的對圖像數(shù)據(jù)集的稀疏表示的處理速度較慢的技術(shù)問題。
本發(fā)明實施例中的技術(shù)方案解決上述技術(shù)問題,總體思路如下:
本發(fā)明實施例提供一種圖像數(shù)據(jù)集的稀疏表示的加速方法,方法包括:
首先,獲得圖像數(shù)據(jù)集S,S={Yi|1≤i≤s^Yi∈Rn×N};
接著,將S中每個圖像轉(zhuǎn)換為圖像塊;
然后,將S中的圖像塊分為m個塊組,其中m為最大數(shù)量的CPU線程數(shù);
最后,在GPU中,通過m個CPU線程并行計算IK-SVD算法對m個塊組的稀疏表示,GPU支持Hyper-Q功能與動態(tài)并行功能。Hyper-Q技術(shù)允許多個CPU內(nèi)核與同一個單一GPU同時開展工作,從而大大提高了GPU的利用率,大幅降低了CPU的空閑時間,而動態(tài)并行功能使得GPU線程可以自動刷新新線程,減少了CPU控制GPU刷新線程的時間,從而簡化了并行操作。
可以看出,由于采用了將圖像數(shù)據(jù)集S中每個圖像轉(zhuǎn)換為圖像塊,并將S中的圖像塊分為m個塊組,最后在GPU中通過m個CPU線程并行技術(shù)IK-SVD算法對m個塊組的稀疏表示的技術(shù)方案,其中m個CPU線程在GPU中計算m個塊組的稀疏表示時各不影響,同時IK-SVD算法需要多次執(zhí)行稀疏編碼,所以在GPU中通過m個線程并行計算IK-SVD算法對m個塊組的稀疏表示時的計算速度能夠得到大大提高,解決了現(xiàn)有技術(shù)中存在的對圖像數(shù)據(jù)集的稀疏表示的處理速度較慢的技術(shù)問題。
為了更好的理解上述技術(shù)方案,下面將結(jié)合說明書附圖以及具體的實施方式對上述技術(shù)方案進行詳細(xì)的說明。
請參考圖1,圖1為本發(fā)明實施例提供的圖像數(shù)據(jù)集的稀疏表示的加速方法的流程圖,如圖1所示,該方法包括:
S1:獲得圖像數(shù)據(jù)集S,S={Yi|1≤i≤s^Yi∈Rn×N};在本實施例中,圖像數(shù)據(jù)集S可以為大規(guī)模圖像數(shù)據(jù)集,例如,在本實施例中,S內(nèi)可以包括10000張圖片;
S2:將S中每個圖像轉(zhuǎn)換為圖像塊;
S3:將S中的圖像塊分為m個塊組,其中m為最大數(shù)量的CPU線程數(shù);
S4:在GPU中,通過m個CPU線程并行計算IK-SVD算法對m個塊組的稀疏表示,GPU支持Hyper-Q功能與動態(tài)并行功能。
請繼續(xù)參考圖2,圖2為本發(fā)明實施例提供的圖像數(shù)據(jù)集的稀疏表示的加速方法的過程圖。
請同時參考圖1和圖2,在本實施例中,將S中每個圖像轉(zhuǎn)換為圖像塊,具體為:針對S中任一圖像Y∈S,將Y分為Pi個塊,
在具體實施過程中,可以根據(jù)S中的圖像大小,將每個圖像分為合適數(shù)目的圖像塊,例如在S中圖像中最小圖片的大小為1Mb的情況下,可以將S中每張圖片按照100kb/塊的大小進行分塊,當(dāng)然,此處的100kb/塊僅僅是一個舉例,通過本實施例的介紹,本領(lǐng)域所屬的技術(shù)人員能夠根據(jù)實際情況,選擇其他合適的數(shù)值來對圖像進行分塊,以滿足實際情況的需要,在此就不再贅述了。
請同時參考圖1和圖2,在本實施例中,通過m個CPU線程并行計算IK-SVD算法對m個塊組的稀疏表示,具體包括:m個線程對m個塊組并行執(zhí)行:將局部數(shù)據(jù)傳送到GPU存儲器;計算稀疏系數(shù);從GPU輸出結(jié)果。
在具體實施過程中,如圖2所示,在GPU中,m個CPU線程執(zhí)行對應(yīng)的m個塊組的計算稀疏系數(shù)的任務(wù),并且由于各個m個CPU線程在GPU中計算m個塊組的稀疏表示時各不影響,同時IK-SVD算法需要多次執(zhí)行稀疏編碼,所以在GPU中通過m個線程并行計算IK-SVD算法對m個塊組的稀疏表示時的計算速度能夠得到大大提高,解決了現(xiàn)有技術(shù)中存在的對圖像數(shù)據(jù)集的稀疏表示的處理速度較慢的技術(shù)問題。
在具體實施過程中,計算稀疏系數(shù),具體包括:
通過IK-SVD算法訓(xùn)練對塊組中的第一個圖像塊獲得超完備字典D1;
根據(jù)塊組中的剩余圖像塊對超完備字典D1進行更新,其中,在每一次更新時通過GPU計算遞歸Cholesky分解中的矩陣運算,直到收斂。
在具體實施過程中,在每一次更新時通過GPU計算遞歸Cholesky分解中的矩陣運算,包括:
通過和選取新的原子;以及
通過GPU計算遞歸Cholesky分解中矩陣的左上角矩陣Ln-1更新;以及
通過GPU計算矩陣中子矩陣A和子矩陣B的順序更新。
在具體實施過程中,通過GPU計算遞歸Cholesky分解中矩陣的左上角矩陣Ln-1更新,具體為:
通過GPU計算Ln-1←K(Solve{Ln-1=KDKT}in parallel)。
在具體實施過程中,通過GPU計算矩陣中子矩陣A和子矩陣B的順序更新,包括:
通過GPU計算A←Temp(Temp=AK-T in parallel)和B←TempTempT in parallel。
在具體實施過程中,在IK-SVD方法中存在大量的矩陣矩陣相乘(SpMM)和矩陣向量相乘(SpMV)?;贕PU的Batch-OMP算法也主要依賴于矩陣運算。由于Coordinate(COO)、Compressed Sparse Row(CSR)、ELLPACK(ELL)和hybrid(HYB)格式的矩陣稀疏格式存在線程發(fā)散、冗余計算、數(shù)據(jù)傳輸、缺乏適應(yīng)性等問題。
本發(fā)明采用一種自適應(yīng)的稀疏矩陣格式——blocked row-column(BRC)。給定矩陣M:其基于BRC格式的表示方法如圖3所示。B1為相鄰行分塊,其值設(shè)置成一個warp的大小(例如32),塊較長的行將會導(dǎo)致負(fù)載不平衡,然后對其進行列分塊。每一個block具有相同的大小B1×T,具體可以通過以下兩個公式進行限制:其中C為一個常量,μ是每一行非零個數(shù)的平均值,σ為標(biāo)準(zhǔn)差,MaxNZ為最大非零個數(shù)的行。
通過上述部分可以看出,由于采用了將圖像數(shù)據(jù)集S中每個圖像轉(zhuǎn)換為圖像塊,并將S中的圖像塊分為m個塊組,最后在GPU中通過m個CPU線程并行技術(shù)IK-SVD算法對m個塊組的稀疏表示的技術(shù)方案,其中m個CPU線程在GPU中計算m個塊組的稀疏表示時各不影響,同時IK-SVD算法需要多次執(zhí)行稀疏編碼,所以在GPU中通過m個線程并行計算IK-SVD算法對m個塊組的稀疏表示時的計算速度能夠得到大大提高,解決了現(xiàn)有技術(shù)中存在的對圖像數(shù)據(jù)集的稀疏表示的處理速度較慢的技術(shù)問題。
基于同一發(fā)明構(gòu)思,本發(fā)明實施例第二方面還提供一種圖像數(shù)據(jù)集的稀疏表示的加速裝置,請參考圖2,圖2為本發(fā)明實施例提供的圖像數(shù)據(jù)集的稀疏表示的加速裝置的示意圖,如圖2所示,該裝置包括:
獲得單元401,用于獲得圖像數(shù)據(jù)集S,S={Yi|1≤i≤s^Yi∈Rn×N};
轉(zhuǎn)換單元402,用于將S中每個圖像轉(zhuǎn)換為圖像塊;
分組單元403,用于將S中的圖像塊分為m個塊組,其中m為最大數(shù)量的CPU線程數(shù);
計算單元404,用于在GPU中,通過m個CPU線程并行計算IK-SVD算法對m個塊組的稀疏表示,GPU支持Hyper-Q功能與動態(tài)并行功能。
在具體實施過程中,轉(zhuǎn)換單元402具體用于針對S中任一圖像Y∈S,將Y分為Pi個塊,
在具體實施過程中,計算單元404具體用于m個線程對m個塊組并行執(zhí)行:將局部數(shù)據(jù)傳送到GPU存儲器;計算稀疏系數(shù);從GPU輸出結(jié)果。
在具體實施過程中,計算單元404具體用于通過IK-SVD算法訓(xùn)練對塊組中的第一個圖像塊獲得超完備字典D1,并根據(jù)塊組中的剩余圖像塊對超完備字典D1進行更新,其中,在每一次更新時通過GPU計算遞歸Cholesky分解中的矩陣運算,直到收斂。
在具體實施過程中,計算單元404具體用于通過和選取新的原子,以及通過GPU計算遞歸Cholesky分解中矩陣的左上角矩陣Ln-1更新,以及通過GPU計算矩陣中子矩陣A和子矩陣B的順序更新。
在具體實施過程中,通過GPU計算矩陣中子矩陣A和子矩陣B的順序更新,包括:
通過GPU計算A←Temp(Temp=AK-T in parallel)和B←TempTempT in parallel。
本發(fā)明實施例中的加速裝置與前述部分介紹的加速方法是同一發(fā)明構(gòu)思下的兩個方面,在前述部分中已經(jīng)詳細(xì)地介紹了圖像數(shù)據(jù)集的稀疏表示的加速方法的具體過程,本領(lǐng)域所屬的技術(shù)人員能夠根據(jù)前述部分的描述清楚地了解加速裝置的結(jié)構(gòu)以及處理過程,在此為了說明書的簡潔,就不再贅述了。
上述本發(fā)明實施例中的技術(shù)方案,至少具有如下的技術(shù)效果或優(yōu)點:
由于采用了將圖像數(shù)據(jù)集S中每個圖像轉(zhuǎn)換為圖像塊,并將S中的圖像塊分為m個塊組,最后在GPU中通過m個CPU線程并行技術(shù)IK-SVD算法對m個塊組的稀疏表示的技術(shù)方案,其中m個CPU線程在GPU中計算m個塊組的稀疏表示時各不影響,同時IK-SVD算法需要多次執(zhí)行稀疏編碼,所以在GPU中通過m個線程并行計算IK-SVD算法對m個塊組的稀疏表示時的計算速度能夠得到大大提高,解決了現(xiàn)有技術(shù)中存在的對圖像數(shù)據(jù)集的稀疏表示的處理速度較慢的技術(shù)問題。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。