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. 别逛了,送你一份2023年Java核心篇JVM(虚拟机)面试题整理

    Java内存区域 说一下 JVM 的主要组成部分及其作用? JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载).Execution engine(执行引擎):两个组件为Ru ...

  2. 1、kubernetes概念

    一.kubernetes简介 kubernetes的本质是一组服务器集群.它可以在每个节点上运行特定的程序,来对节点中的容器进行管理.目的是为了实现资源管理的自动化. 主要功能如下: 1.自我修复:一 ...

  3. 四月十六号java基础知识

    1.如果没有一个机制来限制对类中成员的访问,则很可能会造成错误的输入如果在类的成员声明前面加上修饰符private,则无法从类的外部访问到该类内部的成员,而只能被该类自身访问和修改,而不能被任何其他类 ...

  4. 部署:keepalived-1.3.5+MHA部署mysql集群

    MHA: MHA工作原理总结为以下几条: 从宕机崩溃的master保存二进制日志事件(binlog events): 识别含有最新更新的slave: 应用差异的中继日志(relay log)到其他sl ...

  5. layUI之树状表格异步加载组件treetableAsync.js(基于treetable.js)

    目录 概述 1. 使用说明 2. 使用需知 2.1 本组件依赖于treetable.js[重中之重] 2.2 本组件基于layUIAdmin进行使用 2.3 本组件的方法支持treetable.js的 ...

  6. 两分钟操作完成用VScode连接MySQL查询数据

    第一步:下载一个插件,MySQL Syntax 安装后要是重启或刷新后没有出现 再安装一个MySQL 第二步:下载vscode-database 第三步:把需要的插件下载好后,接下来就开始操作  输入 ...

  7. Word中使用ChatGPT,写文档如有神助

    [部署教程]国内网络可用,最强 ChatGPT 学术论文写作工具原创****付费 简介 Word GPT Plus 是一个集成了 chatGPT 模型的 Word 插件.它允许你基于你在文档中写的内容 ...

  8. Django笔记三十三之缓存操作

    本文首发于公众号:Hunter后端 原文链接:Django笔记三十三之缓存操作 这一节介绍一下如何在 Django 中使用 redis 做缓存操作. 在 Django 中可以有很多种方式做缓存,比如数 ...

  9. day10-好友关注

    功能05-好友关注 6.功能05-好友关注 6.1关注和取关 6.1.1需求分析 在探店图文的详情页面中,可以关注发布笔记的作者: 关注和取关:点击关注按钮就会发出请求(上图):http://127. ...

  10. 【ATL】注册插件成功后自动设置浏览器允许弹出窗口注册表

    STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine) { HRESULT hr = E_FAIL; static const wchar_t szU ...