歡迎您光臨本站 註冊首頁

AI 復原 100 年前的京城老影片,靠這三個開源工具

←手機掃碼閱讀     admin @ 2020-05-20 , reply:0

近日,一段拍攝於 100 年前的老北京城影像被央視轉發,在微博上火了。據瞭解,該影片出自一位 B 站的 UP 主大谷的遊戲創作小屋。作者大谷利用 AI 技術,把一段拍攝於 1920 年的北京城黑白影片,渲染成了高畫質流暢的彩色影片,配以頗具地方特色的 BGM,還原了百年前老北京城的民風民俗,頗有內味。

據大谷介紹,這部拍攝於百年前的黑白影片由於年代久遠,影片畫質有很多噪點,幀數、解析度都很低。於是他使用了三款開源的 AI 工具來對影片進行處理,分別是:

  • DAIN,對影片進行補幀處理,提高影片流暢度
  • ESRGAN,對影片進行超解析度處理,提高影片清晰度
  • DeOldify,對影片進行上色處理

下面就讓我們來瞭解一下這三款影片修復常用的 AI 工具,感興趣的朋友也可以學著用起來,自己處理老舊影片哦。 

影片補幀工具 DAIN

幀數 (FPS)對於一部影片的流暢度來說影響很大,在正常播放速度下,低於 30 FPS 的影片會讓人覺得卡頓,高於 60 FPS 的話肉眼則分辨不出區別。幀數越高的影片帶來的流暢度一定是更高的,尤其是在慢鏡頭下,差別尤為明顯:

上圖來自另一 AI 補幀工具 SUPER SLOMO 的示例,將原片 30 FPS 的汽車甩尾鏡頭放慢 8 倍後,實際 FPS 不足 4 FPS,肉眼可見的卡頓。而透過 AI 補幀技術,能夠將慢放後的影片維持在 240 FPS,流暢程度可見一斑。

通常來說,補幀的核心述求是在兩個連續幀之間插入中間幀,從而提高影片的 FPS,而補幀工具需要解決的問題就是如何透過 AI 演算法自動生成中間幀。DAIN 全稱 Depth-Aware Video Frame Interpolation,即基於深度感知的影片幀插值工具。DAIN 團隊提出了深度感知幀內插模型,開發了一個深度感知流投影層來生成中間幀。

測試環境

  • Ubuntu(Ubuntu =16.04.5 LTS )
  • Python:Anaconda3 = 4.1.1 & Python= 3.6.8 
  • Cuda 和 Cudnn:Cuda = 9.0 & Cudnn = 7.0 
  • Pythorch:定製的深度感知流投影和其他層需要 Pythorch 中的 ATen API =1.0.0
  • GCC:編譯 PyTorch 1.0.0 擴充套件檔案(.c/.cu)需要 GCC=4.9.1 和 nvcc=9.0 編譯器
  • GPU:NVIDIA GPU(作者使用的是 Titan X(Pascal)計算=6.1,支援 compute_50/52/60/61 裝置)

安裝使用

下載資料庫:


 $ git clone https://github.com/baowenbo/DAIN.git

在構建Pytorch擴充套件之前,請確保您具有pytorch >= 1.0.0


 $ python -c "import torch; print(torch.__version__)"

生成 PyTorch 擴充套件:


 $ cd DAIN
 $ cd my_package 
 $ ./build.sh

生成 PWCNet 所需的 Correlation 包:


 $ cd ../PWCNet/correlation_package_pytorch1_0
 $ ./build.sh

測試預訓練模型:

製作模型權重目錄和 Middlebury 資料集目錄:


 $ cd DAIN
 $ mkdir model_weights
 $ mkdir MiddleBurySet

下載預訓練的模型,


 $ cd model_weights
 $ wget http://vllab1.ucmerced.edu/~wenbobao/DAIN/best.pth

和 Middlebury 資料集:


 $ cd ../MiddleBurySet
 $ wget http://vision.middlebury.edu/flow/data/comp/zip/other-color-allframes.zip
 $ unzip other-color-allframes.zip
 $ wget http://vision.middlebury.edu/flow/data/comp/zip/other-gt-interp.zip
 $ unzip other-gt-interp.zip
 $ cd ..

預安裝:


 $ cd PWCNet/correlation_package_pytorch1_0
 $ sh build.sh
 $ cd ../my_package
 $ sh build.sh
 $ cd ..

下載結果

用以下方法下載插值結果:


 $ wget http://vllab1.ucmerced.edu/~wenbobao/DAIN/UCF101_DAIN.zip
 $ wget http://vllab1.ucmerced.edu/~wenbobao/DAIN/Vimeo90K_interp_DAIN.zip
 $ wget http://vllab1.ucmerced.edu/~wenbobao/DAIN/Middlebury_eval_DAIN.zip
 $ wget http://vllab1.ucmerced.edu/~wenbobao/DAIN/Middlebury_other_DAIN.zip

慢動作生成:

