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:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/555103.html
標籤:其他
上一篇:Apache Http Server 路徑穿越漏洞復現(CVE-2021-41773)
下一篇:返回列表
