天堂系列97嫩模在线播放_真人直播视频免费网站_日本一区二区久久_国产精品区免费视频_亚洲精品国男人在线视频

您的位置:首頁 > 資訊 >

英偉達(dá) CV-CUDA 高性能圖像處理加速庫 Alpha 版本發(fā)布 ,并在 GitHub 上開源

IT之家 12 月 21 日消息,英偉達(dá)宣布,CV-CUDA (Computer Vision – Compute Unified Device Architecture)高性能圖像處理加速庫,近日發(fā)布 Alpha 版本,正式向全球開發(fā)者開源。用戶可在 GitHub 下載和試用。

CV-CUDA 是一個開源項目,可在 AI 成像和計算機視覺 (CV) 流程中通過 GPU 加速構(gòu)建高效的預(yù)處理和后處理步驟。CV-CUDA 前期由 NVIDIA 和字節(jié)跳動的機器學(xué)習(xí)團(tuán)隊聯(lián)合開發(fā)。

隨著短視頻 App、視頻會議平臺以及 VR / AR 等技術(shù)的發(fā)展,視頻與圖像已逐漸成為全球互聯(lián)網(wǎng)流量的主要組成部分。包含我們平時接觸到的這些視頻圖像,也有很多是被 AI 和計算機視覺(CV)算法處理并增強過的。然而,隨著社交媒體和視頻分享服務(wù)的快速增長,作為 AI 圖像算法基礎(chǔ)的視頻圖像處理部分,也早已成為計算流程中不可忽視的成本和瓶頸?;仡櫼幌聢D像處理的一些常見的例子,以更好地理解 CV-CUDA 的應(yīng)用場景。


(相關(guān)資料圖)

(1)AI 算法圖像背景模糊化

圖 1. AI 背景模糊(CPU 前后處理方案)

圖像背景模糊化通常會被應(yīng)用于視頻會議,美圖修圖等場景。在這些場景中,我們通常希望 AI 算法可以把主體之外的背景部分模糊化,這樣可以保護(hù)用戶隱私,美化圖像等。圖像背景模糊化的流程大體可以分為 3 個過程:前處理,DNN 網(wǎng)絡(luò)以及后處理過程。前處理過程,通常包含了對圖像做 Resize、Padding、Image2Tensor 等操作;DNN 網(wǎng)絡(luò)可以是一些常見 segmentation network,比如 Unet 等;后處理過程,通常包括 Tensor2Mask、Crop、Resize、Denoise 等操作。

在傳統(tǒng)的圖像處理流程中,前處理和后處理部分通常都是使用 CPU 進(jìn)行操作,這導(dǎo)致整個圖像背景模糊化流程中,有 90% 的工作時間消耗在前后處理部分,因而成為了整個算法流水線的瓶頸。若能把前后處理妥善利用 GPU 加速,這將能大幅提升整體的計算性能。

圖 2. AI 背景模糊(GPU 前后處理方案)

當(dāng)把前后處理部分都放到 GPU 上后,就可以對整個 pipeline 進(jìn)行端到端的 GPU 加速。經(jīng)過測試,在單個 GPU 上,相比于傳統(tǒng)圖像處理方式,把整個 pipeline 移植到 GPU 后,可以獲得 20 倍以上的吞吐率提升。這無疑會大大的節(jié)省計算成本。

(2)AI 算法圖像分類

圖 3. AI 圖像分類

圖像分類是最常見的 AI 圖像算法之一,通??梢杂糜谖矬w識別,以圖搜圖等場景,幾乎是所有 AI 圖像算法的基礎(chǔ)。圖像分類的 pipeline 大體可以分為 2 個部分:前處理部分和 DNN 部分。其中前處理部分,在訓(xùn)練和推理過程中最常見的 4 種操作包括:圖片解碼、Resize、Padding、Normalize。DNN 部分已經(jīng)有了 GPU 的加速,而前處理部分通常都會使用 CPU 上的庫函數(shù)進(jìn)行處理。如果能夠把前處理部分也移植到 GPU 上,那么一方面可以釋放 CPU 資源,另一方面也可以進(jìn)一步提升 GPU 利用率,從而可以對整個 pipeline 進(jìn)行加速。

針對前后處理部分,目前已有的一些主流應(yīng)用方案:圖像處理庫是 OpenCV、使用 PyTorch 框架進(jìn)行模型訓(xùn)練引入的 torchvision 圖像處理庫等。

