0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NVIDIA Maxine视频效果SDK帮助解决视频质量问题

星星科技指导员 来源:NVIDIA 作者:About Tanay Varshney, 2022-04-01 14:35 次阅读

由于流行病相关的关闭和在家办公的政策,视频会议、音频和视频流以及电信最近出现了爆炸性增长。企业、教育机构和公共部门机构对虚拟协作和内容创建应用程序的需求正在飙升。在线交流的关键部分是视频流,无论是简单的视频通话还是面向广大受众的流媒体内容。同时,这些流是在线通信中网络带宽最密集的部分,通常伴随着噪声和伪影。

为了解决这些视频质量挑战, NVIDIA Maxine 视频效果 SDK提供了基于人工智能的视觉功能,将嘈杂、低分辨率的视频流转换为令人愉悦的用户体验。这篇文章演示了如何使用标准网络摄像头输入运行这些效果,并轻松地将它们集成到视频会议和内容创建管道中。

添加细节并提高分辨率

对于因图像帧的低分辨率而导致的低视频质量, Maxine video Effects SDK 提供了两种基于人工智能的最先进视觉效果:超分辨率和放大。

超分辨率从提供的输入图像生成具有更高分辨率和更好纹理的优质图像。它提供了全面的增强功能,同时保留了内容。这种视觉效果最好用于无损压缩数据,如 H 。 264 。您可以使用此功能将介质缩放 1 。 33 倍、 1 。 5 倍、 2 倍、 3 倍和 4 倍。

要调整超分辨率效果,请选择其模式:

0 :建议用于包含编码工件的流和使用有损压缩编码的流。

1 :应用强大的视觉增强功能,建议用于使用无损压缩编码的流

Upscaler是一种快速且轻量化的方法,用于提高输入视频的视频分辨率,同时也为图像添加细节。它着重于框架内容的几何结构,并增强其细节。除了更好的图像分辨率外,放大效果还能产生更清晰的图像。

您可以在[0 , 1]范围内设置 Upscaler 的增强参数

0 :在不增强图像的情况下提高分辨率。

1 :最大图像清晰度和清晰度视觉效果增强。

默认情况下, Upscaler 的增强参数设置为 0 。 4 。

消除网络摄像头视频噪音并减少编码瑕疵

造成或破坏最终用户体验的视频噪音的根本原因有很多。然而,两种最常见的噪声源是网络摄像头噪声和编码伪影。

网络摄像头噪声源的示例包括摄像头传感器类型、曝光或照明级别。在最终用户生成的流的环境中,如果环境照明不好或使用的相机质量较差,则情况尤其如此。这些类型的噪音在很大程度上取决于摄像头中传感器的类型。

视频流中的编码伪影是传输帧所需的带宽限制的结果。有损压缩通常包括丢弃图像中的一些纹理信息以及数据编码。有损压缩标准的常见示例是图像的 JPEG 和视频的 H 。 264 。流式传输此媒体时,每单位时间的流带宽称为比特率。

在流式传输环境中,可用于流式传输压缩内容的带宽不是恒定的。这种可变性导致编码器的比特数少于压缩帧所需的比特数,从而产生压缩伪影。压缩工件可以有多种形式,但最常见的形式之一是块状工件。

Maxine Video Effects SDK 的视频去噪功能使您能够消除网络摄像头流的噪音并保留细节,从而获得更好的最终用户体验。

此功能有两个具有强度值的变体:

0 :用于较弱的降噪效果,以确保纹理质量的保持。这是低噪音介质的理想选择。

1 :对于可能影响纹理质量的大量降噪效果。此变体可以轻松地与放大或超分辨率链接,以添加细节、增强和提高分辨率。

Maxine 伪影减少功能减少了视频通话带宽下降时遇到的块状伪影。它还减少了ringing和蚊子的噪音,同时保留了原始视频的细节。

此基于 AI 的功能针对两种模式进行了优化:

0 :保留低梯度信息,同时减少瑕疵。此模式更适合于更高比特率的视频。

1 :提供更好的输出流。此模式应适用于具有较低比特率的高质量无损视频。

允许最终用户选择虚拟背景

