設(shè)置
  • 日夜間
    隨系統(tǒng)
    淺色
    深色
  • 主題色

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

2022/12/21 18:23:13 來(lái)源:IT之家 作者:瀟公子 責(zé)編:瀟公子

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

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

圖片

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

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

圖片

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

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

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

圖片

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

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

(2)AI 算法圖像分類

圖片

圖 3. AI 圖像分類

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

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

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

(1)Batch

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

(2)Variable Shape

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

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

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

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

(4)獨(dú)立算子設(shè)計(jì)

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

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

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

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

(6)易用性

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

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

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

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

圖片

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

廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。

相關(guān)文章

關(guān)鍵詞:英偉達(dá)圖像處理

軟媒旗下網(wǎng)站: IT之家 最會(huì)買 - 返利返現(xiàn)優(yōu)惠券 iPhone之家 Win7之家 Win10之家 Win11之家

軟媒旗下軟件: 軟媒手機(jī)APP應(yīng)用 魔方 最會(huì)買 要知