1. 程式人生 > >照片美妝---人臉老化

照片美妝---人臉老化

本文轉載自http://www.sohu.com/a/131656765_642762

論文名稱《Age Progression/Regression by Conditional Adversarial Autoencoder》2017 CVPR

該程式碼是對論文《用條件對抗式自動編碼器進行人臉老化、退齡》中演算法的Tensorflow實現


環境要求

·Python 2.7x

·Scipy

·TensorFlow

資料庫

·FGNET

·MORPH

地址:https://ebill.uncw.edu/C20231_ustores/web/product_detail.jsp?PRODUCTID=8

·CACD

地址:http://bcsiriuschen.github.io/CARC/

·UTKFace (可以從Github 或維基百科獲得)

準備訓練資料你可以使用任何帶年齡標籤和性別標籤的資料庫。在該demo中,我們使用了UTF人臉資料庫,因為用這種標定並裁剪過的人臉照片更好一些。請儲存並解壓UTKFace.tar.gz到資料夾data下。

訓練

$ python main.py

訓練過程在NVIDIA TITAN X (12GB)上進行了測試。在UTK人臉資料庫(23,708張影象,大小為128x128x3)上進行50次epoch的訓練時間是兩個半小時。

在訓練過程中,會建立一個新資料夾save,包括四個子資料夾:summary, samples, test,和checkpoint

·samples :儲存每個epoch之後重建的人臉。

·test :儲存每個epoch之後的測試結果(基於輸入人臉生成的不同年齡的人臉)。

·checkpoint :儲存模型。

·summary :儲存批損失和中間輸出。

用以下命令來視覺化summary:

$ cd save/summary

$ tensorboard --logdir .

訓練之後,可以檢查資料夾samples和test來分別視覺化重建和測試效能。下圖展示了重建(左)和測試(右)的結果。重建結果(左)的第一行是測試樣例,他們分別對應的測試結果(右)由上到下,按年齡增長順序排列。

不同訓練epoch和重建損失的對比如下圖所示,為了視覺化的目的我們對它進行了低通濾波。原始的記錄儲存在summary資料夾中。

測試$ python main.py --is_train False --testdir your_image_dir

輸入命令之後,應該顯示出下面的資訊:

Building graph ...

TestingMode

Loadingpre-trained model ...

SUCCESS^_^

Done! Results are saved as save/test/test_as_xxx.png

具體來說,測試人臉會進行兩次處理,這兩次分別將其視作男性和女性。因此,儲存的檔案會分別命名為test_as_male.png(作為男性測試) 和 test_as_female.png(作為女性測試)。如果想實現更好的結果,需要在更大並更多樣化的資料集上進行訓練。

訓練過程演示第一行顯示了不同年齡的輸入人臉,其他行顯示了每次epoch之後輸出人臉的提高。輸出人臉由上到下按年齡遞增順序排列。

檔案

·FaceAging.py :類檔案,建立並初始化模型,並且實現訓練和測試的相關事項。

地址:https://github.com/ZZUTK/Face-Aging-CAAE/blob/master/FaceAging.py

·ops.py :由FaceAging.py的函式組成,實現卷積,反捲積,全卷積,leaky ReLU啟用函式,下載並儲存影象等操作。

地址:https://github.com/ZZUTK/Face-Aging-CAAE/blob/master/ops.py

·main.py :演示 FaceAging.py。

https://github.com/ZZUTK/Face-Aging-CAAE/blob/master/main.py