NVIDIA Maxine Video Effects SDK 編程指南 - 实践小记

本篇博客重点只说Video Effect的部分,此外还有Audio Effect的部分、还有AR部分,不在本篇范围内。本文由重庆Debug原创

NVIDIA Maxine Video Effects支持基于 AI 的视觉效果,这些效果可以输入标准网络摄像头画面数据,同时也可以传入一张图或者来自ffmpeg解码器的帧数据,让使用者可以轻松集成到视频会议和视频特效内容创建管道中;

底层深度学习模型使用 NVIDIA TensorRT 通过 NVIDIA AI 进行优化以实现高性能推理,使开发人员能够在实时应用程序中应用多种效果。

NVIDIA Maxine Video Effects提供了一系列TensorRT训练好的模型,

截止到本稿前2023年6月13日,可以做到的功能有下列5个:

1. Virtual Background 虚拟背景(抠人物)

2. Artifact Reduction 伪影减少

3. Super Resolution 超分辨率

4. Upscaler 放大器(轻量版超分辨率)

5. Video Noise Removal 视频噪音消除

硬件要求:

Video Effects SDK要求必须电脑至少拥有一个GPU是基于NVIDIA Turing或NVIDIA Ampere或NVIDIA Ada架构并具有TensorRT核心功能。

运行时软件要求:

Windows系统必须满足64-bit Windows 10或更新版本

NVIDIA Graphics Driver for Windows必须满足版本号大于等于511.65

分发包需用户提前去英伟达官网(NVIDIA Broadcast)下载安装对应显卡所需的模型及dll文件,如下图所示:

开发时软件要求:

Microsoft Visual Studio 2017或更新的版本

CMake 3.12或更新的版本

下面分别介绍这些功能和可以调控的参数及演示效果:

1. Virtual Background 虚拟背景(抠人物)

虚拟背景可以分割和屏蔽视频或图像中的背景区域,以启用 AI 支持的背景去除、替换或模糊。

限制条件:

a). 用于虚拟背景的原图像的尺寸必须大于等于:512x288(即宽和高都要同时满足大于等于这个数)。

b). 虚拟背景的效果在一个人坐在相机前录制的视频上是可达到最佳的效果。该功能在全身视频、场景中的多个人或与前置摄像头偏差太大的摄像头角度上表现会有不佳。

c). 图像文件的纵横比建议为 16:9,才能获得最佳效果。

d). 输入的图像是BGR,每个像素是一个 24 位无符号字符值,因此每个像素分量为 8 位

可调的参数:

Mode:

0:质量优先模式、1:性能优先模式

Composition Mode:

原图:

0(显示遮罩 - compMatte)

1(在前景上覆盖遮罩 - compLight)
2(复合绿色 - compGreen)
3(复合白色 - compWhite)
4(显示输入 - compNone)
5(在指定的背景图像上合成 - compBG)(可以自己设置背景图片,即可替换成自己提供的图片)
6(模糊图像的背景 - compBlur)

2. Artifact Reduction 伪影减少

Artifact Reduction,减少编码视频的压缩伪影,同时保留原始视频的细节。

此伪影滤波器可减少编码器造成的伪影,例如低比特率视频中的阻塞伪影、振铃、蚊音,同时保留原始视频的细节。

编码器伪影减少已针对 H.264 编码器进行了优化。

使用条件:

a). 输入的图像是BGR(GPU 缓冲区中提供),每个像素分量都要求是一个 32 位浮点值(fp32)。

b). 输出图像尺寸会和输入一致,同样也是BGR平面格式,每个像素分量也是32位浮点值。

c). 输入的视频的尺寸支持区间是:90p ~ 1080p

可调的参数:

Mode:

0:可去除较少的伪影,更好地保留低梯度信息(适用于更高比特率的视频)

1:去除较多的伪影(更适合较低比特率的视频)

3. Super Resolution 超分辨率

全称:超级分辨率,生成具有高达 4 倍高质量缩放的细节增强视频,同时还减少了块状/噪声伪影并保留了纹理和内容。 它适用于升级有损内容。

超分辨率滤镜在保留内容的同时,提高了低分辨率视频的分辨率,增强了细节,并锐化了输出。

此超分辨率过滤器可增强低分辨率视频的分辨率,并在保留内容的同时增强细节并锐化输出。

使用条件:

a). 输入输出分辨率和放大倍率的限制:

 
比例(放大倍率) 输入分辨率支持范围 输出分辨率范围
4/3 [90p, 2160p] [120p, 2880p]
1.5 [90p, 2160p] [135p, 3240p]
2 [90p, 2160p] [180p, 4320p]
3 [90p, 720p] [270p, 2160p]
4 [90p, 540p] [360p, 2160p]

