图像预处理库 CV-CUDA 开源了,打破预处理瓶颈,提升推理吞吐量 20 多倍

如题所述

在信息化时代,图像作为信息的主要载体,深度学习模型对视觉内容的强大理解能力使其能够进行各种处理与优化。然而,过去在视觉模型开发与应用中,我们往往更关注模型本身的优化,而忽视了图像预处理与后处理阶段的优化。当模型计算效率不断提高,图像预处理与后处理却成为整个图像任务的瓶颈。为了解决这一问题,NVIDIA与字节跳动机器学习团队开源了CV-CUDA库,旨在大幅提升图像预处理算子的运行速度,实现CPU性能的百倍提升。

以图像背景模糊算法为例,将CV-CUDA作为后端替换OpenCV和TorchVision,推理过程吞吐量能提升20多倍。不仅如此,CV-CUDA在计算精度上已经对齐了OpenCV,训练推理无缝衔接,大大降低了工程师的工作量。

开源地址:github.com/CVCUDA/CV-CU...

在CV任务中,图像预/后处理成为性能瓶颈。虽然OpenCV作为应用最广泛的图像处理库,基本能满足各种视觉任务的预/后处理需求,但随着图像任务负载加大,其速度已跟不上需求。主要原因是OpenCV的大部分图像操作都是在CPU实现,缺少GPU实现或GPU实现存在问题。NVIDIA与字节跳动的算法同学发现,OpenCV中少数有GPU实现的算子存在三大问题,如结果精度无法对齐、部署模型效率问题等。

GPU图像处理加速库CV-CUDA的推出,旨在解决上述问题。相比OpenCV,CV-CUDA能在GPU上高效运行,算子速度能达到OpenCV的百倍左右。CV-CUDA基于CUDA实现,提供了足够快、足够通用、足够易用的特性,是加速视觉任务的理想选择。

CV-CUDA的速度体现在高效算子实现、批量操作、GPU架构优化等方面。在同一个计算节点上,采用CV-CUDA替换OpenCV和TorchVision前后处理,推理流程的吞吐率提升20多倍。预处理对图像做Resize、Padding、Image2Tensor等操作,后处理对预测结果做Tensor2Mask、Crop、Resize、Denoise等操作。

CV-CUDA的通用与灵活性也是一大亮点。设计之初就考虑了对齐OpenCVCPU版本算子,使得从OpenCV迁移至CV-CUDA只需少量改动即可获得一致的运算结果。同时,CV-CUDA具有高度灵活性,支持各种GPU资源的配置,满足图片类预处理的多样需求。

CV-CUDA的易用性也不容忽视。底层提供了Image等结构体、Allocator类,C++调用也不复杂。同时,CV-CUDA提供与PyTorch、OpenCV和Pillow的数据转化接口,工程师能快速替换与调用算子,同时支持Python和C++接口,便于训练与服务部署。

实战中,CV-CUDA的使用变得简单,只需简单几步即可将预处理操作迁移到GPU上。以图片分类为例,预处理流程包括图片解码、裁切、像素归一化等操作,CV-CUDA API能高效在GPU上完成并行计算,方便集成到PyTorch建模流程中。

CV-CUDA在实际业务中也得到了验证。在复杂预处理任务中,利用GPU算力进行预处理能显著提升训练与推理效率。在抖音集团内部多个场景中,CV-CUDA的应用显著提升了训练与推理性能,包括视频相关的多模态任务和搜索多模态任务。在OCR与视频多模态任务上,使用CV-CUDA后整体训练速度能提升1到2倍,推理过程的上线吞吐量也有了显著提升。

综上所述,CV-CUDA以其高效、通用、易用的特性,解决了图像预处理的瓶颈问题,提升了视觉任务的推理吞吐量。对于受限于预处理效率的视觉任务,CV-CUDA是一个值得尝试的开源工具。
温馨提示:内容为网友见解,仅供参考
无其他回答

...CV-CUDA 开源了,打破预处理瓶颈,提升推理吞吐量 20 多倍
为了解决这一问题,NVIDIA与字节跳动机器学习团队开源了CV-CUDA库,旨在大幅提升图像预处理算子的运行速度,实现CPU性能的百倍提升。以图像背景模糊算法为例,将CV-CUDA作为后端替换OpenCV和TorchVision,推理过程吞吐量能提升20多倍。不仅如此,CV-CUDA在计算精度上已经对齐了OpenCV,训练推理无缝衔接,大大降低...

CV-CUDA 高性能图像处理加速库
训练通常使用Python进行快速验证,推理则使用高性能C++进行部署,但一些图像处理库仅支持Python。CV-CUDA提供C、C++和Python接口,可以同时服务于训练和推理场景,简化部署流程。(4)独立算子设计CV-CUDA作为基础图像处理库,采用独立算子设计,无需预先定义流水线,具有高灵活性,易于调试,且可以与其他图像处理交互或集成到用户自...

相似回答
大家正在搜