?

一種基于GPGPU的SIFT加速算法*

2015-12-07 06:18楊天天魯云萍張為華
電子技術應用 2015年1期
關鍵詞:處理速度特征描述線程

楊天天,魯云萍,張為華

(1.江南大學 數字媒體學院,江蘇 無錫214083;2.復旦大學 并行處理研究所,上海201203)

一種基于GPGPU的SIFT加速算法*

楊天天1,魯云萍2,張為華2

(1.江南大學 數字媒體學院,江蘇 無錫214083;2.復旦大學 并行處理研究所,上海201203)

SIFT是目前應用最廣泛的基于局部特征的圖像特征提取算法之一,針對其運行速度制約其應用范圍的問題,提出在圖像處理器(GPGPU)上設計并實現將算法各核心模塊映射到GPGPU的計算單元并針對GPUPU特性進行優化的SIFT并行加速算法。測試結果表明,基于GPGPU的SIFT并行算法相比于原始串行版本達到了118.2倍的加速,吞吐量達到了 7 6.86圖片/s,相比于已有的技術獲得了明顯的性能提升。

圖像處理器GPGPU;SIFT算法;并行;加速

0 引言

隨著互聯網的發展,網絡信息量不斷膨脹。根據Cisco的預測,到2016年每月產生的數據量將超過8萬PB,其中圖像和視頻已經成為傳輸和處理的主要數據類型。統計數據顯示,YouTube網站每分鐘有60 h時長的視頻被上傳,Facebook存儲的圖片量超過2 000億張。如何從這些數據中提取有用的信息并進行高效的分析和處理變得越來越重要,各種新型的圖像檢索類應用也不斷涌現。

圖像檢索主要分為基于全局特征的算法和基于局部特征的算法?;谌痔卣鞯臋z索算法用一個特征數據代表整個數據,精確度低,也不能識別兩幅圖像中的相似元素,處理圖像的伸縮和裁剪[1]?;诰植刻卣鞯臋z索算法通常提取成百上千個特征來描述一個圖像或視幀,保證了檢索精度,還能對圖片的變形進行處理。SIFT算法是其中最具代表性的算法之一。而局部特征提取算法要保證處理精度,其處理速度相對緩慢。如何有效提高特征提取算法的處理速度,成為圖像檢索算法需要解決的關鍵問題之一。

隨著半導體技術的發展和多核技術的普及,各種并行計算系統逐漸成為硬件處理平臺的設計主流。圖像處理單元GPGPU由于其通用性和可編程性為加速圖像特征提取算法處理速度提供了機會。

結合圖像特征提取算法面臨的處理速度挑戰,本文設計實現了一種基于GPGPU的SIFT并行加速算法。首先對SIFT算法的核心模塊進行深入分析,并在此基礎上對各個核心模塊進行了有針對性的細粒度并行,以適應其在GPGPU上處理,然后通過利用GPGPU的特性對算法進行優化。最后,通過流水化CPU和GPGPU處理的任務來進一步提升系統性能。

1 SIFT算法和GPGPU簡介

本節將簡單介紹SIFT算法的基本處理過程和GPGPU基本結構。

1.1SIFT算法

如何從大量圖像和視頻數據中提取有用信息并進行分析和處理變得越來越重要,各種多媒體檢索應用不斷涌現。

SIFT(Scale-Invariant Feature Transform)算法是由David Lowe于 1999年首次提出并于 2004年總結完善的[2]圖像特征提取算法。SIFT算法提取的特征基于物體上的一些局部外觀顯著的特征點而生成,它的檢測器在選擇特征點時,已將圖像縮放等情況考慮進來,而它的描述器在描述每個特征點時都會計算該特征點的方向向量。因此SIFT算法提取的特征與圖像的大小和旋轉無關,對于光線、噪聲和輕微視角改變的容忍度也相當高,具有很強的匹配能力。目前SIFT算法已成為當前最主流的圖像特征提取算法之一。

SIFT算法首先檢測圖像中的顯著區域,即相比于周圍的像素變化明顯的部分。在此基礎上結合特征點周圍的信息對這些特征加以描述。如圖1所示,其算法主要由特征檢測和特征描述兩部分組成。

圖1 SIFT處理流程及各部分所占運行時間的比例

