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