为了使最终用户能够在既不涉及个人又不分散注意力的环境中参加会议, Maxine Video Effects SDK 提供了虚拟背景功能。

虚拟背景功能基本上生成了一个遮罩来分割前景,在本例中,是来自流的人。您可以提供任何媒体作为背景,无论是图像还是视频。您还可以实现多个创造性应用程序,例如在同一背景中添加多个用户。例如,如果两位评论员正在谈论一个现场活动,您可以在该活动的现场提要上对这两个评论员进行分段。另一个例子是将用户分割出来,并将其覆盖在计算机的实时提要上。这样,一个或多个用户可以同时实时呈现,同时保持沉浸感。所有这些操作都使用 GPU 提供的并行性,增加了可实时处理的流的数量。

虚拟背景功能以两种模式运行:

质量模式:实现最高分割质量

性能模式:实现最快的性能

您还可以使用此功能生成具有可调模糊强度的模糊背景。

连锁视频效果功能

为了处理预压缩的视频或带有噪声的视频,以及提供更高的分辨率,我们建议将 Upscaler 链接到伪影减少或视频去噪,具体取决于使用情况。有关更多信息,请参阅探索 API 。您还可以使用 SDK 打包的UpscalePipeline 示例应用程序获得开箱即用的体验。

在 Windows 和 Linux 上使用容器和安装 Video Effects SDK

NVIDIA 通过 Docker 容器以 SDK 包的形式在 Windows 和 Linux 平台上提供 Maxine Video Effects SDK 。

使用容器的好处是高可扩展性,并且由于减少了部署和采用时间而节省了时间和成本。将容器与 Kubernetes 一起使用提供了一种健壮且易于扩展的部署策略。此外,由于容器的预包装性质,您不必担心容器内的特定安装。

在本文中,我们将重点介绍如何在容器和窗口中使用 Maxine Video Effects SDK 。继续安装之前,请确保满足所有硬件要求。

如果您对 NVIDIA 软件堆栈有丰富的经验,并且希望在裸机 Linux 系统上部署视频效果 SDK ,请参阅Maxine 开始了页面。

在 Docker 容器中使用视频效果 SDK

在容器上安装和利用高性能视频效果 SDK 及其最先进的 AI 模型需要四个步骤:

下载 NVIDIA 驱动程序

下载 Docker 和 NVIDIA -Docker用于将 GPU 暴露在容器中,如 NVIDIA 容器安装指南中所述

使用NGC API 密钥登录 NGC 注册表

拉动视频效果 SDK 容器

您需要访问 NVIDIA 图灵、 NVIDIA 伏特或 NVIDIA 安培体系结构生成数据中心 GPU s : T4 、 V100 、 A100 、 A10 或 A30 。

在 Windows 上安装视频效果 SDK

在 Windows 上安装 SDK 是一个简单的过程:

下载适用于 Windows 的 NVIDIA 图形驱动程序

下载 Microsoft Visual Studio 2017 或更高版本(确保安装构建工具。)

从开始页面下载最新的视频效果 SDK 软件包

您必须拥有 NVIDIA RTX 卡,才能从 Windows 上 Maxine Video Effects SDK 的加速吞吐量和缩短延迟中获益。要在数据中心卡(如 A100 )上运行此 SDK ,请使用 Linux 包。

示例应用程序

Video Effects SDK 附带五个示例应用程序:

AigsEffectApp

BatchEffectApp

DenoiseEffectApp

UpscalePipelineApp

VideoEffectsApp

这些应用程序包含运行 Video Effects SDK 中所有功能的示例代码。要体验这些功能,还可以构建应用程序并使用预构建的 Windows bash 脚本来运行它们。

您可以使用 SDK 的/VideoFX/share文件夹中的build_samples.sh脚本构建应用程序。如果您使用的是 Docker 容器,则这是条目文件夹。

pYYBAGJGnYGARXw1AAADlWRsi34827.png

该脚本构建示例应用程序并安装一些示例应用程序特定的依赖项。这一步 MIG 需要几分钟的时间。构建后,在构建应用程序的文件夹中,每个应用程序至少可以找到一个 bash 脚本。以下是其中一个应用程序的详细介绍:

poYBAGJGnYiAFAT4AAAuXGe_MyY782.png