(1)特征檢測:特征檢測的目標是對圖像中的顯著區域的特征點進行定位。為了能對圖像的縮放進行處理,首先建立圖像不同縮放尺寸的高斯金字塔,高斯金字塔由 octave和每個 octave中的 interval兩個層次組成,octave包含一組大小相同的圖層;每個octave中的interval進行不同程度高斯模糊后用于描述不同伸縮范圍下的圖像特征。圖像高斯差金字塔是將高斯金字塔中同一個octave的連續兩個interval的圖像相減而得到的。最后通過查找金字塔中的極值找到圖像中顯著的特征點;

(2)特征描述:特征描述主要對檢測出來的圖像特征點加以描述形成特征向量。為了提高特征點的描述范圍,特征描述基于特征點及其周圍像素點的信息計算特征點的方向,之后通過對特征點進行特征值的提取,生成特征向量,以完成對特征信息的描述。

為了保證特征點的精確性,SIFT算法通常包含復雜的處理過程,從而使其具有計算密集的特點。而隨著網絡帶寬的增加,需處理的數據量也不斷增加,已有的串行算法已經不能滿足實時處理的要求。

為了給后繼優化提供更明確的優化方向,本設計收集了SIFT算法在CPU上串行執行時各個階段大致所需要的時間,具體如圖1所示。特征描述所占的時間比例最大,占到超過3/4的時間;特征檢測其次,占到近 1/4的時間;加載圖像和計算灰度圖像只占很少的時間。

1.2GPGPU簡介

隨著圖形處理單元GPGPU性能的快速增長及其可編程性的不斷增強,GPGPU逐漸成為一種主流的計算系統,成為一個具有強大算術處理能力的并行可編程處理器[3]。

GPGPU的主要廠家 NVIDIA于 2006年引入 Tesla統一圖形和計算體系結構[4]擴展了 GPGPU。以 NVIDIA GeForce 8800 GTX為例,其包含16個流多處理器(SM),每個流多處理器中有 8個流處理器(SP)。流多處理器包含寄存器文件、共享存儲器、共享的指令緩存與數據緩存、指令的讀取/分發單元、特別功能單元和1個雙精度浮點計算單元。

GPGPU作為加速部件已廣泛應用于各種計算密集領域。GU L等人[5]在GPGPU上設計了一個二維和三維的傅里葉變換函數;CHEN Y等人[6]在GPGPU集群上實現一個大規模傅里葉變換算法;NAGHMOUCHI J等人[7]使用GPGPU來加速正則表達式的匹配。GPGPU的這種特性也為提升SIFT算法的處理速度提供了可能。

2 GPGPU加速算法

為了提升SIFT算法的處理速度,本文設計和實現了一種基于GPGPU的加速算法。

2.1算核并行化

GPGPU具有豐富的并行計算資源,適合處理數據并行操作,需要根據SIFT每個階段算核的特點進行有針對性的細粒度的并行。

SIFT算法的特征檢測階段大多是對圖像進行變換和操作,各個部分之間不存在依賴關系。對于這部分算法的并行化,可以將圖像劃分成子塊,分到不同的線程塊執行。在特征描述階段,主要對檢測的特征點進行操作。這個部分算核的并行化可以以特征點為基本處理單位,由不同的線程塊處理不同的特征點,然后再根據特征描述具體階段的算法并行劃分。

2.1.1特征檢測的實現

SIFT算法的特征檢測由以下幾個部分組成,各個組成部分并行劃分后,由一個或若干個GPGPU內核加以實現:

(1)對圖像縮放形成多個octave:將圖像分成二維的圖像子塊,一個線程塊處理圖像中一個圖像塊。

(2)圖像的高斯濾波:計算圖像的高斯濾波分成兩個步驟:①將圖像分成寬度為W、高度為1的圖像塊,每個圖像塊由一個線程塊處理,線程塊中每個線程負責處理圖像塊的一列。W的值可以根據實際使用的圖像選擇不同的大小。②將圖像分成寬度為1、高度為H的圖像塊,每個圖像塊由一個線程塊處理。通過行列的分別計算,得到的結果就是高斯濾波后的圖像。

(3)計算圖像高斯差:圖像被分成二維的圖像塊,一個線程塊處理圖像中特定大小(測試中使用16×16)的圖像塊,線程塊中一個線程計算兩個相鄰高斯圖像對應一個像素點的差值。

