英伟达CV-CUDA高性能图像处理加速库Alpha发布,并在GitHub
2022-12-21 19:58:36 来源:IT之家 阅读量:6630
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的更多信息,请点击此链接。
声明:本网转发此文章,旨在为读者提供更多信息资讯,所涉内容不构成投资、消费建议。文章事实如有疑问,请与有关方核实,文章观点非本网观点,仅供读者参考。
猜您喜欢