poYBAGJGnZOAaIrlAAARls9y280356.png

这是一个引用示例应用程序之一VideoEffectsApp的命令行示例。您可以调整以下参数以体验不同的功能:

--effect:选择效果:工件 CTR 导出、超级资源或高级。

--mode:在两种模式之间切换: 0 、 1 。

--strength:切换放大倍增器增强倍增器: 0 , 1 。

--resolution:用于输入所选介质的目标分辨率。例如,如果要翻倍 720p 介质,请使用 1440 。

在本地运行这些效果时,您可以使用键盘控件切换效果,并通过网络摄像头提要实时体验效果。有关更多信息,请参阅示例应用程序参考。如果您对链接这些效果感兴趣,请继续阅读。最后,如果您有兴趣了解有关批处理和最大化吞吐量的更多信息,请参阅BatchEffectApp示例应用程序。

使用 API 链接多个视频效果功能

链接效果对于许多应用程序来说都非常有趣。这篇文章主要关注如何将两种效果很好地结合在一起:工件减少和放大。另一个例子是为嘈杂的网络摄像头流运行视频噪声消除和超分辨率或放大。您可以选择最适合您的用例的效果。

下面是关于 API 及其用法的更多信息。图 6 显示了使用 Video Effects SDK 函数的高级过程:

创建和配置效果

配置 CUDA 流、分配缓冲区和加载模型

加载数据并运行效果

pYYBAGJGnU6AGSWdAAB1tMCugkA994.png

图 6 。使用 Video Effects SDK API 的三个简单步骤

下面的视频介绍了这个流程,但是这个流程有很多细节,我们将在后面的文章中讨论。此外,视频还介绍了在 Maxine 虚拟背景下使用 GPU 和 API 详细信息时必须了解的基本知识。本文中的所有代码示例都可以在 SDK 示例应用程序中找到。

创建和配置效果

第一步是创建要使用的效果。在这篇文章中,我们将讨论伪影减少和放大。您可以使用NvVFX_CreateEffect函数创建指定类型的视频效果过滤器的实例。此函数需要效果选择器并返回效果句柄。效果选择器是一个字符串,您可以使用它拾取要创建的效果。

poYBAGJGncGAR5hGAAAu2bREdSY899.png

大多数视频特效 SDK 功能都有模式。如前所述,这些模式本质上是相同效果的两种不同变体。在这种情况下,伪影减少有两种模式,您可以使用NvVFX_SetU32函数设置。对于 Upscaler ,这是一个浮点值,可以使用NvVFX_SetF32函数设置为 0 到 1 之间的任何数字。

poYBAGJGndKAb9E3AAAP5fqYHU0388.png

配置 CUDA 流、分配缓冲区和加载模型

创建效果后,下面介绍如何使用 CUDA 并加载模型。 CUDA 流是一组按照发出操作的确切顺序执行的操作。记住这一点,第一步是创建这个流。您可以使用NvVFX_CudaStreamCreate函数创建此流。

pYYBAGJGnfWAQFWSAAAq9THGorA759.png

CUDA 流已经就位,下面介绍如何移动数据。在本例中,您正在移动图像帧。如果您是 GPU s 的新手,您 MIG ht 会问:“为什么我们要将数据移动到哪里?”

GPU 通常有自己的专用视频 RAMVRAM )。这就像插入系统主板的普通 RAM 一样。拥有专用 VRAM 的关键优势在于,存储在该存储器中的数据处理速度明显快于常规 RAM 上的数据。当我们说“将数据从 CPU 内存移到 GPU 内存”时,我们指的是这两种 RAM 之间的内存传输。

poYBAGJGnVCAIpA_AACOMqPd2f4909.png

图 7 。 CPU 与 GPU 缓冲区概述

在使用单一效果的典型场景中,此传输将毫不费力,需要两个 CPU 内存缓冲区和两个 GPU 缓冲区。在这两种情况下,一个用于源,另一个用于已处理的帧。

pYYBAGJGnVOALUX4AACO5Yi6rVw322.png

图 8 。在 GPU 和 CPU 上的不同内存缓冲区之间移动数据

