Nvidia宣布CV—CUDA高性能圖像處理加速庫最近幾天發布了其Alpha版本,正式向全球開發者開源用戶可以在GitHub上下載試用

CV—CUDA是一個開源項目,可以在AI成像和計算機視覺過程中,通過GPU加速構建高效的前處理和后處理步驟CV—CUDA由英偉達和字節跳動的機器學習團隊聯合開發
伴隨著短視頻App,視頻會議平臺和VR/AR技術的發展,視頻和圖像逐漸成為全球互聯網流量的主要組成部分包括我們平時接觸到的這些視頻圖像,很多都是經過AI和計算機視覺算法處理和增強的可是,伴隨著社交媒體和視頻分享服務的快速增長,作為AI圖像算法基礎的視頻圖像處理部分,早已成為計算過程中不可忽視的成本和瓶頸回顧一些常見的圖像處理示例,以更好地理解CV—CUDA的應用場景
基于人工智能算法的圖像背景模糊
圖一。人工智能背景是模糊的
背景虛化通常應用于視頻會議,照片修圖等場景在這些場景中,我們通常希望AI算法能夠模糊主體外的背景部分,這樣既能保護用戶的隱私,又能美化圖像圖像背景模糊的過程大致可以分為三個過程:預處理,DNN網絡和后處理預處理通常包括圖像大小調整,填充,Image2Tensor等操作,Dn網絡可以是一些常見的分段網絡,如Unet等后期處理通常包括Tensor2Mask,裁剪,調整大小,去噪等操作
在傳統的圖像處理過程中,預處理和后處理部分通常由CPU來操作,這就導致了整個圖像背景虛化過程中90%的工作時間都花在了預處理和后處理部分,從而成為整個算法流水線的瓶頸如果前后處理能夠通過GPU適當加速,將會大大提高整體計算性能
圖二。人工智能背景是模糊的
前后處理部分放在GPU上,就可以實現整條流水線的端到端加速經過測試,在單個GPU上,與傳統的圖像處理方法相比,將整個流水線移植到GPU上后,吞吐量可以提高20倍以上這無疑會大大節省計算成本
人工智能算法圖像分類
圖3。人工智能圖像分類
對于前后處理部分,目前有一些主流的應用方案:圖像處理庫是OpenCV,使用PyTorch框架的模型訓練引入的torchvision圖像處理庫等。
如上所述,傳統的圖像預處理操作一般都是在CPU上進行的,一方面會占用大量的CPU資源,使得CPU和GPU的負載不均衡,另一方面,由于基于CPU的圖像加速庫不支持批量操作,預處理的效率較低。為了解決目前主流圖像處理庫存在的一些問題,NVIDIA和字節跳動的機器學習團隊共同開發了基于GPU的圖像處理加速庫CV—CUDA,具有以下特點:
一批
支持批處理操作,可以充分利用GPU高并發,高吞吐量的并行加速特性,提高計算效率和吞吐量。
可變形狀
C/C++/Python接口
在部署機器學習算法時,有必要調整訓練和推理過程一般來說,python用于訓練時的快速驗證,C++用于推理時的高性能部署但是有些圖像處理庫只支持python,給部署帶來很大不便如果在訓練和推理中使用不同的圖像處理庫,推理端需要重新實現邏輯,過程會非常繁瑣
CV—CUDA提供了C,C++和Python接口,可以服務于訓練和推理場景從訓練轉移到推理場景時,也可以省去繁瑣的對齊過程,提高部署效率
獨立操作員設計
CV—CUDA作為基礎的圖像處理庫,采用獨立的算子設計,不需要預先定義流水線獨立算子的設計具有更高的靈活性,使得調試更加容易,并且可以與其他圖像處理進行交互,或者集成到用戶自己的圖像處理上層框架中
結果對齊OpenCV
由于某些運算符的實現不一致,不同圖像處理庫的計算結果很難對齊比如常見的Resize操作,OpenCV,OpenCV—gpu,torchvision實現方式不同,計算結果也不同所以,如果訓練時使用OpenCV CPU版本,推理時使用GPU版本或其他圖像處理庫,結果會有誤差
可用性
CV—CUDA提供了Image,ImageBatchVarShape等結構,方便用戶使用同時提供了Allocator類,用戶可以自定義顯存的分配策略,方便上層框架整合管理資源目前CV—CUDA提供PyTorch,OpenCV,Pillow的數據轉換接口,方便用戶更換操作人員,混合不同的圖像數據庫
針對不同GPU架構的高度優化性能
CV—CUDA可以支持Volta,Turing,Ampere等GPU架構根據不同架構GPU的特點,CV—CUDA的性能在CUDA內核層面進行了高度優化,可以在云服務場景下大規模部署
本站了解到,CV—CUDA Beta預計在2023年3月發布,v1.0正式版將在6月發布。
有關CV—CUDA的更多信息,請點擊此鏈接。
。聲明:本網轉發此文章,旨在為讀者提供更多信息資訊,所涉內容不構成投資、消費建議。文章事實如有疑問,請與有關方核實,文章觀點非本網觀點,僅供讀者參考。