b). NVIDIA特别清楚注明了,一些低端GPU,可能没有足够的内存来支持超分辨率功能允许的最大输入分辨率,而导致报错。

c). 输入的图像是BGR(GPU 缓冲区中提供),每个像素分量都要求是一个 32 位浮点值。

d). 输出图像尺寸会和输入一致,同样也是BGR平面格式,每个像素分量也是32位浮点值。

可调的参数:

Strength:

strength of the upscaling effect, 浮点数 [0.0, 1.0]

Mode:

超分辨率或伪影减少效果的模式,0 或 1

0 - 保守,1 - 激进。

效果展示:

原图360p:

超分放大3倍后(strength=1 mode=1):

超分放大3倍后(strength=1 mode=0):

超分放大3倍后(strength=0 mode=0):

PS:上传到网站上被压缩过,效果看起来所以不是很明显,如果放大在大屏幕上进行比较的话,可以看出原图是很多锯齿的~

4. Upscaler 放大器(轻量版超分辨率)

Upscaler是一种非常快速且轻量级的方法,可提供高达 4 倍的高质量缩放视频,并具有可调节的锐化参数。

此功能可以选择与伪影减少功能进行流水线处理,以在减少视频伪影的同时增强比例。

使用条件:

a). 支持任何输入分辨率(不像超分辨率那样有各种90p以上1080p以下之类的限制),适合比较差的显卡或者比较大尺寸的视频

b). 放大倍率和超分辨率一样,必须是4/3x、1.5x、2x、3x 或 4x之间的一种。

c). 输入的图像是RGBA (GPU 缓冲区中提供),每个像素分量都要求是一个8位浮点值,每个像素为 32 位。

d). 输出图像尺寸会和输入一致,同样也是RGBA平面格式,每个像素分量也是8位浮点值,每个像素为 32 位。

可调的参数:

Artifact Reduction Mode:

伪影去除模式,0或1:

0:可去除较少的伪影,更好地保留低梯度信息(适用于更高比特率的视频)

1:去除较多的伪影(更适合较低比特率的视频)

Upscale Strength:

提供介于 0.0 和 1.0 之间的浮点强度值,即为锐化参数来锐化生成的图像输出。默认值为 0.4。

强度设置为 0 意味着没有锐化增强,只是放大。

强度设置为 1 意味着最大的锐化增强。

NVIDIA关于超分SuperResolution和放大UpScaler两种方法的选择的建议:

1. 如果没有编码伪影的视频需要快速提高分辨率,请使用“UpScaler”。
2. 如果视频没有编码伪影,要提高分辨率,请将 SuperResolution 与 Mode=1 配合使用,以获得更大的增强功能。
3. 如果视频的编码伪影较少,要去除伪影,请仅在 Mode=0 下使用伪影减少。
4. 如果视频具有更多编码伪影,要去除伪影,请仅在 Mode=1 中使用伪影减少。
5. 要提高带有编码工件的视频的分辨率,请执行以下操作:
    (1). 对于是轻微伪像的视频,请使用 Mode=0 的超分辨率。
    (2). 否则,请使用去除伪影,然后使用 Mode=1 的超分辨率。

放大UpScaler作为轻量级的超分,效果就不展示了。

5. Video Noise Removal 视频噪音消除

视频噪声消除,可从网络摄像头视频中消除低光相机噪声,同时保留纹理细节。

使用条件:

a). 仅支持80p-1080p分辨率尺寸的视频输入。

b). 输入的图像是BGR(GPU 缓冲区中提供),每个像素分量都要求是一个 32 位浮点值。

c). 输出图像尺寸会和输入一致,同样也是BGR平面格式,每个像素分量也是32位浮点值。

可调的参数:

Strength:

降噪滤波器的强度,默认值为 0。

0 的强度对应于弱效果,这更强调纹理保留。

1 的强度对应于强效果,它更强调噪声消除,效果更明显。

原图:

降噪强度Strength=0:

降噪强度Strength=1:

