前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用VPI 1.1加速计算机视觉和图像处理

使用VPI 1.1加速计算机视觉和图像处理

作者头像
GPUS Lady
发布2021-09-22 11:26:34
9780
发布2021-09-22 11:26:34
举报
文章被收录于专栏:GPUS开发者GPUS开发者

昨天,NVIDIA美国针对NVIDIA VPI 1.1 做了一个讲座:

我们看看都讲了啥?

什么是VPI?可以用来做什么?

VPI是VISION PROGRAMING INTERFACE的缩写,即视觉编程接口,是NVIDIA 用于高性能计算机视觉处理的下一代 API

特点:

-使用所有计算加速器创建高效的计算机视觉管道

-首次公开 PVA 和 VIC 处理器以供一般用途

-在系统级别上,可以对CV 工作负载轻松实现负载平衡

-可以在 Tegra 和 PC 上加速

-与不同硬件的无缝接口

-比较容易使用

-使用 NVIDIA JetPack 部署

计算Pipline示例(以Stereo Disparity Estimation为例)

目前可以支持哪些算法?

Benchmark结果

VPI 1.1新功能

Background Subtraction

-使用高斯混合模型技术

-适用于图像序列

-在 CPU 和 CUDA 后端实现

-可选的阴影检测和背景输出

-接受灰度和彩色图像格式

-常用于输入预处理

-在 CPU 和 CUDA 后端实现

-CPU 上的图像直方图比 OpenCV/CPU 快 3.3 倍

-在 CUDA 上均衡直方图比 OpenCV/CUDA 快 3.8 倍

-用于运动检测和物体跟踪由

-NVENC 后端实现,仅适用于 Jetson AGX Xavier 设备

-在 NV12 块线性图像序列上运行

-输出是一个 S10.5 有符号定点二维向量场(2S16 块线性图像)

-输出分辨率为输入的 1/4

-1920x1080 输入性能:低质量——每帧 1.7 毫秒;高质量——每帧 3.1 毫秒

-用于将图像分解为频段

-由 CUDA 和 CPU 后端实现

-对应高斯金字塔表示的可选输出

-逆运算,拉普拉斯重建,

-计划用于未来的 VPI 版本

-更好的输出质量,更少的噪音

-支持多达 256 个视差级别

-CUDA 后端比以前快 2.2 倍

-在 Jetson AGX Xavier 上实现——480x270x16bpp,最多 64 个差异:2.61ms

-输出置信度图

-检测无效的差异

-亮点:使用颜色输出更新的立体样本:

VPI Python编程

编程模式

-支持 Python 2.7 和 3.6。

-与 numpy 和 OpenCV 的轻松互操作性。

-允许快速的图像处理管道原型设计。

-受 Pillow 库启发的伪立即模式 API。

-高效的多后端算法执行。

-首次作为开发者预览版发布

-API 在生产就绪时可能会略有变化。

-只允许使用全局处理流。

-计划用于生产发布的多流处理

-分配新图像

代码语言:javascript
复制
img = vpi.Image(size, format)
size: (width,height) tuple
format: vpi.Format enumeration
vpi.Format.RGB8
vpi.Format.Y8
vpi.Format.NV12
…

-封装现有的 2D numpy 数组

代码语言:javascript
复制
img = vpi.asimage(buffer [,format])
buffer: numpy array, for single plane images, or
buffer: list of numpy arrays, for multi-plane images

封装单个平面时,可以推导出格式。

分配一个新数组

代码语言:javascript
复制
arr = vpi.Array(capacity, type)
type: vpi.Type enumeration
vpi.Type.U8
vpi.Type.KEYPOINT
vpi.Type.HOMOGRAPHY_TRANSFORM_2D
…
Created arrays are initially empty (size == 0)

封装一个现存的1D numy 数组

代码语言:javascript
复制
arr = vpi.asarray(buffer [,type])

封装的时候,类型可以被推导,比如:

分配一个新的金字塔:

代码语言:javascript
复制
arr = vpi.Pyramid(size, format, levels, scale=0.5)

使用算法:指定执行后端

使用算法:组合

使用结果:Lock memory buffers

更多例子:

Q&A

问:金字塔 LK 光流和密集光流算法在 xavier NX 和 nano 上可用吗?它们是否可以直接通过 VPI 获得,也可以通过 opencv 获得?

答:您好,PVA 后端的 LK 光流仅适用于 Xavier 设备,例如 NX。Nano没有PVA。您可以在 Nano 上使用 CUDA 或 CPU 后端。对于 NVENC 后端的密集光流,所有 Jetson 都支持它。

问:如果我想让我在 AGX Xavier 上的 C 程序只为许多巨大的矩阵执行低级矩阵乘积运算,我应该选择什么 API?

答:cuBLAS 或 cuDNN 是低级矩阵运算的最佳选择。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档