由于流行病相關(guān)的關(guān)閉和在家辦公的政策,視頻會(huì)議、音頻和視頻流以及電信最近出現(xiàn)了爆炸性增長(zhǎng)。企業(yè)、教育機(jī)構(gòu)和公共部門機(jī)構(gòu)對(duì)虛擬協(xié)作和內(nèi)容創(chuàng)建應(yīng)用程序的需求正在飆升。在線交流的關(guān)鍵部分是視頻流,無(wú)論是簡(jiǎn)單的視頻通話還是面向廣大受眾的流媒體內(nèi)容。同時(shí),這些流是在線通信中網(wǎng)絡(luò)帶寬最密集的部分,通常伴隨著噪聲和偽影。
為了解決這些視頻質(zhì)量挑戰(zhàn), NVIDIA Maxine 視頻效果 SDK提供了基于人工智能的視覺功能,將嘈雜、低分辨率的視頻流轉(zhuǎn)換為令人愉悅的用戶體驗(yàn)。這篇文章演示了如何使用標(biāo)準(zhǔn)網(wǎng)絡(luò)攝像頭輸入運(yùn)行這些效果,并輕松地將它們集成到視頻會(huì)議和內(nèi)容創(chuàng)建管道中。
添加細(xì)節(jié)并提高分辨率
對(duì)于因圖像幀的低分辨率而導(dǎo)致的低視頻質(zhì)量, Maxine video Effects SDK 提供了兩種基于人工智能的最先進(jìn)視覺效果:超分辨率和放大。
超分辨率從提供的輸入圖像生成具有更高分辨率和更好紋理的優(yōu)質(zhì)圖像。它提供了全面的增強(qiáng)功能,同時(shí)保留了內(nèi)容。這種視覺效果最好用于無(wú)損壓縮數(shù)據(jù),如 H 。 264 。您可以使用此功能將介質(zhì)縮放 1 。 33 倍、 1 。 5 倍、 2 倍、 3 倍和 4 倍。
要調(diào)整超分辨率效果,請(qǐng)選擇其模式:
0 :建議用于包含編碼工件的流和使用有損壓縮編碼的流。
1 :應(yīng)用強(qiáng)大的視覺增強(qiáng)功能,建議用于使用無(wú)損壓縮編碼的流
Upscaler是一種快速且輕量化的方法,用于提高輸入視頻的視頻分辨率,同時(shí)也為圖像添加細(xì)節(jié)。它著重于框架內(nèi)容的幾何結(jié)構(gòu),并增強(qiáng)其細(xì)節(jié)。除了更好的圖像分辨率外,放大效果還能產(chǎn)生更清晰的圖像。
您可以在[0 , 1]范圍內(nèi)設(shè)置 Upscaler 的增強(qiáng)參數(shù):
0 :在不增強(qiáng)圖像的情況下提高分辨率。
1 :最大圖像清晰度和清晰度視覺效果增強(qiáng)。
默認(rèn)情況下, Upscaler 的增強(qiáng)參數(shù)設(shè)置為 0 。 4 。
消除網(wǎng)絡(luò)攝像頭視頻噪音并減少編碼瑕疵
造成或破壞最終用戶體驗(yàn)的視頻噪音的根本原因有很多。然而,兩種最常見的噪聲源是網(wǎng)絡(luò)攝像頭噪聲和編碼偽影。
網(wǎng)絡(luò)攝像頭噪聲源的示例包括攝像頭傳感器類型、曝光或照明級(jí)別。在最終用戶生成的流的環(huán)境中,如果環(huán)境照明不好或使用的相機(jī)質(zhì)量較差,則情況尤其如此。這些類型的噪音在很大程度上取決于攝像頭中傳感器的類型。
視頻流中的編碼偽影是傳輸幀所需的帶寬限制的結(jié)果。有損壓縮通常包括丟棄圖像中的一些紋理信息以及數(shù)據(jù)編碼。有損壓縮標(biāo)準(zhǔn)的常見示例是圖像的 JPEG 和視頻的 H 。 264 。流式傳輸此媒體時(shí),每單位時(shí)間的流帶寬稱為比特率。
在流式傳輸環(huán)境中,可用于流式傳輸壓縮內(nèi)容的帶寬不是恒定的。這種可變性導(dǎo)致編碼器的比特?cái)?shù)少于壓縮幀所需的比特?cái)?shù),從而產(chǎn)生壓縮偽影。壓縮工件可以有多種形式,但最常見的形式之一是塊狀工件。
Maxine Video Effects SDK 的視頻去噪功能使您能夠消除網(wǎng)絡(luò)攝像頭流的噪音并保留細(xì)節(jié),從而獲得更好的最終用戶體驗(yàn)。
此功能有兩個(gè)具有強(qiáng)度值的變體:
0 :用于較弱的降噪效果,以確保紋理質(zhì)量的保持。這是低噪音介質(zhì)的理想選擇。
1 :對(duì)于可能影響紋理質(zhì)量的大量降噪效果。此變體可以輕松地與放大或超分辨率鏈接,以添加細(xì)節(jié)、增強(qiáng)和提高分辨率。
Maxine 偽影減少功能減少了視頻通話帶寬下降時(shí)遇到的塊狀偽影。它還減少了ringing和蚊子的噪音,同時(shí)保留了原始視頻的細(xì)節(jié)。
此基于 AI 的功能針對(duì)兩種模式進(jìn)行了優(yōu)化:
0 :保留低梯度信息,同時(shí)減少瑕疵。此模式更適合于更高比特率的視頻。
1 :提供更好的輸出流。此模式應(yīng)適用于具有較低比特率的高質(zhì)量無(wú)損視頻。
允許最終用戶選擇虛擬背景
為了使最終用戶能夠在既不涉及個(gè)人又不分散注意力的環(huán)境中參加會(huì)議, Maxine Video Effects SDK 提供了虛擬背景功能。
虛擬背景功能基本上生成了一個(gè)遮罩來(lái)分割前景,在本例中,是來(lái)自流的人。您可以提供任何媒體作為背景,無(wú)論是圖像還是視頻。您還可以實(shí)現(xiàn)多個(gè)創(chuàng)造性應(yīng)用程序,例如在同一背景中添加多個(gè)用戶。例如,如果兩位評(píng)論員正在談?wù)撘粋€(gè)現(xiàn)場(chǎng)活動(dòng),您可以在該活動(dòng)的現(xiàn)場(chǎng)提要上對(duì)這兩個(gè)評(píng)論員進(jìn)行分段。另一個(gè)例子是將用戶分割出來(lái),并將其覆蓋在計(jì)算機(jī)的實(shí)時(shí)提要上。這樣,一個(gè)或多個(gè)用戶可以同時(shí)實(shí)時(shí)呈現(xiàn),同時(shí)保持沉浸感。所有這些操作都使用 GPU 提供的并行性,增加了可實(shí)時(shí)處理的流的數(shù)量。
虛擬背景功能以兩種模式運(yùn)行:
質(zhì)量模式:實(shí)現(xiàn)最高分割質(zhì)量
性能模式:實(shí)現(xiàn)最快的性能
您還可以使用此功能生成具有可調(diào)模糊強(qiáng)度的模糊背景。
連鎖視頻效果功能
為了處理預(yù)壓縮的視頻或帶有噪聲的視頻,以及提供更高的分辨率,我們建議將 Upscaler 鏈接到偽影減少或視頻去噪,具體取決于使用情況。有關(guān)更多信息,請(qǐng)參閱探索 API 。您還可以使用 SDK 打包的UpscalePipeline 示例應(yīng)用程序獲得開箱即用的體驗(yàn)。
在 Windows 和 Linux 上使用容器和安裝 Video Effects SDK
NVIDIA 通過(guò) Docker 容器以 SDK 包的形式在 Windows 和 Linux 平臺(tái)上提供 Maxine Video Effects SDK 。
使用容器的好處是高可擴(kuò)展性,并且由于減少了部署和采用時(shí)間而節(jié)省了時(shí)間和成本。將容器與 Kubernetes 一起使用提供了一種健壯且易于擴(kuò)展的部署策略。此外,由于容器的預(yù)包裝性質(zhì),您不必?fù)?dān)心容器內(nèi)的特定安裝。
在本文中,我們將重點(diǎn)介紹如何在容器和窗口中使用 Maxine Video Effects SDK 。繼續(xù)安裝之前,請(qǐng)確保滿足所有硬件要求。
如果您對(duì) NVIDIA 軟件堆棧有豐富的經(jīng)驗(yàn),并且希望在裸機(jī) Linux 系統(tǒng)上部署視頻效果 SDK ,請(qǐng)參閱Maxine 開始了頁(yè)面。
在 Docker 容器中使用視頻效果 SDK
在容器上安裝和利用高性能視頻效果 SDK 及其最先進(jìn)的 AI 模型需要四個(gè)步驟:
下載 NVIDIA 驅(qū)動(dòng)程序
下載 Docker 和 NVIDIA -Docker用于將 GPU 暴露在容器中,如 NVIDIA 容器安裝指南中所述
使用NGC API 密鑰登錄 NGC 注冊(cè)表
拉動(dòng)視頻效果 SDK 容器
您需要訪問(wèn) NVIDIA 圖靈、 NVIDIA 伏特或 NVIDIA 安培體系結(jié)構(gòu)生成數(shù)據(jù)中心 GPU s : T4 、 V100 、 A100 、 A10 或 A30 。
在 Windows 上安裝視頻效果 SDK
在 Windows 上安裝 SDK 是一個(gè)簡(jiǎn)單的過(guò)程:
下載適用于 Windows 的 NVIDIA 圖形驅(qū)動(dòng)程序
下載 Microsoft Visual Studio 2017 或更高版本(確保安裝構(gòu)建工具。)
從開始頁(yè)面下載最新的視頻效果 SDK 軟件包
您必須擁有 NVIDIA RTX 卡,才能從 Windows 上 Maxine Video Effects SDK 的加速吞吐量和縮短延遲中獲益。要在數(shù)據(jù)中心卡(如 A100 )上運(yùn)行此 SDK ,請(qǐng)使用 Linux 包。
示例應(yīng)用程序
Video Effects SDK 附帶五個(gè)示例應(yīng)用程序:
AigsEffectApp
BatchEffectApp
DenoiseEffectApp
UpscalePipelineApp
VideoEffectsApp
這些應(yīng)用程序包含運(yùn)行 Video Effects SDK 中所有功能的示例代碼。要體驗(yàn)這些功能,還可以構(gòu)建應(yīng)用程序并使用預(yù)構(gòu)建的 Windows bash 腳本來(lái)運(yùn)行它們。
您可以使用 SDK 的/VideoFX/share文件夾中的build_samples.sh腳本構(gòu)建應(yīng)用程序。如果您使用的是 Docker 容器,則這是條目文件夾。
該腳本構(gòu)建示例應(yīng)用程序并安裝一些示例應(yīng)用程序特定的依賴項(xiàng)。這一步 MIG 需要幾分鐘的時(shí)間。構(gòu)建后,在構(gòu)建應(yīng)用程序的文件夾中,每個(gè)應(yīng)用程序至少可以找到一個(gè) bash 腳本。以下是其中一個(gè)應(yīng)用程序的詳細(xì)介紹:
這是一個(gè)引用示例應(yīng)用程序之一VideoEffectsApp的命令行示例。您可以調(diào)整以下參數(shù)以體驗(yàn)不同的功能:
--effect:選擇效果:工件 CTR 導(dǎo)出、超級(jí)資源或高級(jí)。
--mode:在兩種模式之間切換: 0 、 1 。
--strength:切換放大倍增器增強(qiáng)倍增器: 0 , 1 。
--resolution:用于輸入所選介質(zhì)的目標(biāo)分辨率。例如,如果要翻倍 720p 介質(zhì),請(qǐng)使用 1440 。
在本地運(yùn)行這些效果時(shí),您可以使用鍵盤控件切換效果,并通過(guò)網(wǎng)絡(luò)攝像頭提要實(shí)時(shí)體驗(yàn)效果。有關(guān)更多信息,請(qǐng)參閱示例應(yīng)用程序參考。如果您對(duì)鏈接這些效果感興趣,請(qǐng)繼續(xù)閱讀。最后,如果您有興趣了解有關(guān)批處理和最大化吞吐量的更多信息,請(qǐng)參閱BatchEffectApp示例應(yīng)用程序。
使用 API 鏈接多個(gè)視頻效果功能
鏈接效果對(duì)于許多應(yīng)用程序來(lái)說(shuō)都非常有趣。這篇文章主要關(guān)注如何將兩種效果很好地結(jié)合在一起:工件減少和放大。另一個(gè)例子是為嘈雜的網(wǎng)絡(luò)攝像頭流運(yùn)行視頻噪聲消除和超分辨率或放大。您可以選擇最適合您的用例的效果。
下面是關(guān)于 API 及其用法的更多信息。圖 6 顯示了使用 Video Effects SDK 函數(shù)的高級(jí)過(guò)程:
創(chuàng)建和配置效果
配置 CUDA 流、分配緩沖區(qū)和加載模型
加載數(shù)據(jù)并運(yùn)行效果
圖 6 。使用 Video Effects SDK API 的三個(gè)簡(jiǎn)單步驟
下面的視頻介紹了這個(gè)流程,但是這個(gè)流程有很多細(xì)節(jié),我們將在后面的文章中討論。此外,視頻還介紹了在 Maxine 虛擬背景下使用 GPU 和 API 詳細(xì)信息時(shí)必須了解的基本知識(shí)。本文中的所有代碼示例都可以在 SDK 示例應(yīng)用程序中找到。
創(chuàng)建和配置效果
第一步是創(chuàng)建要使用的效果。在這篇文章中,我們將討論偽影減少和放大。您可以使用NvVFX_CreateEffect函數(shù)創(chuàng)建指定類型的視頻效果過(guò)濾器的實(shí)例。此函數(shù)需要效果選擇器并返回效果句柄。效果選擇器是一個(gè)字符串,您可以使用它拾取要?jiǎng)?chuàng)建的效果。
大多數(shù)視頻特效 SDK 功能都有模式。如前所述,這些模式本質(zhì)上是相同效果的兩種不同變體。在這種情況下,偽影減少有兩種模式,您可以使用NvVFX_SetU32函數(shù)設(shè)置。對(duì)于 Upscaler ,這是一個(gè)浮點(diǎn)值,可以使用NvVFX_SetF32函數(shù)設(shè)置為 0 到 1 之間的任何數(shù)字。
配置 CUDA 流、分配緩沖區(qū)和加載模型
創(chuàng)建效果后,下面介紹如何使用 CUDA 并加載模型。 CUDA 流是一組按照發(fā)出操作的確切順序執(zhí)行的操作。記住這一點(diǎn),第一步是創(chuàng)建這個(gè)流。您可以使用NvVFX_CudaStreamCreate函數(shù)創(chuàng)建此流。
CUDA 流已經(jīng)就位,下面介紹如何移動(dòng)數(shù)據(jù)。在本例中,您正在移動(dòng)圖像幀。如果您是 GPU s 的新手,您 MIG ht 會(huì)問(wèn):“為什么我們要將數(shù)據(jù)移動(dòng)到哪里?”
GPU 通常有自己的專用視頻 RAM ( VRAM )。這就像插入系統(tǒng)主板的普通 RAM 一樣。擁有專用 VRAM 的關(guān)鍵優(yōu)勢(shì)在于,存儲(chǔ)在該存儲(chǔ)器中的數(shù)據(jù)處理速度明顯快于常規(guī) RAM 上的數(shù)據(jù)。當(dāng)我們說(shuō)“將數(shù)據(jù)從 CPU 內(nèi)存移到 GPU 內(nèi)存”時(shí),我們指的是這兩種 RAM 之間的內(nèi)存?zhèn)鬏敗?/p>
圖 7 。 CPU 與 GPU 緩沖區(qū)概述
在使用單一效果的典型場(chǎng)景中,此傳輸將毫不費(fèi)力,需要兩個(gè) CPU 內(nèi)存緩沖區(qū)和兩個(gè) GPU 緩沖區(qū)。在這兩種情況下,一個(gè)用于源,另一個(gè)用于已處理的幀。
圖 8 。在 GPU 和 CPU 上的不同內(nèi)存緩沖區(qū)之間移動(dòng)數(shù)據(jù)
當(dāng)您鏈接需要兩種不同圖像像素布局的功能時(shí),會(huì)增加一層復(fù)雜性。 GPU 上還必須有兩個(gè)緩沖區(qū),一個(gè)用于存儲(chǔ)第一個(gè)效果的輸出幀,另一個(gè)用于存儲(chǔ)第二個(gè)效果的輸入。圖 9 顯示了流程。現(xiàn)在不要擔(dān)心函數(shù)名;我們將在本文后面的“運(yùn)行效果”部分中對(duì)它們進(jìn)行回顧。
圖 9 。在 GPU 和 CPU 上的不同內(nèi)存緩沖區(qū)之間移動(dòng)數(shù)據(jù),同時(shí)考慮像素格式
考慮到這種高層次的理解,下面介紹如何設(shè)置管道。設(shè)置此管道有兩個(gè)步驟:分配內(nèi)存和指定輸入和輸出緩沖區(qū)。
首先,使用NvCVImage_Alloc函數(shù)為 GPU 緩沖區(qū)分配內(nèi)存。
這似乎是一個(gè)復(fù)雜的函數(shù),但在較高的層次上,您正在為給定類型的圖像幀指定所需類型的緩沖區(qū)的基本參數(shù)。例如,它是 RGBA 圖像嗎?每個(gè)組件都有 8 位嗎?這些位是平面、粗塊還是其他格式?有關(guān)詳細(xì)信息,請(qǐng)參閱設(shè)置輸入和輸出圖像緩沖區(qū)。
其次,使用NvVFX_SetImage函數(shù)指定為每個(gè)效果創(chuàng)建的輸入和輸出緩沖區(qū)。
運(yùn)行效果
現(xiàn)在管道已經(jīng)設(shè)置好,您可以繼續(xù)運(yùn)行效果。將幀從 CPU / GPU 源移動(dòng)到相應(yīng)的輸入緩沖區(qū)。NvCVImage_Transfer函數(shù)可用于移動(dòng)幀, NvVFX _ Run 函數(shù)用于運(yùn)行效果。
第一步,似乎有多個(gè)運(yùn)動(dòng)部件,但只有三個(gè)主要步驟:創(chuàng)建效果、設(shè)置 CUDA 流以及管理數(shù)據(jù)流,最后運(yùn)行效果。
所有三種 Maxine SDK- 視頻效果 SDK、音頻效果 SDK和增強(qiáng)現(xiàn)實(shí) SDK的設(shè)計(jì)都類似。您可以將相同的概念應(yīng)用于音頻效果和增強(qiáng)現(xiàn)實(shí) SDK ,只需稍作修改。
將視頻效果 SDK 集成到您的應(yīng)用程序中
如本文所示, Maxine Video Effects SDK 提供了許多 AI 功能,使您能夠拍攝嘈雜的低分辨率視頻,并向最終用戶提供高質(zhì)量的視頻。此外,您可以將多個(gè)效果鏈接在一起,并創(chuàng)建視頻管道。要將這些視覺效果應(yīng)用于視頻會(huì)議、流媒體或電信應(yīng)用程序。
關(guān)于作者
About Tanay Varshney
Tanay Varshney 是 NVIDIA 的一名深入學(xué)習(xí)的技術(shù)營(yíng)銷工程師,負(fù)責(zé)廣泛的 DL 軟件產(chǎn)品。他擁有紐約大學(xué)計(jì)算機(jī)科學(xué)碩士學(xué)位,專注于計(jì)算機(jī)視覺、數(shù)據(jù)可視化和城市分析的橫斷面。
About Gordana Neskovic
Gordana Neskovic 是AI/DL產(chǎn)品營(yíng)銷團(tuán)隊(duì)的成員,負(fù)責(zé) NVIDIA Maxine。在加入 NVIDIA 之前,Gordana曾在VMware、Wells Fargo、Pinterest、SFO-ITT和KLA Tencor擔(dān)任過(guò)各種產(chǎn)品營(yíng)銷、數(shù)據(jù)科學(xué)家、AI架構(gòu)師和工程職位。她擁有博士學(xué)位。圣塔 Clara 大學(xué),塞爾維亞貝爾格萊德大學(xué)電氣工程碩士和學(xué)士學(xué)位。
審核編輯:郭婷
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4940瀏覽量
102817 -
gpu
+關(guān)注
關(guān)注
28文章
4701瀏覽量
128708 -
SDK
+關(guān)注
關(guān)注
3文章
1026瀏覽量
45779
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論