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