今年GDC大會上,Google示範了基于當下熱門的神經網絡技術GAN(生成式對抗網絡)來做圖檔編輯的技術,即使用者可以在圖檔庫中選擇一張人臉的照片,對其進行局部的更改,神經網絡會自動在更改區域以外的部分進行适配性修改。作者在此對這一技術進行了簡要的分析,并總結出此項技術的幾個缺陷。
鄭宇,騰訊進階工程師, 曾在東方夢工廠擔任軟體工程師。目前就職于騰訊上海NEXT Studio,目前主要專注于強化學習和圖像方面。
今年GDC大會上,Google示範了基于當下熱門的神經網絡技術GAN(生成式對抗網絡)來做圖檔編輯的技術,使用者可以在圖檔庫中選擇一張人臉的照片,對其進行局部的更改,神經網絡會自動在更改區域以外的部分進行适配性修改。
比如,在額頭中間部分塗黑,那麼神經網絡會自動在整個額頭部分添加頭發,再比如,在緊閉的嘴中間塗白,那麼會自動變成露牙齒嘴張開的模樣。理論上可以極大的提升美術編輯的速度,因為修改圖檔不再是在像素層面,而是根據使用者的修改進行整體的調整,隻需簡單幾筆就可以完成。
但是該技術還存在一些不成熟的地方,是以目前實際應用價值有限(參見本文後面的缺陷部分)。
效果展示1

左側圖為原始圖檔,中間圖檔為在嘴唇處塗白後的效果,右側圖檔為在額頭中間區域塗黑的效果。
效果展示2
左上圖為原始圖檔,右上圖為點選Col按鈕選取塗抹的顔色(白色),下左圖為塗白後去除胡須的效果。
原理
作者結合兩種生成式神經網絡模型,VAE和GAN,建構了一種新的網絡IAN(Introspective Adversarial Network),基本原理是VAE訓練模型比較穩定,但是會丢失低頻信号,GAN模型訓練中不穩定,但是細節保持較好,是以作者用GAN中的discriminator(辨識網絡)來提取特征,然後輸入VAE模型的Encoder部分,最後将編碼(latent space)輸入GAN模型中的generator(生成網絡)。如下圖所示。
安裝和運作
sudo pip install https://github.com/Lasagne/Lasagne/archive/master.zip
sudo pip install path.py
sudo apt-get install python-tk python-pil python-scipy python-numpy
git clone https://github.com/ajbrock/Neural-Photo-Editor
然後下載下傳IAN_simple.npz( https://drive.google.com/open?id=0B3_iVBZsC4GGck5WWWc0R0dvT1U),替換掉 Neural-Photo-Editor中的同名檔案。
将 layers.py 中第15行代碼從
import lasagne.layers
改為
from lasagne.layers import *
執行操作:
THEANO_FLAGS='floatX=float32' python NPE.py
常用操作:在打開的視窗,在左下角輸入數字來選取原始的圖檔,點選infer按鈕可以恢複到原始圖檔,點選col按鈕選擇塗抹的顔色,滑動最下方的slider,可以塗抹影響的範圍。主要修改是在圖檔上完成,盡量不要在圖檔下方的latent space上修改,否則結果是無法預期的。
缺陷
- 沒法對細節進行修改。使用上和傳統的圖檔編輯不同,可能會有不适應的地方,比如要修掉圖檔上的一個噪點,那麼塗白會影響到圖檔的其他部分,造成較大的修改。
- 修改存在路徑或曆史依賴。因為VAE的特點,比如在修改時如果不先把臉部模型變寬就直接在眼睛周圍塗黑,實際上會生成頭發,而不是畫出墨鏡。
- 目前處理的臉部照片還是分辨率較低的模型,比如google技術示範時使用的是64*64分辨率的照片,這是因為訓練時使用的資料庫中的照片分辨率就不高(提高分辨率會造成訓練時間和難度增大)。
- 理論上使用者可以對任意輸入的圖檔進行修改,但是對于特定的照片,可能效果不明顯,因為相對使用者添加的個性化照片,之前的資料庫太龐大了,不會針對使用者輸入的圖檔進行特定的優化處理。
參考
- Neural Photo Editing with Introspective Adversarial Networks
- http://ijdykeman.github.io/ml/2016/12/21/cvae.html
相關推薦
谷歌開源圖檔壓縮算法Guetzli實測體驗報告
此文已由作者授權騰訊雲技術社群釋出,轉載請注明文章出處,擷取更多雲計算技術幹貨,可請前往騰訊雲技術社群
歡迎大家關注騰訊雲技術社群-部落格園官方首頁,我們将持續在部落格園為大家推薦技術精品文章哦~
海量技術實踐經驗,盡在雲加社群!
https://cloud.tencent.com/developer