(4)尋找局部極值點:將圖像(上中下3層)分成二維的圖像塊,每個線程塊處理不同的圖像塊。為了記錄哪些點是極值點,使用一個寬度為w(w為圖片寬度)、高度為h/32(h為圖片高度)的二維整數數組來進行記錄。每個整數32位,每一位表示對應高度像素點是否為極值點。

(5)計算極值點的實際位置:把極值點分成不同的組,每組由一個線程塊計算,線程塊中每個線程負責計算一個極值點的實際位置。

2.1.2特征描述的實現

SIFT的特征描述分為兩部分:計算特征方向和描述特征點。特征點的計算是彼此獨立的,而在計算特征方向和特征描述時,內部的計算又可以分成不同的線程,在線程塊內部的線程上加以并行:

(1)計算特征方向:一個線程塊負責計算一個特征點的方向,一個線程塊包含32個線程,分別負責計算32個方向的Bin的值。最后由每個線程塊中的第一個線程負責計算出32個方向Bin的最大值,作為特征點的特征方向。

(2)描述特征點:一個線程塊描述一個特征點。在描述一個特征點時,采用的是4×4個方格,每個方格8維柱狀圖,一共128維的特征值向量。一個線程塊中的一個線程負責一個方格的柱狀圖的計算。

2.2基于GPGPU特性的優化

對SIFT進行有針對性的細粒度的并行,實現了算法的各個算核在GPGPU的并行處理。為了進一步優化算法,可以利用GPGPU的特性進行優化。

(1)內存和顯存分配優化:在GPGPU的處理過程中,需要不停地對輸入圖像進行處理。減少動態的存儲空間分配的次數可以有效提高性能。為了降低內存和顯存的分配次數,只有當處理第一張圖像或圖像大小改變時才重新進行內存或顯存的分配和初始化,只有圖像大小改變或處理完最后一張圖像后才進行釋放。對于存儲特征點的數組,根據特征點最大值設定一個特征點數上限,數組大小就固定了,避免了每次處理重復分配內存引入的額外開銷。

(2)針對訪存的優化:訪存性能對整體處理性能影響很大。GPGPU的存儲層次復雜,保證各層訪問的局部性可以達到更好的性能。為此,本設計的優化包括:設計的內核不大,保證指令的局部性,因為由于寄存器具有最快的處理速度,小的內核劃分盡可能讓局部變量保存在寄存器中,達到最優的訪存效率;一些常量頻繁使用,保存在只讀的常量寄存器中;將線程需要頻繁使用的共享數據放到共享存儲器中;由于GPGPU的紋理存儲器可以實現數據的二維訪問,通過綁定紋理存儲器提升性能。

2.3CPU與GPGPU的協同工作

把 SIFT算法最耗時的算核部分交由 GPGPU處理后,各個部分都獲得較大的性能提升。算核通過GPGPU加速后通??梢垣@得幾十甚至上百倍的性能提升。而無法交給GPGPU處理的串行部分則不能匹配GPGPU部分的執行速度,成為性能的瓶頸。

CPU上的核負責對圖像進行預處理,GPGPU負責內核的計算。兩部分串行執行,將會造成較多的彼此等待,影響整體處理性能。由于處理的圖像沒有相關性,GPGPU的任務可以與 CPU為后繼運算進行的預處理并行執行,形成流水線。這樣,GPGPU只需要計算最復雜的特征檢測和描述兩部分,其他部分由CPU完成。

目前,多核的CPU處理器已經相當普遍,4核已經成為PC的通用配置。PC處理器已經有了8核乃至16核。除去控制GPGPU的核和預處理的流水線核,多核的處理器可能還有多余的核。為了使主機系統資源得到完全利用,還可以在剩余的核上運行多核版本的圖像特征提取算法來提高整個系統的吞吐率。

3 實驗評估

為了計算算法的有效性,本文對GPGPU加速算法進行了評估。

3.1評估環境