当您链接需要两种不同图像像素布局的功能时,会增加一层复杂性。 GPU 上还必须有两个缓冲区,一个用于存储第一个效果的输出帧,另一个用于存储第二个效果的输入。图 9 显示了流程。现在不要担心函数名;我们将在本文后面的“运行效果”部分中对它们进行回顾。

pYYBAGJGnVSAKj81AADMhr1tSZs279.png

图 9 。在 GPU 和 CPU 上的不同内存缓冲区之间移动数据,同时考虑像素格式

考虑到这种高层次的理解,下面介绍如何设置管道。设置此管道有两个步骤:分配内存和指定输入和输出缓冲区。

首先,使用NvCVImage_Alloc函数为 GPU 缓冲区分配内存。

poYBAGJGnhSAZx4WAAAzW52iNqU636.png

这似乎是一个复杂的函数,但在较高的层次上,您正在为给定类型的图像帧指定所需类型的缓冲区的基本参数。例如,它是 RGBA 图像吗?每个组件都有 8 位吗?这些位是平面、粗块还是其他格式?有关详细信息,请参阅设置输入和输出图像缓冲区。

其次,使用NvVFX_SetImage函数指定为每个效果创建的输入和输出缓冲区。

poYBAGJGnh6AHdMnAAA3sl7-tGI406.png

运行效果

现在管道已经设置好,您可以继续运行效果。将帧从 CPU / GPU 源移动到相应的输入缓冲区。NvCVImage_Transfer函数可用于移动帧, NvVFX _ Run 函数用于运行效果。

第一步,似乎有多个运动部件,但只有三个主要步骤:创建效果、设置 CUDA 流以及管理数据流,最后运行效果。

所有三种 Maxine SDK- 视频效果 SDK、音频效果 SDK和增强现实 SDK的设计都类似。您可以将相同的概念应用于音频效果和增强现实 SDK ,只需稍作修改。

将视频效果 SDK 集成到您的应用程序中

如本文所示, Maxine Video Effects SDK 提供了许多 AI 功能,使您能够拍摄嘈杂的低分辨率视频,并向最终用户提供高质量的视频。此外,您可以将多个效果链接在一起,并创建视频管道。要将这些视觉效果应用于视频会议、流媒体或电信应用程序。

关于作者

About Tanay Varshney

Tanay Varshney 是 NVIDIA 的一名深入学习的技术营销工程师,负责广泛的 DL 软件产品。他拥有纽约大学计算机科学硕士学位,专注于计算机视觉、数据可视化和城市分析的横断面。

About Gordana Neskovic

Gordana Neskovic 是AI/DL产品营销团队的成员,负责 NVIDIA Maxine。在加入 NVIDIA 之前,Gordana曾在VMware、Wells Fargo、Pinterest、SFO-ITT和KLA Tencor担任过各种产品营销、数据科学家、AI架构师和工程职位。她拥有博士学位。圣塔 Clara 大学,塞尔维亚贝尔格莱德大学电气工程硕士和学士学位。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    4987

    浏览量

    103069
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4740

    浏览量

    128951
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1036

    浏览量

    45953