NVIDIA Maxine Video Effects SDK 編程指南 - 实践小记的更多相关文章

  1. 可以创建专业的客户端/服务器视频会议应用程序的音频和视频控件LEADTOOLS Video Conferencing SDK

    LEADTOOLS Video Streaming Module控件为您创建一个自定义的视频会议应用程序和工具提供所有需要的功能.软件开发人员可以使用Video Streaming Module SD ...

  2. [转] 編程風格要素-The Elements of Programming Style 中文英文中英對照

    转自: http://www.loliman3000.com/tech/2fe33ce32906f0302412881.php 下面的程序風格規則提煉自Brian Kernighan和P. J. Pl ...

  3. C++編程札記「基礎」

    一直以為自己最擅長的編程語言是C++,那時自己的水平停留在使用C++來實現數據結構中的各種ADT和ACM算法. 創建一個類,必須實現的成員函數 explicit構造函數 對於單參數構造函數,添加exp ...

  4. 暴走吧!Snapdragon SDK开发速成指南

    (文/Aurora J) Qualcomm的Snapdragon处理器.它快如闪电.效率极高.擅长挑战多任务极限,而且拥有攻城狮们梦寐以求的无限潜能.它能确保您的手机集4G LTE.极速体验.长久续航 ...

  5. NodeJS & Dapr Javascript SDK 官方使用指南

    Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架.Dapr 确保开发人员专注 ...

  6. Android 微博sdk接入授权指南

    1:首先在微博官方注册账号,官方地址是:http://open.weibo.com/然后创建一个新应用.     2:当然我们得现在自己电脑上创建一个应用,例如包名叫com.winorout.weib ...

  7. 微信Android终端SDK新手使用指南

    1.申请你的AppID 请到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将获得AppID,可立即用于开发.但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用. 2.下 ...

  8. MinIO Python Client SDK 快速入门指南

    官方文档地址:http://docs.minio.org.cn/docs/master/python-client-quickstart-guide MinIO Python Client SDK提供 ...

  9. unix network programming volume1 sorce code build and get(UNIX網絡編程卷1第三版)

    source code下载地址:unpv13e.tar.gz下载 (也有放一份在google cloud storage) compile 1. ./configure 2. cd lib make ...

  10. gym101522 [小熊骑士限定]La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017

    西瓜队(划掉),Kuma Rider久违的第一场训练,四小时瞎打.jpg A.水题,排序 #include<cstdio> #include<iostream> #includ ...

随机推荐

  1. 创建镜像发布到镜像仓库【不依赖docker环境】

    image 工具背景 如今,docker镜像常用于工具的分发,demo的演示,第一步就是得创建docker镜像.一般入门都会安装docker,然后用dockerFile来创建镜像,除此以外你还想过有更 ...

  2. webgl 系列 —— 着色器语言

    其他章节请看: webgl 系列 着色器语言 本篇开始学习着色器语言 -- GLSL全称是 Graphics Library Shader Language (图形库着色器语言) GLSL 是一门独立 ...

  3. vue之input输入框的几个事件

    目录 事件简介 示例 事件简介 click 点击事件,一般不会用于input输入框,会用于按钮,用于输入框就有点像focus了,当点击输入框时会触发 blur 失去焦点事件,当失去焦点时会触发. fo ...

  4. python入门教程之二十邮件操作

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一 ...

  5. pandas之loc/iloc操作

    在数据分析过程中,很多时候需要从数据表中提取出相应的数据,而这么做的前提是需要先"索引"出这一部分数据.虽然通过 Python 提供的索引操作符"[]"和属性操 ...

  6. [Java SE]数组超界异常分析(IndexOutOfBoundsException/ArrayIndexOutOfBoundsException)

    import org.junit.Test; import java.util.ArrayList; /** * @author: Johnny * @date: 2021/11/12 11:17:2 ...

  7. 解Bug之路-应用999线升高

    前言 监控指标诚然是发现问题于微末之时的极佳手段,但指标往往有其表达的极限.在很多情况下,单独看一个黄金指标并不能表征系统的健康程度,反而有可能被其迷惑,进而忽略相关问题.(本文所提及的Linux K ...

  8. day16:Linux常用命令

    Linux中目录含义 /bin 存放普通用户的命令文件/boot 存放系统启动文件/cdrom 存放读取光盘的相关文件/dev 设备文件 /etc 配置文件/home 家目录/lib 库文件/lib6 ...

  9. 用Abp实现两步验证(Two-Factor Authentication,2FA)登录(三):免登录验证

    @ 目录 原理 修改请求报文 配置JwtBearerOptions 生成Token 校验Token 修改认证EndPoint 修改前端 登录 登出 最终效果 项目地址 免登录验证是用户在首次两步验证通 ...

  10. ClickHouse主键索引最佳实践

    在本文中,我们将深入研究ClickHouse索引.我们将对此进行详细说明和讨论: ClickHouse的索引与传统的关系数据库有何不同 ClickHouse是怎样构建和使用主键稀疏索引的 ClickH ...