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. Oracle_表空间

    Oracle 表空间 在执行具体的操作之前,由于Oracle不允许删除现有临时表空间,所以在删除现有临时表空间时要终止现有的实时会话. 查询Oracle表空间名称,表空间物理文件路径 查询临时表空间: ...

  2. C++库封装JNI接口——实现java调用c++

    1. JNI原理概述 通常为了更加灵活高效地实现计算逻辑,我们一般使用C/C++实现,编译为动态库,并为其设置C接口和C++接口.用C++实现的一个库其实是一个或多个类的简单编译链接产物.然后暴露其实 ...

  3. OpenWRT实现NAT64/DNS64

    OpenWRT实现NAT64/DNS64 连接到核心路由器 # 连接到核心路由器 [C:\~]$ ssh root@10.0.0.1 Connecting to 10.0.0.1:22... Conn ...

  4. PVE开启硬件显卡直通功能

    首先编辑GRUB配置文件: root@pve:~# vim /etc/default/grub root@pve:~# root@pve:~# cat /etc/default/grub # If y ...

  5. pandas之面属行统计

    描述统计学(descriptive statistics)是一门统计学领域的学科,主要研究如何取得反映客观现象的数据,并以图表形式对所搜集的数据进行处理和显示,最终对数据的规律.特征做出综合性的描述分 ...

  6. Spring Boot 整合 Kafka

    Kafka 环境搭建 kafka 安装.配置.启动.测试说明: 1. 安装:直接官网下载安装包,解压到指定位置即可(kafka 依赖的 Zookeeper 在文件中已包含) 下载地址:https:// ...

  7. Disruptor-源码解读

    前言 Disruptor的高性能,是多种技术结合以及本身架构的结果.本文主要讲源码,涉及到的相关知识点需要读者自行去了解,以下列出: 锁和CAS 伪共享和缓存行 volatile和内存屏障 原理 此节 ...

  8. 一个基于Java线程池管理的开源框架Hippo4j实践

    @ 目录 概述 定义 线程池痛点 功能 框架概览 架构 部署 Docker安装 二进制安装 运行模式 依赖配置中心 接入流程 个性化配置 线程池监控 无中间件依赖 接入流程 服务端配置 三方框架线程池 ...

  9. 最新版本 Stable Diffusion 开源 AI 绘画工具之中文自动提词篇

    目录 标签生成器 提示词自动补全 标签生成器 由于输入正向提示词 prompt 和反向提示词 negative prompt 都是使用英文,所以对学习母语的我们非常不友好 使用网址:https://t ...

  10. Solon 框架,单月下载量超100万了!!!

    Solon 框架,于2023年的四月份突冲100万下载量了.感谢开源的力量,我们同喜同荣!!!Solon 目前,是"可信开源共同体"的新成员,积极参与中科院的"开源之夏& ...