此模型完全有能力在對網路體系結構進行少量修改的情況下產生慢動作效果。透過指定time_step = 0.25以生成 x4 慢動作效果來執行以下程式碼:


 $ CUDA_VISIBLE_DEVICES=0 python demo_MiddleBury_slowmotion.py --netName DAIN_slowmotion --time_step 0.25

或設定time_step0.1250.1如下


 $ CUDA_VISIBLE_DEVICES=0 python demo_MiddleBury_slowmotion.py --netName DAIN_slowmotion --time_step 0.125
 $ CUDA_VISIBLE_DEVICES=0 python demo_MiddleBury_slowmotion.py --netName DAIN_slowmotion --time_step 0.1

分別生成 x8 和 x10 慢動作。或者你想用 x100 慢動作拍些好玩的東西也沒問題。


 $ CUDA_VISIBLE_DEVICES=0 python demo_MiddleBury_slowmotion.py --netName DAIN_slowmotion --time_step 0.01

可透過以下方法建立gif動畫:


 $ cd MiddleBurySet/other-result-author/[random number]/Beanbags
 $ convert -delay 1 *.png -loop 0 Beanbags.gif //1*10ms delay 

祝玩得開心!

DAIN 的詳細介紹:點選檢視

DAIN 的下載地址:點選下載

 

解析度提升工具 ESRGAN

我們知道,解析度對於影象的清晰度將產生直接的影響。一張低解析度的小圖片,如果我們直接放大的話很多細節將變成“馬賽克”,這點相信大家都很有經驗。因此,直接採用普通的插值演算法進行圖片放大的話,圖中物體的邊緣就會變得模糊,而超解析度演算法就是為瞭解決這種問題。

ESRGAN 是一種增強型超解析度生成對抗網路,能透過 AI 在影象超解析度期間生成真實紋理,實現影象解析度的提升,效果如下圖所示: 

測試環境

安裝使用

1.克隆此 github 儲存庫。


 git clone https://github.com/xinntao/ESRGAN
 cd ESRGAN

2.將低解析度影象放置在./LR資料夾中。(有兩個示例影象-狒狒和漫畫)。

3.從 Google 雲端硬碟百度雲端硬碟下載經過預訓練的模型。將模型放在./models

4.作者提供了兩種具有高感知質量和高 PSNR 效能的模型。執行測試:提供 ESRGAN模型和 RRDB_PSNR 模型,可以配置test.py


 python test.py

5.結果在./results資料夾中。

ESRGAN 的詳細介紹:點選檢視

ESRGAN 的下載地址:點選下載

 

黑白影象著色工具 DeOldify

DeOldify 是用於著色和恢復舊影象及影片的深度學習專案。它採用了 NoGAN 這樣一種新型的、高效的影象到影象的 GAN 訓練方法,細節處理效果更好,渲染也更逼真:

  

NoGAN 是作者開發的一種新型 GAN 訓練模型,用於解決之前 DeOldify 模型中的一些關鍵問題。NoGAN 訓練結合了 GAN 訓練的優點(好看的色彩),同時消除了令人討厭的副作用(如影片中的閃爍物體)。影片由孤立的影象生成,而不新增任何時間建模。該過程執行 30-60 分鐘 “NoGAN” 訓練的 GAN 部分,每次使用 1% 至 3% 的影象網路(imagenet)資料。然後,與靜止影象著色一樣,在重建影片之前對各個幀進行“去舊化”(DeOldify),即使在移動場景中的渲染也非常一致:

目前,DeOldify 有三種型號可供選擇,每一種都有關鍵優勢和劣勢,因此具有不同的用例。三種型號分別為:Artistic(藝術型)、Stable(穩定型)、Video(影片專用)。

測試環境

  • Linux
  • Fast.AI = 1.0.51(及其依賴項)。如果使用任何更高版本,你會在渲染中看到網格工件,而tensorboard 會出現故障。
  • PyTorch = 1.0.1
  • Jupyter Lab conda 安裝

 -c conda forge jupyterlab
  • Tensorboard(即安裝 Tensorflow)和 TensorboardX。非必要,但 FastAI 現在提供了對 TF的原生支援,很好用。

 prereqs:conda install-c anaconda tensorflow gpu
 pip install tensorboardX
  • ImageNet,是一個很好的資料集,用於訓練。
  • GPU:要求不高。(單獨著色用普通集顯都行,大規模訓練的話還是建議上好一點的顯示卡)

安裝使用

開啟命令列並導航到要安裝的根資料夾,輸入以下命令:


 git clone https://github.com/jantic/DeOldify.git DeOldify
 cd DeOldify
 conda env create -f environment.yml

然後開始使用這些命令執行:


 source activate deoldify
 jupyter lab

透過控制檯中提供的 URL 開始在 Jupyter Lab 中執行。

DeOldify 詳細介紹:點選瞭解

DeOldify 下載地址:點選下載

想要自己動手把黑白老影片變成彩色高畫質影片的朋友,現在就可以行動起來啦。

 

[admin ]

來源:OsChina
連結:https://www.oschina.net/news/115801/use-ai-to-recover-images
AI 復原 100 年前的京城老影片,靠這三個開源工具已經有239次圍觀

http://coctec.com/news/all/show-post-235121.html