一種針對a+超分辨率技術的gpu加速方法
【專利摘要】本發明公開一種針對A+超分辨率技術的GPU加速方法,所述A+超分辨率技術步驟包括bicubic插值、差分、收集差分特征、主成分分析、錨特征搜索匹配和回歸、低高頻特征疊加、高分辨率塊重疊映射回高分辨率圖像;所述方法將A+超分辨率技術上述的所有步驟并行化,并移植到GPU上運行。進一步的,通過調整圖像和特征數據存放格式以滿足GPU全局內存的合并訪問、GPU內核程序指令級優化以達到盡可能快的GPU運行速度、使用CPU/GPU聯合計算加快處理視頻的速度。本發明將一個高質量的超分辨率技術加速到滿足視頻處理需要的速度,并且不會帶來任何圖像質量損失。
【專利說明】
一種針對A+超分辨率技術的GPU加速方法
技術領域
[0001] 本發明涉及一種圖像超分辨率領域和GPU加速的方法,具體是一種針對深度學習 A +超分辨率技術的GPU加速方法。
【背景技術】
[0002] 圖像超分辨率就是將一副低分辨率圖像轉換為高分辨率圖像,其在圖像后處理和 視頻非線性編輯中有著廣泛的應用。早期的超分辨率技術(如bicubic)往往基于簡單的插 值,可以快速可靠地工作,也易于芯片集成,但是這些技術得到的高分辨率圖像質量不佳, 會產生顯著的人工痕跡,如環、混疊、模糊等效應。如此質量的超分辨率方法難以滿足當前 高質量視頻需求。當前性能先進的超分辨率方法能生成高質量的圖像,但是伴隨著巨大的 計算開銷,難以滿足實際應用需要。目前有一些GPU加速的超分辨率方法,這些方法達到了 足夠快的運行速度,但是也犧牲了方法的運行質量。
[0003] 發表于2014年亞洲計算機視覺會議的A+圖像超分辨率方法是一種性能領先的超 分辨率技術(R.Timofte,V.De Smet,and L.Van Gool.A+:Adjusted anchored neighborhood regression for fast super-resolution. In Proceedings of Asia Conference on Computer Vision,pp. 111-126,2014),它是業界圖像質量最好的超分辨率 方法之一,同時相對其他方法有較低的計算復雜度。它的基本思路是:在訓練階段,在數量 眾多的候選圖像塊樣本中挑選出最具有代表性的1024個錨點圖像特征以及其對應的超分 辨率變換;在方法運行階段,對每一個待超分辨率塊搜索匹配一個最臨近錨點圖像特征,然 后施加相應的超分辨率變換。這種錨點搜索匹配再施加相應變換的策略,使得整個超分辨 率方法針對性地作用于各種圖像塊,獲得了極佳的圖像質量和較低的運行復雜度。盡管如 此,A+超分辨率技術處理1920*1080到3840*2160的單通道超分辨率變換仍需要超過45秒/ 幀。為了使A+超分辨率技術能夠滿足實際應用需要,需要采用全新的計算系統大幅加快A+ 超分辨率技術的處理過程。
【發明內容】
[0004] 本發明的目的在于針對現有的A+超分辨率技術運行時間的不足,提供一種針對A+ 超分辨率技術的GPU加速方法,將A+超分辨率技術進行并行化、利用GPU加速并充分優化A+ 超分辨率技術的GHJ執行過程,實現大幅加快A+超分辨率技術的處理速度。
[0005] 本發明采用的技術方案是:
[0006] -種針對A+超分辨率技術的GPU加速方法,其中:所述A+超分辨率技術步驟包括 bicubic插值、差分、收集差分特征、主成分分析、錨特征搜索匹配和回歸、低高頻特征疊加、 高分辨率塊重疊映射回高分辨率圖像;所述方法將A+超分辨率技術上述的所有步驟并行 化,并移植到GPU上運行。
[0007] 進一步的,所述方法中:對于差分、高分辨率塊重疊映射回高分辨率圖像這兩個步 驟,按照輸出像素進行任務劃分,計算任務被分割成數百萬個互不相關的微任務進行并行 計算;對于收集差分特征、錨特征搜索匹配和回歸、低高頻特征疊加這三個步驟,按照輸出 特征進行任務劃分,各個輸出特征可以被并行地計算,從而發揮GHJ超強的并行計算能力。
[0008] 進一步的,所述方法中:在并行化執行中,如果對圖像數據格式不加約束,GPU每個 內存訪問時鐘周期僅有一小部分位寬得到利用,GPU全局內存帶寬將會大量浪費,嚴重降低 A+超分辨率技術執行效率。為此,本發明調整了圖像和特征數據的存放方式。使得相鄰線程 總是同時訪問相鄰的數據,即:相鄰圖像或特征同一參數的存放位置是相鄰的,使得訪問它 們的相鄰線程的每個指令總是訪問相鄰的數據,達到完美的合并訪問。滿足合并訪問的請 求會被GHJ內的硬件自動合并,使得GPU帶寬得到最大利用。
[0009] 進一步的,所述方法:在并行化的錨特征搜索匹配和回歸步驟中,由于投影矩陣在 運行前不確定,所以其無法合并訪問,每次全局內存I/O只有一小部分得到使用。本發明提 出針對性的指令級并行技術,在一個周期內讀入多個待計算的數據,然后進行計算,從而增 大全局內存I/O位寬利用率,可以更大化利用GPU全局內存,加快執行速度。
[0010] 進一步的,所述方法中:采用CPU/GPU聯合計算技術,將GPU和CPU的計算資源結合 起來,在GPU計算Y通道的A+超分辨率的同時,CPU的兩個線程也在分別計算U、V通道的 bicubic超分辨率,從而節省U、V通道產生的CPU/GPU數據傳輸開銷,降低視頻超分辨率執行 時間。
[0011] 與現有技術相比,本發明具有以下顯著優勢:
[0012] 本發明將A+超分辨率技術并行化,可以利用GPU超強并行計算能力;并優化圖像數 據格式使之實現完美的合并訪問,進一步的,將錨特征回歸過程指令級并行化,從而充分利 用GHJ超強的并行計算能力,將A+超分辨率技術加速到實際生產應用所需的速度;充分優化 了 A+超分辨率過程的GPU執行效率,并且進一步利用了 CPU/GPU聯合計算,盡可能加速了整 個A+過程,最終將執行速度從使用CPU的47秒/幀加速到GPU的0.16秒/幀。
【附圖說明】
[0013] 通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發明的其他特征、 目的和優點將會更加明顯:
[0014] 圖1是A+超分辨率技術流程示意圖;
[0015] 圖2是本發明一優選實施例中按輸出特征進行任務劃分并行化進行收集特征示意 圖;
[0016] 圖3是本發明一優選實施例中錨特征搜索匹配與回歸的并行化示意圖;
[0017] 圖4是本發明一優選實施例中高分辨率塊重疊映射回高分辨率圖像的并行化示意 圖;
[0018] 圖5是本發明一優選實施例中合并訪問優化示意圖;
[0019] 圖6是本發明一優選實施例中使用指令級并行示意圖;
[0020] 圖7是本發明一優選實施例中CPU/GPU聯合處理示意圖。
【具體實施方式】
[0021]下面結合具體實例對本發明進行詳細說明。以下實施將有助于本領域的技術人員 進一步理解本發明,但不以任何形式限制本發明。應當指出的是,對本領域的普通技術人員 來說,在不脫離本發明構思的前提下,還可以做出若干變形和改進。這些都屬于本發明的保 護范圍。
[0022]針對現有的A+超分辨率技術運行時間的不足,本發明將A+超分辨率技術進行并行 化、利用GPU加速并充分優化執行過程。
[0023]由于物理因素的制約,幾年來處理器的工作頻率無法大幅提升,計算機行業通過 增加處理器的核心數量提升計算能力,典型的產品有多核心中央處理器(CPU)和擁有眾多 核心的圖形處理器(GHJ)。其中GHJ擁有上千個計算單元和超高帶寬的顯存,例如Nvidia GTX 980TI擁有2816個CUDA核心和336GB/S的全局內存帶寬。如果將一個大型計算任務分為 數萬乃至數百萬個微任務,然后交給GPU處理的時候,GPU會將這些微任務調度分配給這些 CUDA核心,眾多的CUDA核心能夠并發地、高效地處理微任務,從而使GPU執行速度達到CPU的 數百倍。能夠利用GPU超強計算能力的前提是計算任務并行化,使GPU執行數百萬個可并發 的微任務。
[0024]如圖1所示,A+超分辨率技術的過程分解為7個步驟,包括bicubic預處理、差分、收 集差分特征、主成分分析、錨特征搜索與回歸、低高頻圖像塊相加、高分辨率圖像塊重疊映 射為最終高分辨率圖像。為了最大程度地加速A+超分辨率技術,本發明將全部步驟都并行 化(bicubic插值的并行化、差分的并行化、收集差分特征的并行化、主成分分析的并行化、 錨特征搜索匹配和回歸的并行化、低高頻特征疊加的并行化、高分辨率塊重疊映射回高分 辨率圖像的并行化),并移植到GPU上運行。本發明必須全部步驟并行化,否則未并行的部分 將成為整個系統的瓶頸,而且串行步驟和并行步驟的銜接會導致反復的CPU/GPU數據轉移 和時間開銷。
[0025] 在一優選的實施方式中,本發明對差分、收集差分特征、低高頻圖像塊相加的并行 化技術是相似的,計算任務被按照輸出特征(對收集差分特征、低高頻圖像塊而言)或輸出 像素(對差分而言)進行任務劃分,分割成數萬個(對收集差分特征、低高頻圖像塊而言)或 數百萬個(對差分而言)微任務。每個微任務的計算被指配到一個線程上,GPU會自動地調度 ⑶DA核心去處理這些微任務。由于這些微任務之間是沒有相互關聯和依賴的,因此它們可 以被并發地執行,不需要相互通信,并且可以以任意次序運行。
[0026] 在一優選的實施方式中,如圖2所示,是本發明實施例中收集特征的并行化的示意 圖,其按照輸出特征進行任務劃分。一個單獨的線程負責計算一個輸出特征,它只需要讀對 應區域的差分圖像數據,然后形成輸出特征。并且應該注意到,線程間對同一區域的讀操作 不會帶來競態,因此可以并發的執行。
[0027] 本發明中最重要的一個步驟:錨特征搜索匹配與回歸的并行化。具體的,在一優選 的實施方式中,該步驟它包含三個部分:一次矩陣-矩陣乘法,對每個匹配特征中最大絕對 值搜索,每個特征右乘對應的投影矩陣。矩陣-矩陣乘法的并行化是通過CUDAcuBLAS矩陣乘 法庫實現的。本發明將剩下的兩個部分按照特征進行任務劃分,每個輸出特征的錨特征匹 配、回歸計算任務作為一個微任務分配給了一個線程,其并行化如圖3所示。每個線程從匹 配矩陣的對應列中搜索絕對值最大的行下標index,然后用該下標index對應的投影矩陣乘 以該低分辨率特征得到對應的高頻圖像塊。
[0028] 本發明設計了高分辨率塊重疊映射回高分辨率圖像的并行化。在傳統的塊疊加回 圖像的技術中,計算機創建兩個初始化為〇的圖像SR Image和權值weights。隨著輸入特征 的不斷處理,SR Image對應區域產生累加,和weights也不斷更新。最后將SR Image除以 weights已得到最終結果。但是這種方法無法直接并行化,因為并行處理的特征可能同時 讀/寫SR Image和weights的同一區域,導致競態,產生錯誤的運行結果。在一優選的實施方 式中,為了解決這個問題,本發明從輸出像素的角度去處理這個問題,如圖4所示。計算任務 按照輸出像素進行任務劃分,從而使得該步驟能夠并行化。一個線程負責計算一個輸出像 素,首先它找出了該像素包含在哪些塊之中,然后在這些塊的對應位置上獲取像素的值進 行疊加和計數,最后平均后得到計算結果。這種并行化方法在計算結果和串行方法一致的 前提下,避免了競態,從而可以在GPU上正確運行。
[0029] 對bicubic和主成分分析(PCA)的并行化方式是眾所周知的,本發明不再陳述。
[0030] 如圖5所示,在一優選的實施方式中,本發明通過調整GPU內圖像和特征數據格式, 使得A+超分辨率過程中達到盡可能的全局內存合并訪問,從而大幅加快其執行速度。當GPU 線程訪問全局內存的時候,GPU硬件會自動地將相鄰的訪問請求合并在一起,從而充分利用 顯存的位寬和帶寬。例如GTX980TI有384位的顯存位寬,可以同時存/取24個單精度浮點數。 只有在相鄰線程訪問相鄰全局內存空間的時候合并訪問才能生效,否則每次存取只有很小 一部分位寬和帶寬起作用,大幅影響A+超分辨率技術的運行速度。本發明精心調整了GPU內 圖像和特征的數據格式,使之盡可能滿足GHJ合并訪問。在bicubic、差分、收集差分特征、主 成分分析、低高頻特征相加和高分辨率塊重疊映射回高分辨率圖像步驟中,全局內存訪問 達到了完美的合并訪問;在錨特征搜索匹配與回歸的矩陣-矩陣乘法和最大絕對值搜索也 達到了完美的合并訪問,唯獨投影矩陣與低分辨率特征的乘法無法訪問,這是由于只有在 運行時才能決定訪問哪一個投影矩陣,因此相鄰線程訪問的投影矩陣很可能不一樣,也就 無法合并訪問。
[0031] 在一優選的實施方式中,本發明通過對錨特征回歸中投影矩陣與低分辨率特征乘 法進行指令級并行,達到了盡可能大的A+超分辨率技術加速。在未指令級并行的時候,線程 每次訪問投影矩陣數據會觸發一次全局內存32字節的讀操作,其中只有4字節是有效的,其 余都被丟棄了,這意味著低全局內存位寬和帶寬利用率。為了改善這個狀況,本發明調整了 指令和線程內核中的數據訪問方式,使用fl〇at4數據結構在一個周期內一次讀入多個待計 算的數據(共16字節),之后再進行計算,如圖6所示。通過指令級并行,投影矩陣與低分辨率 特征乘法以及A+整體速度大幅提升。
[0032] 在一優選的實施方式中,本發明采用CPU/GPU聯合計算技術,將計算開銷小但CPU/ GPU I/0開銷大的步驟(U、V通道的bicubi c)保持在CPU內執行,使用CPU和GPU同時處理視頻 超分辨率任務,如圖7所示。在對視頻進行超分辨率時,往往對Y通道采取高質量的超分辨率 技術,而對U、V通道采用較快的超分辨率技術,因為U、V通道的重要性和對質量影響較小,而 且A+超分辨率技術本身是針對亮度信息而非色彩信息的。因此在超分辨率視頻時,本發明 使用GPU處理Y通道的A+超分辨率,同時啟用兩個CPU線程處理U、V通道的bicubic超分辨率。 由于bicubic復雜度極低,因此CPU總是率先于GPU完成處理。
[0033]綜上所述,本發明通過A+超分辨率技術全過程并行化,進一步的調整GPU內圖像和 特征數據格式滿足合并訪問、用于錨特征回歸的指令級并行化、CPU/GPU聯合計算技術將A+ 超分辨率技術的運行速度加快了 295倍,同時保持了完全相同的運行質量。其各個步驟的運 行速度和加速比如表1所示。
[0034] 表1GPU對各個步驟的加速比
[0036] 上表中:使用Nvidia GTX980TI和雙路Intel E5-2697V2@2.7GHz 12cores processers,測試1920*1080到3840*2160單通道超分辨率。
[0037] 由以上實施例可以看出,本發明將A+超分辨率過程劃分為7個步驟,并行化每個步 驟以適配到GPU上,調整圖像和特征數據存放格式以滿足GPU全局內存的合并訪問,GPU內核 程序指令級優化以達到盡可能快的GPU運行速度,使用CPU/GPU聯合計算加快處理視頻的速 度。與現有技術相比,本發明將一個高質量的超分辨率技術加速到滿足視頻處理需要的速 度,并且不會帶來任何圖像質量損失。
[0038] 以上對本發明的具體實施例進行了描述。需要理解的是,本發明并不局限于上述 特定實施方式,本領域技術人員可以在權利要求的范圍內做出各種變形或修改,這并不影 響本發明的實質內容。
【主權項】
1. 一種針對A+超分辨率技術的GPU加速方法,所述A+超分辨率技術步驟包括bicubic插 值、差分、收集差分特征、主成分分析、錨特征搜索匹配和回歸、低高頻特征疊加、高分辨率 塊重疊映射回高分辨率圖像;其特征在于:所述方法將A+超分辨率技術上述的所有步驟并 行化,并移植到GHJ上運行。2. 根據權利要求1所述的針對A+超分辨率技術的GPU加速方法,其特征在于:所述方法 中: 對于差分、高分辨率塊重疊映射回高分辨率圖像這兩個步驟,按照輸出像素進行任務 劃分,計算任務被分割成數百萬個互不相關的微任務進行并行計算; 對于收集差分特征、錨特征搜索匹配和回歸、低高頻特征疊加這三個步驟,按照輸出特 征進行任務劃分,各個輸出特征被并行地計算,從而發揮GPU超強的并行計算能力。3. 根據權利要求2所述的針對A+超分辨率技術的GPU加速方法,其特征在于:所述按照 輸出像素進行任務劃分,是指:一個線程負責計算一個輸出像素,首先它找出該像素包含在 哪些塊之中,然后在這些塊的對應位置上獲取像素的值進行疊加和計數,最后平均后得到 計算結果。4. 根據權利要求1所述的針對A+超分辨率技術的GPU加速方法,其特征在于:所述方法: 調整了圖像和特征數據的存放方式,使得相鄰線程總是同時訪問相鄰的數據。5. 根據權利要求4所述的針對A+超分辨率技術的GPU加速方法,其特征在于:相鄰圖像 或特征同一參數的存放位置是相鄰的,使得訪問它們的相鄰線程的每個指令總是訪問相鄰 的數據,滿足合并訪問的請求會被GHJ內的硬件自動合并,使得GPU帶寬得到最大利用。6. 根據權利要求1-5任一項所述的針對A+超分辨率技術的GPU加速方法,其特征在于: 所述方法:在并行化的錨特征搜索匹配和回歸步驟中,采用指令級并行技術,在一個周期內 讀入多個待計算的數據,然后進行計算,從而增大全局內存I/O位寬利用率。7. 根據權利要求1-5任一項所述的針對A+超分辨率技術的GPU加速方法,其特征在于: 所述方法:采用CPU/GPU聯合計算技術,在GPU計算Y通道的A+超分辨率的同時,CPU的兩個線 程也在分別計算U、V通道的bicubic超分辨率,從而節省U、V通道產生的CPU/GPU數據傳輸開 銷,降低視頻超分辨率執行時間。
【文檔編號】G06T1/20GK105869105SQ201610184146
【公開日】2016年8月17日
【申請日】2016年3月28日
【發明人】宋利, 趙章宗
【申請人】上海交通大學