一代人有一代人的經(jīng)典回憶,1994年由周海媚、馬景濤、葉童主演的《神雕俠侶》曾經(jīng)風(fēng)靡一時,周海媚所詮釋的周芷若凝聚了漢水之鐘靈,峨嵋之毓秀,遇雪尤清,經(jīng)霜更艷,俘獲萬千觀眾,成為了一代人的共同記憶。
如今美人仙去,回望經(jīng)典,雪膚依然,花貌如昨,白璧微瑕之處是九十年代電視劇的分辨率有些低,本次我們利用百度自研框架PaddleGan的視頻超分SOTA算法來對九十年代電視劇進(jìn)行4K修復(fù)。
配置PaddlePaddle框架
PaddlePaddle框架需要本地環(huán)境支持CUDA和cudnn,具體請參照:聲音好聽,顏值能打,基于PaddleGAN給人工智能AI語音模型配上動態(tài)畫面(Python3.10),囿于篇幅,這里不再贅述。
接著去PaddlePaddle官網(wǎng)查看本地cudnn對應(yīng)的paddlepaddle版本:
https://www.paddlepaddle.org.cn/
輸入命令查看本地cudnn版本:
nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Tue_Mar__8_18:36:24_Pacific_Standard_Time_2022
Cuda compilation tools, release 11.6, V11.6.124
Build cuda_11.6.r11.6/compiler.31057947_0
可以看到版本是11.6
隨后安裝對應(yīng)11.6的最新paddle-gpu版本:
python -m pip install paddlepaddle-gpu==2.5.2.post116 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html
注意這里的最新版是paddlepaddle-gpu2.5.2.post116,而非之前的paddlepaddle-gpu2.4.2.post116
安裝成功后,進(jìn)行檢測:
PS C:\Users\zcxey> python
Python 3.10.11 (tags/v3.10.11:7d4cc5a, Apr 5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import paddle
>>> paddle.utils.run_check()
Running verify PaddlePaddle program ...
I1214 14:38:08.825912 4800 interpretercore.cc:237] New Executor is Running.
W1214 14:38:08.827040 4800 gpu_resources.cc:119] Please NOTE: device: 0, GPU Compute Capability: 8.9, Driver API Version: 12.3, Runtime API Version: 11.6
W1214 14:38:08.829569 4800 gpu_resources.cc:149] device: 0, cuDNN Version: 8.4.
I1214 14:38:12.468061 4800 interpreter_util.cc:518] Standalone Executor is Used.
PaddlePaddle works well on 1 GPU.
PaddlePaddle is installed successfully! Let's start deep learning with PaddlePaddle now.
說明PaddlePaddle的配置沒有問題。
隨后克隆項(xiàng)目并且進(jìn)行編譯:
git clone https://gitee.com/PaddlePaddle/PaddleGAN
cd PaddleGAN
pip3 install -v -e .
視頻修復(fù)超分模型
關(guān)于視頻修復(fù)超分模型的選擇,這里我們使用百度自研SOTA超分系列模型PP-MSVSR、業(yè)界領(lǐng)先的視頻超分模型還包括EDVR、BasicVSR,IconVSR和BasicVSR++等等。
百度自研的PP-MSVSR是一種多階段視頻超分深度架構(gòu),具有局部融合模塊、輔助損失和細(xì)化對齊模塊,以逐步細(xì)化增強(qiáng)結(jié)果。具體來說,在第一階段設(shè)計(jì)了局部融合模塊,在特征傳播之前進(jìn)行局部特征融合, 以加強(qiáng)特征傳播中跨幀特征的融合。在第二階段中引入了一個輔助損失,使傳播模塊獲得的特征保留了更多與HR空間相關(guān)的信息。在第三階段中引入了一個細(xì)化的對齊模塊,以充分利用前一階段傳播模塊的特征信息。大量實(shí)驗(yàn)證實(shí),PP-MSVSR在Vid4數(shù)據(jù)集性能優(yōu)異,僅使用 1.45M 參數(shù)PSNR指標(biāo)即可達(dá)到28.13dB。
PP-MSVSR提供兩種體積模型,開發(fā)者可根據(jù)實(shí)際場景靈活選擇:PP-MSVSR(參數(shù)量1.45M)與PP-MSVSR-L(參數(shù)量7.42)。
關(guān)于EDVR:
EDVR模型在NTIRE19視頻恢復(fù)和增強(qiáng)挑戰(zhàn)賽的四個賽道中都贏得了冠軍,并以巨大的優(yōu)勢超過了第二名。視頻超分的主要難點(diǎn)在于(1)如何在給定大運(yùn)動的情況下對齊多個幀;(2)如何有效地融合具有不同運(yùn)動和模糊的不同幀。首先,為了處理大的運(yùn)動,EDVR模型設(shè)計(jì)了一個金字塔級聯(lián)的可變形(PCD)對齊模塊,在該模塊中,從粗到精的可變形卷積被使用來進(jìn)行特征級的幀對齊。其次,EDVR使用了時空注意力(TSA)融合模塊,該模塊在時間和空間上同時應(yīng)用注意力機(jī)制,以強(qiáng)調(diào)后續(xù)恢復(fù)的重要特征。
關(guān)于BasicVSR:
BasicVSR在VSR的指導(dǎo)下重新考慮了四個基本模塊(即傳播、對齊、聚合和上采樣)的一些最重要的組件。 通過添加一些小設(shè)計(jì),重用一些現(xiàn)有組件,得到了簡潔的 BasicVSR。與許多最先進(jìn)的算法相比,BasicVSR在速度和恢復(fù)質(zhì)量方面實(shí)現(xiàn)了有吸引力的改進(jìn)。 同時,通過添加信息重新填充機(jī)制和耦合傳播方案以促進(jìn)信息聚合,BasicVSR 可以擴(kuò)展為 IconVSR,IconVSR可以作為未來 VSR 方法的強(qiáng)大基線 .
關(guān)于BasicVSR++:
BasicVSR++通過提出二階網(wǎng)格傳播和導(dǎo)流可變形對齊來重新設(shè)計(jì)BasicVSR。通過增強(qiáng)傳播和對齊來增強(qiáng)循環(huán)框架,BasicVSR++可以更有效地利用未對齊視頻幀的時空信息。 在類似的計(jì)算約束下,新組件可提高性能。特別是,BasicVSR++ 以相似的參數(shù)數(shù)量在 PSNR 方面比 BasicVSR 高0.82dB。BasicVSR++ 在NTIRE2021的視頻超分辨率和壓縮視頻增強(qiáng)挑戰(zhàn)賽中獲得三名冠軍和一名亞軍。
在當(dāng)前參數(shù)量小于6M的輕量化視頻超分模型在 UDM10 數(shù)據(jù)集上的PSNR指標(biāo)對比上,PP-MSVSR可謂是“遙遙領(lǐng)先”:
視頻修復(fù)實(shí)踐
PP-MSVSR提供兩種體積模型,開發(fā)者可根據(jù)實(shí)際場景靈活選擇:PP-MSVSR(參數(shù)量1.45M)與PP-MSVSR-L(參數(shù)量7.42)。這里推薦使用后者,因?yàn)樵摯竽P偷膮?shù)量更大,修復(fù)效果更好:
ppgan.apps.PPMSVSRLargePredictor(output='output', weight_path=None, num_frames)
參數(shù)說明:
output_path (str,可選的): 輸出的文件夾路徑,默認(rèn)值:output.
weight_path (None,可選的): 載入的權(quán)重路徑,如果沒有設(shè)置,則從云端下載默認(rèn)的權(quán)重到本地。默認(rèn)值:None.
num_frames (int,可選的): 模型輸入幀數(shù),默認(rèn)值:10.輸入幀數(shù)越大,模型超分效果越好。
隨后進(jìn)入項(xiàng)目的根目錄:
cd PaddleGAN
編寫test.py來查看視頻參數(shù):
import cv2
import imageio
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from IPython.display import HTML
import warnings
warnings.filterwarnings("ignore")
def display(driving, fps, size=(8, 6)):
fig = plt.figure(figsize=size)
ims = []
for i in range(len(driving)):
cols = []
cols.append(driving[i])
im = plt.imshow(np.concatenate(cols, axis=1), animated=True)
plt.axis('off')
ims.append([im])
video = animation.ArtistAnimation(fig, ims, interval=1000.0/fps, repeat_delay=1000)
plt.close()
return video
video_path = 'd:/倚天屠龍記.mp4'
video_frames = imageio.mimread(video_path, memtest=False)
# 獲得視頻的原分辨率
cap = cv2.VideoCapture(video_path)
fps = cap.get(cv2.CAP_PROP_FPS)
HTML(display(video_frames, fps).to_html5_video())
如此,就可以獲得視頻的原分辨率。
隨后,進(jìn)入項(xiàng)目的根目錄,執(zhí)行修復(fù)命令:
python3 tools/video-enhance.py --input d:/倚天屠龍記.mp4 \
--process_order PPMSVSR \
--output d:/output_dir \
--num_frames 100
這里使用PPMSVSR模型對該視頻進(jìn)行修復(fù),input參數(shù)表示輸入的視頻路徑;output表示處理后的視頻的存放文件夾;proccess_order 表示使用的模型和順序;num_frames 表示模型輸入幀數(shù)。
隨后展示修復(fù)后的視頻:
output_video_path = 'd:/倚天屠龍記_PPMSVSR_out.mp4'
video_frames = imageio.mimread(output_video_path, memtest=False)
# 獲得視頻的原分辨率
cap = cv2.VideoCapture(output_video_path)
fps = cap.get(cv2.CAP_PROP_FPS)
HTML(display(video_frames, fps, size=(16, 12)).to_html5_video())
修復(fù)效果:
除了視頻超分外,PaddleGAN中還提供了視頻上色與補(bǔ)幀的功能,配合上述的PP-MSVSR一起使用,即可實(shí)現(xiàn)視頻清晰度提高、色彩豐富、播放更加行云流水。
補(bǔ)幀模型DAIN
DAIN 模型通過探索深度的信息來顯式檢測遮擋。并且開發(fā)了一個深度感知的流投影層來合成中間流。在視頻補(bǔ)幀方面有較好的效果:
ppgan.apps.DAINPredictor(
output_path='output',
weight_path=None,
time_step=None,
use_gpu=True,
remove_duplicates=False)
參數(shù):
output_path (str,可選的): 輸出的文件夾路徑,默認(rèn)值:output.
weight_path (None,可選的): 載入的權(quán)重路徑,如果沒有設(shè)置,則從云端下載默認(rèn)的權(quán)重到本地。默認(rèn)值:None。
time_step (int): 補(bǔ)幀的時間系數(shù),如果設(shè)置為0.5,則原先為每秒30幀的視頻,補(bǔ)幀后變?yōu)槊棵?0幀。
remove_duplicates (bool,可選的): 是否刪除重復(fù)幀,默認(rèn)值:False.
上色模型DeOldifyPredictor
DeOldify 采用自注意力機(jī)制的生成對抗網(wǎng)絡(luò),生成器是一個U-NET結(jié)構(gòu)的網(wǎng)絡(luò)。在圖像的上色方面有著較好的效果:
ppgan.apps.DeOldifyPredictor(output='output', weight_path=None, render_factor=32)
參數(shù):文章來源:http://www.zghlxwxcb.cn/news/detail-760182.html
output_path (str,可選的): 輸出的文件夾路徑,默認(rèn)值:output.
weight_path (None,可選的): 載入的權(quán)重路徑,如果沒有設(shè)置,則從云端下載默認(rèn)的權(quán)重到本地。默認(rèn)值:None。
render_factor (int): 會將該參數(shù)乘以16后作為輸入幀的resize的值,如果該值設(shè)置為32, 則輸入幀會resize到(32 * 16, 32 * 16)的尺寸再輸入到網(wǎng)絡(luò)中。
結(jié)語
AI技術(shù)通過分析視頻中的圖像信息并應(yīng)用圖像處理和修復(fù)算法,自動修復(fù)視頻中的缺陷、噪聲、模糊等問題,以提高視頻的觀看質(zhì)量和可用性,配合語音克隆等技術(shù),從而讓演員在某種程度上實(shí)現(xiàn)“數(shù)字永生”。文章來源地址http://www.zghlxwxcb.cn/news/detail-760182.html
到了這里,關(guān)于衡蘭芷若成絕響,人間不見周海媚(4k修復(fù)基于PaddleGan)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!