AI去除馬賽克,可還行?
哈嘍,大家好。
你有沒有想過用 AI 技術去除馬賽克?
仔細想想這個問題還挺難的,因為我們之前使用的 AI 技術,不管是人臉識別還是OCR識別,起碼人工能識別出來。但如果給你一張打上馬賽克的圖片,你能把它復原嗎?
顯然是很難的。如果人都無法復原,又怎能教會計算機去復原呢?
還記得前幾天我寫的一篇《用AI生成頭像?》文章嗎。在那篇文章中,我們訓練了一個DCGAN模型,它可以從任意隨機數生成一個圖像。
隨機數作為像素生成的噪聲圖
模型從隨機數生成正常頭像
DCGAN?包含生成器模型和判別器模型?兩個模型組成,生成器模型?的作用是從一組隨機數生成一個圖片,圖片與訓練樣本越接近越好,從而騙過判別器模型?,而判別器模型?則要不斷提高鑒別能力,防止生成器模型生成的圖片蒙混過關。
如果我們把上述生成器模型的輸入由隨機數改成帶有馬賽克的圖片,輸出則是不帶馬賽克的圖片。是不是就可以訓練出一個去除馬賽克的模型了。
接下來,跟大家分享下如何訓練去除馬賽克模型,然后再分享一個現成的工具,大家可以下載下來直接用,試試效果。
1. Pix2pix + CycleGAN
這里我們不用上面介紹的DCGAN?,而是用Pix2pix和CycleGAN兩個更強大的模型,分別來訓練。
Pix2pix?是基于GAN?的圖像翻譯算法,從馬賽克圖片到正常圖片,本質上跟一種語言到另一種語言的轉換類似,都是翻譯的過程。
Pix2pix模型翻譯
而CycleGAN的實現的效果,簡單來說就是將不同域之間的圖像進行轉換,而本身的形狀保持不變。
CycleGAN模型
文章為我們提供了數據集和完整的訓練過程,能夠幫助我們以較低的成本訓練模型。
首先,下載數據集
數據集
共 654M。
然后,下載Paddle預訓練模型
預訓練模型?
最后,分別訓練Pix2pix和CycleGAN模型。
Pix2pix 模型
python gan/infer.py \
--init_model output/pix2pix/checkpoints/110/ \
--dataset_dir /home/aistudio/ \
--image_size 256 \
--n_samples 1 \
--crop_size 256 \
--model_net Pix2pix \
--net_G unet_256 \
--test_list /home/aistudio/test_list.txt \
--output ./infer_result/pix2pix/
CycleGAN 模型
python gan/infer.py
--init_model output/cyclegan/checkpoints/48/ \
--dataset_dir /home/aistudio/ \
--image_size 256 \
--n_samples 1 \
--crop_size 256 \
--input_style A \
--test_list /home/aistudio/test_list.txt \
--model_net CycleGAN \
--net_G resnet_9block \
--g_base_dims 32 \
--output ./infer_result/cyclegan/
訓練完后,大家可以運行gan/infer.py文件,對比這兩種模型去除馬賽克的效果。
2. 現成工具
如果你不想自己訓練模型,這里給大家分享現成的項目,它也是基于語義分割以及圖像翻譯,參考了Pix2pix和CycleGAN。
項目地址:https://github.com/HypoX64/DeepMosaics/blob/master/README_CN.md
對于Windows用戶,作者提供了包含GUI界面的免安裝軟件包。
UI界面
前面我們說過,這種技術還是比較難的,所以大家不要有太高預期。這里發下實際的去除效果。
打碼
去碼
效果還是可以的,只不過沒有想象中那么完美,大家可以下載運行試試。