如上所述,傳統(tǒng)的圖像預(yù)處理操作一般在 CPU 上進(jìn)行,一方面會占用大量的 CPU 資源,使得 CPU 和 GPU 的負(fù)載不均衡;另一方面由于基于 CPU 的圖像加速庫不支持 batch 操作,導(dǎo)致預(yù)處理的效率低下。為了解決當(dāng)前主流的圖像處理庫所存在的一些問題,NVIDIA 和字節(jié)跳動的機器學(xué)習(xí)團(tuán)隊聯(lián)合開發(fā)了基于 GPU 的圖像處理加速庫 CV-CUDA,并擁有以下特點:

(1)Batch

支持 batch 操作,可以充分利用 GPU 高并發(fā)、高吞吐的并行加速特性,提升計算效率和吞吐率。

(2)Variable Shape

支持同一 batch 中圖片尺寸各不相同,保證了使用上的靈活性。此外,在對圖片進(jìn)行處理時,可以對每張圖片指定不同的參數(shù)。例如調(diào)用 RotateVarShape 算子時,可以對 batch 中每張圖片指定不同的旋轉(zhuǎn)角度。

(3)C / C++/Python 接口

在部署機器學(xué)習(xí)算法時需要對齊訓(xùn)練和推理流程。一般來說,訓(xùn)練時利用 python 進(jìn)行快速驗證,推理時利用 C++ 進(jìn)行高性能部署,然而一些圖像處理庫僅支持 python,這給部署帶來了極大的不便。如果在訓(xùn)練和推理采用不同的圖像處理庫,則又需要在推理端重新實現(xiàn)一遍邏輯,過程會非常繁瑣。

CV-CUDA 提供了 C、C++ 和 Python 接口,可以同時服務(wù)于訓(xùn)練和推理場景。從訓(xùn)練遷移到推理場景時,也可免去繁瑣的對齊流程,提高部署效率。

(4)獨立算子設(shè)計

CV-CUDA 作為基礎(chǔ)圖像處理庫,采用了獨立算子設(shè)計,不需要預(yù)先定義流水線。獨立算子的設(shè)計具有更高的靈活性,使調(diào)試變得更加的容易,而且可以使其與其他的圖像處理交互,或者將其集成在用戶自己的圖像處理上層框架中。

(5)結(jié)果對齊 OpenCV

不同的圖像處理庫由于對一些算子的實現(xiàn)方式不一致導(dǎo)致計算結(jié)果難以對齊。例如常見的 Resize 操作,OpenCV、OpenCV-gpu 以及 torchvision 的實現(xiàn)方式都不一樣,計算結(jié)果存在差異。因此如果在訓(xùn)練時用 OpenCV CPU 版本而推理時若要采用 GPU 版本或其他圖像處理庫,就會面臨結(jié)果存在誤差的問題。

在設(shè)計之初,我們考慮到當(dāng)前圖像處理庫中,很多用戶習(xí)慣使用 OpenCV 的 CPU 版本,因此在設(shè)計算子時,不管是函數(shù)參數(shù)還是圖像處理結(jié)果上,盡可能對齊 OpenCV CPU 版本的算子。當(dāng)用戶從 OpenCV 遷移到 CV-CUDA 時,只需做少許改動便可使用,且圖片處理結(jié)果和 OpenCV 一致,不需要重新訓(xùn)練模型。

(6)易用性

CV-CUDA 提供了 Image、ImageBatchVarShape 等結(jié)構(gòu)體,方便用戶的使用。同時還提供了 Allocator 類,用戶可以自定義顯存分配策略(例如用戶可以設(shè)計顯存池分配策略來提高顯存分配速度),方便上層框架集成和管理資源。目前 CV-CUDA 提供了 PyTorch、OpenCV 和 Pillow 的數(shù)據(jù)轉(zhuǎn)化接口,方便用戶進(jìn)行算子替換和進(jìn)行不同圖像庫之間的混用。

(7)針對不同 GPU 架構(gòu)的性能高度優(yōu)化

CV-CUDA 可以支持 Volta、Turing、Ampere 等 GPU 架構(gòu),并針對不同架構(gòu) GPU 的特點,在 CUDA kernel 層面進(jìn)行了性能上的高度優(yōu)化,可在云服務(wù)場景中規(guī)?;渴稹?/p>

IT之家獲悉,CV-CUDA Beta 版預(yù)計將在 2023 年 3 月發(fā)布,6 月份發(fā)布 v1.0 正式版。

CV-CUDA 更多內(nèi)容查看:點此鏈接。

標(biāo)簽: 圖像處理

相關(guān)閱讀