收藏 人收藏

    评论

    相关推荐

    PCBA加工常见质量问题揭秘:焊接不良与解决方案

    一站式PCBA智造厂家今天为大家讲讲PCBA加工中的常见质量问题有哪些?PCBA加工中的常见质量问题及解决方案。在电子制造行业中,PCBA(印刷电路板组件)贴片加工是一个至关重要的环节。这个环节中
    的头像 发表于 12-13 09:28 120次阅读

    通过Google Play SDK管理中心打造更安全、更优质的SDK

    SDK帮助 SDK 提供方提高 SDK 的性能、质量和安全性。 Google Play SDK
    的头像 发表于 11-14 10:36 283次阅读
    通过Google Play <b class='flag-5'>SDK</b>管理中心打造更安全、更优质的<b class='flag-5'>SDK</b>

    基于Arm架构的珠峰芯片加速极致视频体验

    视频编解码技术作为支撑超高清视频及泛音视频产业发展的基石,其重要性愈发凸显。H.264/AVC 是目前广泛使用的编解码标准,能够在较低的数据速率下提供高质量
    的头像 发表于 11-01 13:54 1126次阅读
    基于Arm架构的珠峰芯片加速极致<b class='flag-5'>视频</b>体验

    艾体宝干货 如何使用 IOTA 解决网络电话(VoIP)质量问题

    本文探讨了VoIP(语音通信)质量问题的常见原因,并提供了详细的故障排除指南。文章首先解释了VoIP质量问题可能涉及的网络性能、设备配置、数据包丢失等多个方面。接着,文章使用一个示例使用IOTA
    的头像 发表于 10-29 09:18 193次阅读
    艾体宝干货 如何使用 IOTA 解决网络电话(VoIP)<b class='flag-5'>质量问题</b>

    LED视频处理器对显示质量的影响

    LED视频处理器的作用在于将外部来源的图像信号转换为LED显示屏兼容的信号,LED视频处理器的品质直接影响LED屏幕的显示性能。 LED视频处理器如何在LED屏幕上实现完美显示主要包括以下几个方面
    的头像 发表于 10-16 15:57 310次阅读
    LED<b class='flag-5'>视频</b>处理器对显示<b class='flag-5'>质量</b>的影响

    使用TMS320DM6446 DVSDK测量视频质量

    电子发烧友网站提供《使用TMS320DM6446 DVSDK测量视频质量.pdf》资料免费下载
    发表于 10-16 10:40 0次下载
    使用TMS320DM6446 DVSDK测量<b class='flag-5'>视频</b><b class='flag-5'>质量</b>

    电能质量问题包括哪些现象

    在现代电力系统中,电能质量的优劣直接关系到工业生产效率、设备寿命以及日常生活质量等多个方面。常见的电能质量问题包括电压波动与闪变、谐波污染以及三相不平衡等。这些问题不仅影响设备的正常运行,还可能导致
    的头像 发表于 08-30 10:03 600次阅读

    【RTC程序设计:实时音视频权威指南】音视频的编解码压缩技术

    实现更高的压缩比和更好的图像质量。两种都是有损压缩的技术,可以通过平衡压缩比和图像质量,选择不同的质量级别。 视频的编解码也是一种用于压缩和解压缩数字
    发表于 04-28 21:04

    SD-WAN视频会议解决方案效果如何?SD-WAN如何加速视频会议?

    会议体验提供了一种新思路。本文将概述SD-WAN技术如何优化视频会议,以及其实际效果如何。 一、视频会议优化的需求 视频会议通常需要较高的网络质量
    的头像 发表于 02-28 14:34 381次阅读

    高清视频编码器在各个领域的应用案例分享

    ,该公司能够确保会议中的视频清晰流畅,从而提高会议效率和沟通效果。 优势 :高清视频编码器提供了高质量视频压缩和传输,保证了会议的实时性和
    的头像 发表于 02-20 15:13 512次阅读
    高清<b class='flag-5'>视频</b>编码器在各个领域的应用案例分享

    解码高清视频编码器:为何它成为现代视频制作的关键

    着至关重要的作用。那么,为何高清视频编码器会成为现代视频制作的关键呢? 压缩效率与视频质量 高清视频编码器采用先进的压缩算法,能够在保持
    的头像 发表于 02-20 15:12 5451次阅读
    解码高清<b class='flag-5'>视频</b>编码器:为何它成为现代<b class='flag-5'>视频</b>制作的关键

    视频光纤矩阵与传统视频传输方式的比较分析

    随着视频技术的快速发展,高清、超高清甚至8K视频的需求日益增长,传统的视频传输方式已经难以满足这些高带宽、低延迟的需求。而视频光纤矩阵作为一种新兴的
    的头像 发表于 02-19 14:58 550次阅读

    视频光纤矩阵:光纤技术与视频处理的完美融合

    将光纤技术与视频处理技术相结合,通过光纤传输高速、高质量视频信号,同时结合先进的视频处理技术,实现视频信号的增强、分析和处理。这种融合不仅
    的头像 发表于 02-19 14:56 665次阅读

    视频处理器的作用 视频处理器的功能有哪些

    视频处理器是一种专门用来处理视频信号的器件或组件。它的主要作用是对输入的视频信号进行处理和优化,从而提高画质、增强效果、提供更好的音视频体验
    的头像 发表于 02-01 17:23 3369次阅读