實驗中使用Rob Hess的開源實現作為SIFT的基準,以英特爾E7-4807處理器上串行處理時間作為基準,其對SIFT串行處理速度是1.53 s/幀,吞吐量是 0.65幀/s。GPGPU程序的編寫基于NVIDIA CUDA編程模型。評估中使用的測試圖像是MIKOLAJCZYK K提供的用來評估各種特征檢測器和描述器的標準圖像集合[8-9]。操作系統為Ubuntu,Linux內核版本為2.6.28-11-generic。硬件測試主要使用了兩種配置:(1)主機是Intel Core 2 Quad Q8300的4核CPU,內存2 GB。GPGPU為GeForce GTX 260,共216個核,時鐘率為1.24 GHz,顯存的大小為1 GB。(2)主機是Intel Core i7 930的4核CPU,內存為2 GB。GPGPU是 GeForce GTX 295,共 480個核,時鐘率為 1.24 GHz,顯存的大小為1 792 MB。

3.2性能評估

在GTX 260上實現的SIFT算法,吞吐率達到39.67幀/s,平均每張圖片耗時25.21 ms,其中在CPU上所花的時間包括圖像加載1.269 ms,主機對GPGPU的顯存和設備管理及 CPU處理的計算所花 6.765 ms,其余時間是GPGPU的計算時間。

在GTX 295上實現的SIFT算法,吞吐率達到76.15幀/s,平均每張圖片耗時13.131 ms,其中在CPU上所花的時間包括圖像加載0.440 ms,主機對GPGPU的顯存和設備管理及 CPU處理的計算所花 3.895 ms,其余時間是GPGPU的計算時間。

為了更直觀的比較加速效果,圖2分別給出了GTX 260和 GTX 295上 SIFT各階段 GPGPU加速的柱形圖??梢钥闯?,各個算核在GPGPU上都有較好的加速效果,并具有較好的可擴展性。

圖2 GTX 260與295上SIFT實現各部分加速比較

3.3整體性能評估

表1給出各GPGPU實現的SIFT并行版本的吞吐量以及相對于串行CPU版本的加速比??梢钥吹?,SIFT隨著GPGPU性能的增強,核數的增多,吞吐量和加速比也有相應的提升,在GTX295上達到了118.2倍的加速,吞吐量達到76.86幀/s。從實驗結果可以看出,在GPGPU上實現的SIFT算法具有良好的性能,能滿足圖像特征提取的實時處理需求。流水線的使用和充分利用系統剩余資源可以進一步提高系統吞吐率。

表1 SIFT各GPGPU上的吞吐量及加速比比較

4 相關工作

由于串行的局部特征提取算法處理速度較慢,已有一些研究在并行硬件上分析和實現了局部特征提取算法來獲得加速。ZHANG Q等人[10]針對多核系統架構提出SIFT的兩種并行算法,在8核機器上達到6.4倍的性能加速效果。FENG H等人[11]的實現在16核機器上達到11倍的加速。這兩者都是采用圖象的分塊并行。這兩篇文獻都對串行算法進行了局部串行優化,這些串行優化基本實現了約2倍的速度提升。這意味著在8核處理器上并行的實際加速大約為3倍,而在16核平臺上的加速只有5.5倍。CHEN P等人[12]對SIFT實現了一種通用的動態流水線的并行,在開啟超線程的16核處理器上對 SIFT達到 16.88倍加速。SINHA S[13]也在 GPGPU對SIFT進行了實現,在 GeForce 7800 GTX上處理 640×480大小圖像的速度為10幀/s。HEYMANN S等人[14]的實現在QuadroFX 3400上達到20幀/s。他們的實現沒有充分考慮GPGPU的特性,也沒有考慮到充分利用CPU資源可能對系統性能的影響。本文基于GPGPU的特性設計和實現了高效的SIFT并行加速算法,并通過充分利用CPU資源進一步提升系統性能,相比于已有的技術可以獲得更大的性能提升。

5 結論

本文針對海量數據環境下圖像檢索的實時處理需求,使用新型的高性能計算硬件GPGPU來加速圖像局部特征提取的SIFT算法。測試結果表明,相對于CPU上的串行版本,SIFT的實現達到了118.2倍的加速,吞吐量達到76.86幀/s。

[1]BERRANI S,AMSALEGL,GROS P.Robust content-based image searches for copyright protection[C].In Proceedings of ACM Workshop on Mul-timedia Databases,2003:70-77.

[2]LOWE D G.Distinctive image features from scale-invariant keypoints[J].International Journal of Computer Vision,2004,60(2):404-417.

[3]OWENS J D,HOUSTON M,LUEBKE D,et al.GPU computing[J].In Proceedings of the IEEE,May 2008,96(5):879-899.

