首頁  >  文章  >  科技週邊  >  AI去除馬賽克,可還行?

AI去除馬賽克,可還行?

WBOY
WBOY轉載
2023-04-09 19:11:035286瀏覽

哈嘍,大家好。

你有沒有想過用 AI 技巧去除馬賽克?

仔細想想這個問題還挺難的,因為我們之前使用的 AI 技術,不管是人臉辨識還是OCR識別,起碼人工能辨識出來。但如果給你一張打上馬賽克的圖片,你能把它復原嗎?

AI去除馬賽克,可還行?

顯然是很難的。如果人都無法復原,又怎能教導電腦去復原呢?

還記得前幾天我寫的一篇《用AI生成頭像》文章嗎。在那篇文章中,我們訓練了一個DCGAN模型,它可以從任何隨機數字產生一個影像。

AI去除馬賽克,可還行?

隨機數字作為像素產生的雜訊圖

AI去除馬賽克,可還行?

#模型從隨機數產生正常頭像

DCGAN包含生成器模型和判別器模型兩個模型組成,生成器模型的作用是從一組隨機數產生一個圖片,圖片與訓練樣本越接近越好,從而騙過判別器模型,而判別器模型則要不斷提升鑑別能力,防止生成器模型產生的圖片蒙混過關。

如果我們把上述生成器模型的輸入由隨機數改成有馬賽克的圖片,輸出則是不帶馬賽克的圖片。是不是就可以訓練出一個去除馬賽克的模型了。

接下來,跟大家分享下如何訓練去除馬賽克模型,然後再分享一個現成的工具,大家可以下載下來直接用,試試看效果。

1. Pix2pix CycleGAN

這裡我們不用上面介紹的DCGAN,而是用Pix2pix和CycleGAN兩個更強大的模型,分別來訓練。

Pix2pix是基於GAN的圖像翻譯演算法,從馬賽克圖片到正常圖片,本質上跟一種語言到另一種語言的轉換類似,都是翻譯的過程。

AI去除馬賽克,可還行?

Pix2pix模型翻譯

而CycleGAN的實現的效果,簡單來說就是將不同域之間的圖像轉換,而本身的形狀保持不變。

AI去除馬賽克,可還行?

CycleGAN模型

文章為我們提供了資料集和完整的訓練過程,能夠幫助我們以較低的成本訓練模型。

首先,下載資料集

AI去除馬賽克,可還行?

資料集

共 654M。

然後,下載Paddle預訓練模型

AI去除馬賽克,可還行?

預訓練模型

最後,分別訓練Pix2pix和CycleGAN模型。

Pix2pix 模型

python gan<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">/</span>infer<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">.py</span> <br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--init_model output/pix2pix/checkpoints/110/ </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--dataset_dir /home/aistudio/ </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--image_size 256 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--n_samples 1 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--crop_size 256 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--model_net Pix2pix </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--net_G unet_256 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--test_list /home/aistudio/test_list.txt </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--output ./infer_result/pix2pix/</span>

CycleGAN 模型

python gan<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">/</span>infer<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">.py</span> <br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--init_model output/cyclegan/checkpoints/48/ </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--dataset_dir /home/aistudio/ </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--image_size 256 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--n_samples 1 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--crop_size 256 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--input_style A </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--test_list /home/aistudio/test_list.txt </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--model_net CycleGAN </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--net_G resnet_9block </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--g_base_dims 32 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--output ./infer_result/cyclegan/</span>

訓練完後,大家可以運行gan/infer.py文件,比較這兩種模型去除馬賽克的效果。

2. 現成工具

如果你不想自己訓練模型,這裡給大家分享現成的項目,它也是基於語義分割以及圖像翻譯,參考了Pix2pix和CycleGAN。

專案位址:https://github.com/HypoX64/DeepMosaics/blob/master/README_CN.md

對於Windows用戶,作者提供了包含GUI介面的免安裝軟體包。

AI去除馬賽克,可還行?

UI介面

前面我們說過,這種技術還是比較難的,所以大家不要有太高預期。這裡發下實際的去除效果。

AI去除馬賽克,可還行?

打碼

AI去除馬賽克,可還行?

去碼

效果還是可以的,只不過沒有想像中那麼完美,大家可以下載運行試試。

#

以上是AI去除馬賽克,可還行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除