CV-CUDA高性能图像处理加速库Alpha发布

IT之家12月21日消息 , 英伟达宣布 , CV-CUDA(ComputerVision–ComputeUnifiedDeviceArchitecture)高性能图像处理加速库 , 近日发布Alpha版本 , 正式向全球开发者开源 。 用户可在GitHub下载和试用 。
CV-CUDA是一个开源项目 , 可在AI成像和计算机视觉(CV)流程中通过GPU加速构建高效的预处理和后处理步骤 。 CV-CUDA前期由NVIDIA和字节跳动的机器学习团队联合开发 。
CV-CUDA高性能图像处理加速库Alpha发布
文章图片
随着短视频App、视频会议平台以及VR/AR等技术的发展 , 视频与图像已逐渐成为全球互联网流量的主要组成部分 。 包含我们平时接触到的这些视频图像 , 也有很多是被AI和计算机视觉(CV)算法处理并增强过的 。 然而 , 随着社交媒体和视频分享服务的快速增长 , 作为AI图像算法基础的视频图像处理部分 , 也早已成为计算流程中不可忽视的成本和瓶颈 。 回顾一下图像处理的一些常见的例子 , 以更好地理解CV-CUDA的应用场景 。
(1)AI算法图像背景模糊化
CV-CUDA高性能图像处理加速库Alpha发布
文章图片
图1.AI背景模糊(CPU前后处理方案)图像背景模糊化通常会被应用于视频会议 , 美图修图等场景 。 在这些场景中 , 我们通常希望AI算法可以把主体之外的背景部分模糊化 , 这样可以保护用户隐私 , 美化图像等 。 图像背景模糊化的流程大体可以分为3个过程:前处理 , DNN网络以及后处理过程 。 前处理过程 , 通常包含了对图像做Resize、Padding、Image2Tensor等操作;DNN网络可以是一些常见segmentationnetwork , 比如Unet等;后处理过程 , 通常包括Tensor2Mask、Crop、Resize、Denoise等操作 。
在传统的图像处理流程中 , 前处理和后处理部分通常都是使用CPU进行操作 , 这导致整个图像背景模糊化流程中 , 有90%的工作时间消耗在前后处理部分 , 因而成为了整个算法流水线的瓶颈 。 若能把前后处理妥善利用GPU加速 , 这将能大幅提升整体的计算性能 。
CV-CUDA高性能图像处理加速库Alpha发布
文章图片
图2.AI背景模糊(GPU前后处理方案)当把前后处理部分都放到GPU上后 , 就可以对整个pipeline进行端到端的GPU加速 。 经过测试 , 在单个GPU上 , 相比于传统图像处理方式 , 把整个pipeline移植到GPU后 , 可以获得20倍以上的吞吐率提升 。 这无疑会大大的节省计算成本 。
(2)AI算法图像分类
CV-CUDA高性能图像处理加速库Alpha发布
文章图片
图3.AI图像分类图像分类是最常见的AI图像算法之一 , 通常可以用于物体识别 , 以图搜图等场景 , 几乎是所有AI图像算法的基础 。 图像分类的pipeline大体可以分为2个部分:前处理部分和DNN部分 。 其中前处理部分 , 在训练和推理过程中最常见的4种操作包括:图片解码、Resize、Padding、Normalize 。 DNN部分已经有了GPU的加速 , 而前处理部分通常都会使用CPU上的库函数进行处理 。 如果能够把前处理部分也移植到GPU上 , 那么一方面可以释放CPU资源 , 另一方面也可以进一步提升GPU利用率 , 从而可以对整个pipeline进行加速 。
针对前后处理部分 , 目前已有的一些主流应用方案:图像处理库是OpenCV、使用PyTorch框架进行模型训练引入的torchvision图像处理库等 。
如上所述 , 传统的图像预处理操作一般在CPU上进行 , 一方面会占用大量的CPU资源 , 使得CPU和GPU的负载不均衡;另一方面由于基于CPU的图像加速库不支持batch操作 , 导致预处理的效率低下 。 为了解决当前主流的图像处理库所存在的一些问题 , NVIDIA和字节跳动的机器学习团队联合开发了基于GPU的图像处理加速库CV-CUDA , 并拥有以下特点: