Ⅰ 用Gpu做演算法要大顯存嗎
GPU是顯示卡的一部分,而不是深度學習演算法的一部分,叫做圖形處理器。
顯示卡的基本作用是控制電腦的圖形輸出,安裝在電腦主板的擴展槽中,或者集成在主板上,工作在中央處理器和顯示器之間。
顯示卡主要包括圖像處理器、顯存、數模轉換器、AGP匯流排介面等幾個部分,數據流從中央處理器流出後,要把中央處理器傳來的數據送到圖像處理器中進行處理,把晶元處理完的數據送入顯存,把顯存讀取出數據送到數模轉換器進行數據轉換的工作,從數模轉換器進入顯示器。ß顯存是顯示卡的核心部件,存放顯示晶元處理後的數據,顯存越大,顯示卡支持的最大解析度越大。顯存的容量至少是逗水平解析度*垂直解析度*log2顏色數/8地。
希望我能幫助你解疑釋惑。
Ⅱ GPU上圖像拼接的快速計算
圖像拼接已被研究並廣泛應用於計算機科學的許多領域,但在特徵匹配、扭曲和混合步驟中存在大量計算。從而無法滿足某些應用的實時性需求。幸運的是,已經在圖形處理器單元 (GPU) 上開發並實現了一些可以加快拼接過程的相關並行操作。在本文中,我們使用統一計算設備架構 (CUDA) 提出了基於 GPU 的圖像拼接的並行實現。我們在執行時間方面獲得了比在中央處理單元 (CPU) 上實現更好的結果。在實驗中使用集成 GPU GTX745 時,我們對大輸入圖像實現了高達 27.6 倍的加速比。
典型的拼接過程主要包括三個不同的圖像處理步驟,即配准、扭曲和插值以及混合。圖像配準是圖像拼接的關鍵任務。配準是指在描繪同一場景的一對圖像之間建立幾何變換,該變換由一個8自由度的平面單應性決定。
GPU以其強大的並行計算能力吸引許多領域的研究,作為一種協處理器對計算量大的演算法加速已成為實踐的重要途徑。在前人的研究中,他們都避免了考慮兩個極其耗時的步驟,即特徵匹配和隨機樣本共識(RANSAC)。作為圖像配准中的兩個關鍵過程,在提出的 GPU 加速並行演算法中應考慮它們。
使用GPU並行計算會遇到兩個限制
CUDA的出現解決了上述問題,並且CUDA使用C語言,最初為CPU編寫的C語言函數可以移植到CUDA內核,無需修改。
在CUDA中,一定數量的線程被分組到一個塊中,一定數量的塊以規則的網格模式在邏輯上排列(見圖1)。每個塊都映射到一個多處理器,一個多處理器可以同時運行多個線程塊。由於本地資源(寄存器和共享內存)在塊之間進行劃分,包含在同一塊中的線程可以訪問相同的共享內存並快速實現同步操作。但是,不同塊中的線程並不能直接實現通信和同步。除了本地寄存器和共享內存,所有線程都可以訪問全局內存、常量內存和紋理內存。
A. 特徵匹配
令點 經過仿射變換後得到 ,即
向量 是平移分量, 控制縮放、旋轉效果。利用齊次坐標系,方程(2)也可以寫為
接著計算兩幅圖像特徵點之間的歐幾里得距離,並將距離按照升序排序,比較升序排序中第一和第二的比值如果小於某個閾值,則認為是匹配點。
由於 中有六個未知參數,隨機選擇3對不共線的點匹配 ,使用該矩陣 計算剩餘 對匹配點的誤差。執行大量迭代,直到內點對最多。可以使用最小二乘估計器估計所有六個參數。
B. 變形和插值
扭曲變形過程中,可能使像素點位置出現負值或者沒有數值與之對應,在這種搶礦下需要插值演算法創建更平滑和准確的數值,進一步減少翹曲中產生的變形。最常用的插值方法是最近鄰插值、雙線性插值和雙三次插值。考慮到精度和計算復雜度之間的權衡,實驗採用雙線性插值演算法。
C. 混合
為了實現並行計算,本文採用了基於羽化的混合方法,其混合函數可以表示為:
其中 是像素 的權重函數。
A. 並行匹配
匹配分為粗匹配和精匹配。粗匹配過程中,塊線程數由特徵元素數決定,每個塊可以實現一個關鍵點之間的匹配,每個線程計算兩個圖像兩個特徵向量的距離。在計算完所有距離後,使用並行計算的歸並排序對距離值排序。最後,所有塊得到的匹配結果存儲在全局內存中,然後傳送到CPU。
精匹配過程,設計內核執行RANSAC迭代,只啟動一個block,線程數為 ,首先用CPU將三個非共線點計算得到的變換矩陣 ,然後將 、閾值和剩餘 個點傳到GPU,判斷內外點。
通過內存分配,可以實現精細匹配優化。
B. 平行變形和插值
將 矩陣的逆矩陣 存放在常量內存中,由於需要頻繁地調用。將待校正的圖像存放在紋理內存中,紋理內存是專門為本地訪問模式設計的。
為了進一步提升性能,若兩個坐標小數部分小於0.2則強度值分配為整數部分,否則使用雙線性插值。
C. 並行混合
由於混合數是像素和像素的混合,因此線程數等於重疊部分包含的像素。令重疊圖像的列數設置為16的倍數。 gridDim.x的大小等於重疊圖像的行數,gridDim.y的大小等於重疊圖像的列數重疊圖像除以16。
基於 CPU 的演算法在配備 16GMB DDR3 RAM 的 Intel Core i7-4790、3.60GHz 處理器上實現。基於 GPU 的演算法在 NVIDIA GeForce GTX745 集成顯卡上進行測試,每塊最大 1024 個線程和 4096 MB 全局內存。
可以清楚地看到,這兩種圖像之間幾乎沒有差異。原因是實驗中使用的GPU卡支持浮點計算,與CPU版本相比產生的誤差非常小。
在本文中,我們提出了一種使用 CUDA 架構在 GPU 上運行的並行圖像拼接方法。順序演算法通過幾個 CUDA 內核轉換為並行版本。通過使用不同類型的內存,我們實現了並行演算法的優化。同時,將GPU獲得的結果與CPU獲得的結果進行比較,我們實現了高達27.6的加速比。盡管所提出的方法顯著提高了計算性能,但仍有許多工作要做。例如,更精確的插值方法(雙三次插值)和可變權重 c( x, y) 可以考慮進一步改善鑲嵌結果。此外,並行鑲嵌演算法也可以在多個GPU平台上運行,對於大數據可以更有效地執行演算法。在今後的工作中,我們將一一處理這些問題。