[4]LINDHOLM E,NICKOLLS J,OBERMAN S,et al.NVIDIA Tesla:A unified graphics and computing architecture[J]. IEEE Micro5,Mar/Apr 2008,28(2):39-5.

[5]GU L,LI X,SIEGEL J.An empirically tuned 2D and 3D FFT library on CUDA GPU[C].In Proceedings of ICS,2010:305-314.

[6]CHEN Y,CUI X,MEI H.Large-scale FFT on GPU clusters[C].In Proceedings of ICS,2010:315-324.

[7]NAGHMOUCHI J,SCARPAZZA D P,BEREKOVIC M. Small-ruleset regular expression matching on GPGPUs:Quantitative performance analysis and optimization[C].In Proceedings of ICS,2010:337-348.

[8]MIKOLAJCZYK K,SCHMID C.A performance evaluation of local descriptors[J].IEEE Trans.Pattern Anal.Mach.Intell,2005,27(10):1615-1630.

[9]BAUER J,SüNDERHAUF N,PROTZEL P.Comparing several implementations of two recently published feature detectors[C]. In Proceedings of the International Conference on Intelligent and Autonomous Systems,2007.

[10]ZHANG Q,CHEN Y,ZHANG Y,et al.Sift implementation and optimization for multi-core systems[C].In Parallel andDistributed Processing,2008.IPDPS 2008.IEEE International Symposium on,2008:1-8.

[11]FENG H,LI E,CHEN Y,et al.Parallelization and characterization of sift on multi-core systems[C].IEEE International Symposium on Workload Characterization,2008:14-23.

[12]CHEN P,YANG D,ZHANG W,et al.Adaptive pipeline parallelism for image feature extraction algorithms[C].In Parallel Processing(ICPP),2012 41st International Conference on IEEE,2012:299-308.

[13]SINHA S,FRAHM J,POLLEFEYS M,et al.GPU-based video feature tracking and matching[C].In Proc.of the 2006 Workshop on Edge computing Using New Commodity Architectures(EDGE),Chapel Hill,NC,2006:6-12.

[14]HEYMANN S,MULLER K,SMOLIC A,et al.SIFT implementation and optimization for general-purpose GPU[C]. In WSCG′07,2007:317-322.

Speeded-up SIFT on GPGPU

Yang Tiantian1,Lu Yunping2,Zhang Weihua2
(1.Software of Digital Media School,Jiangnan University,Wuxi 214083,China;2.Parallel Processing Institute,Fudan University,Shanghai 201203,China)

The modern GPGPU is not only a powerful graphic processor but also a highly parallel programmable processor. Stronger arithmetic ability and higher bandwidth bring GPGPU great competitive power in real-time processing systems and highperformance computing systems.This paper designs and implements parallel acceleration algorithms for SIFT on GPGPU.We make best use of GPGPU architectures to accelerate our implementations,including uses of shared memory and texture memory,decreasing allocation and free times of memories on GPGPU and etc.GPGPU usually cooperates with CPU to finish a job.This paper implements SIFT on GPGPU in consideration of the impacts of CPU.Experimental results show this method can achieve a speedup of 118.2X with a throughput of 76.86 images per second.

GPGPU;SIFT;parallel;acceleration

TP3

A

0258-7998(2015)01-0149-04

10.16157/j.cnki.0258-7998.2014120102015

國家自然科學基金(61370081)

2014-11-10)

楊天天(1986-),女,博士,講師,主要研究方向:傳感器、人工智能與模式識別、人機交互設計。

魯云萍(1974-),女,碩士,高級工程師,主要研究方向:網絡安全與模式識別。

張為華(1974-),通信作者,男,博士,副教授,主要研究方向:體系結構與編譯優化,Email:zhangweihua@fudan.edu.cn。

猜你喜歡
處理速度特征描述線程
船舶尾流圖像的數字化處理和特征描述技術
基于C#線程實驗探究
基于國產化環境的線程池模型研究與實現
大數據視角下信息管理與信息系統專業建設分析
大數據視角下信息管理與信息系統專業建設分析
目標魯棒識別的抗旋轉HDO 局部特征描述
淺談linux多線程協作
用于三維點云表示的擴展點特征直方圖算法*
看電視太多 損害認知功能
基于差異的圖像特征描述及其在絕緣子識別中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合