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


(1)Batch
支持batch操作 , 可以充分利用GPU高并发、高吞吐的并行加速特性 , 提升计算效率和吞吐率 。
(2)VariableShape
支持同一batch中图片尺寸各不相同 , 保证了使用上的灵活性 。 此外 , 在对图片进行处理时 , 可以对每张图片指定不同的参数 。 例如调用RotateVarShape算子时 , 可以对batch中每张图片指定不同的旋转角度 。
(3)C/C++/Python接口
在部署机器学习算法时需要对齐训练和推理流程 。 一般来说 , 训练时利用python进行快速验证 , 推理时利用C++进行高性能部署 , 然而一些图像处理库仅支持python , 这给部署带来了极大的不便 。 如果在训练和推理采用不同的图像处理库 , 则又需要在推理端重新实现一遍逻辑 , 过程会非常繁琐 。
CV-CUDA提供了C、C++和Python接口 , 可以同时服务于训练和推理场景 。 从训练迁移到推理场景时 , 也可免去繁琐的对齐流程 , 提高部署效率 。
(4)独立算子设计
CV-CUDA作为基础图像处理库 , 采用了独立算子设计 , 不需要预先定义流水线 。 独立算子的设计具有更高的灵活性 , 使调试变得更加的容易 , 而且可以使其与其他的图像处理交互 , 或者将其集成在用户自己的图像处理上层框架中 。
(5)结果对齐OpenCV
CV-CUDA高性能图像处理加速库Alpha发布】不同的图像处理库由于对一些算子的实现方式不一致导致计算结果难以对齐 。 例如常见的Resize操作 , OpenCV、OpenCV-gpu以及torchvision的实现方式都不一样 , 计算结果存在差异 。 因此如果在训练时用OpenCVCPU版本而推理时若要采用GPU版本或其他图像处理库 , 就会面临结果存在误差的问题 。
在设计之初 , 我们考虑到当前图像处理库中 , 很多用户习惯使用OpenCV的CPU版本 , 因此在设计算子时 , 不管是函数参数还是图像处理结果上 , 尽可能对齐OpenCVCPU版本的算子 。 当用户从OpenCV迁移到CV-CUDA时 , 只需做少许改动便可使用 , 且图片处理结果和OpenCV一致 , 不需要重新训练模型 。
(6)易用性
CV-CUDA提供了Image、ImageBatchVarShape等结构体 , 方便用户的使用 。 同时还提供了Allocator类 , 用户可以自定义显存分配策略(例如用户可以设计显存池分配策略来提高显存分配速度) , 方便上层框架集成和管理资源 。 目前CV-CUDA提供了PyTorch、OpenCV和Pillow的数据转化接口 , 方便用户进行算子替换和进行不同图像库之间的混用 。
(7)针对不同GPU架构的性能高度优化
CV-CUDA可以支持Volta、Turing、Ampere等GPU架构 , 并针对不同架构GPU的特点 , 在CUDAkernel层面进行了性能上的高度优化 , 可在云服务场景中规模化部署 。
IT之家获悉 , CV-CUDABeta版预计将在2023年3月发布 , 6月份发布v1.0正式版 。
CV-CUDA高性能图像处理加速库Alpha发布
文章图片
CV-CUDA更多内容查看:点此链接 。 返回搜狐 , 查看更多
责任编辑: