Python?PaddleGAN實現(xiàn)調整照片人物年齡
前言
最近在試著研究飛漿平臺的許多功能,看到了許多有意思的功能。其中可以將照片美化以及年齡調整這個功能讓我想到了之前抖音的一個功能,所以特別感興趣?;诵r間把項目拉下來玩了玩,用了一些我自己找的數(shù)據(jù)。
PaddleGAN的Github地址:github倉庫
環(huán)境部署
如果沒有看過相關的文章,可能會被README搞得很迷糊。先不用看README中一個個教程或者md,我們要先安裝執(zhí)行環(huán)境。主要看docs/zh_CN/install.md文件。
先看一下我們需要安裝什么。項目已經(jīng)提供了paddlepaddle的安裝命令,按照自己機器的情況選擇CUDA或者CPU。
還有一些包需要補充安裝的。
注意哦,還需要安裝dlib,按照我下面的命令執(zhí)行一下。
pip install dlib -i https://pypi.douban.com/simple
OK,我們環(huán)境安裝好了,我們開始玩玩代碼吧。
項目使用
因為PaddleGAN實現(xiàn)照片編輯功能核心是StyleGAN,大家有興趣的話也可以參看一下StyleGAN項目。在編輯圖片前,需要先提取圖片的Latant Code(潛在因子)。簡而言之,會先將圖片做預處理,然后使用預處理的數(shù)據(jù)進行編輯效果。
預處理部分
按照這個思路,我們先找到預處理md說明文件。看看下面的內容。
我們看看pixel2style2pixel.py的參數(shù)說明。
可以按照你的需求修改一下項目給出的命令。我這邊使用的參數(shù)都是項目給出的,主要測試一下效果。從參數(shù)說明我們可以看出我們最重要需要提供的兩個參數(shù),分別是圖片路徑和輸出目錄。
先放出我準備的照片,大家都非常熟悉。
執(zhí)行命令
python -u applications/tools/pixel2style2pixel.py --input_image D:/spyder/PaddleGAN/data_hy/337.jpg --output_path D:/spyder/PaddleGAN/data_hy/output --model_type ffhq-inversion --seed 233 --size 1024 --style_dim 512 --n_mlp 8 --channel_multiplier 2 --cpu
執(zhí)行效果(第一次會下載模型)
我們可以在輸出目錄看到3個文件,其中dst.npy就是后面我們需要做效果的npy數(shù)據(jù)。我們先看看預處理后的圖片什么樣。
可以看出細節(jié)變清晰了,照片集中在頭部位置,頭發(fā)也做了一定的處理,無官稍微修整了一下。
照片老化處理
下面我們繼續(xù)看一下另一個md文件。
我們看到另一個py文件可以幫助我們實現(xiàn)圖片的編輯,styleganv2editing.py。我們先看看參數(shù)說明。
注意哦,不只是可以變換年齡,還有其他的選項。age、eyes_open、eye_distance、eye_eyebrow_distance、eye_ratio、gender、lip_ratio、mouth_open、mouth_ratio、nose_mouth_distance、nose_ratio、nose_tip、pitch、roll、smile、yaw。那么其實還有很多效果我們可以實現(xiàn)。
下面是我準備的老化圖片命令
python -u applications/tools/styleganv2editing.py --latent D:/spyder/PaddleGAN/data_hy/output/dst.npy --output_path D:/spyder/PaddleGAN/data_hy/old --model_type ffhq-config-f --size 1024 --style_dim 512 --n_mlp 8 --channel_multiplier 2 --direction_name age --direction_offset 3 --cpu
執(zhí)行情況
(pytorch) D:\spyder\PaddleGAN>python -u applications/tools/styleganv2editing.py --latent D:/spyder/PaddleGAN/data_hy/output/dst.npy --output_path D:/spyder/PaddleGAN/data_hy/old --model _type ffhq-config-f --size 1024 --style_dim 512 --n_mlp 8 --channel_multiplier 2 --direction_name age --direction_offset 3 --cpu C:\ProgramData\Anaconda3\envs\pytorch\lib\site-packages\skimage\data\__init__.py:107: DeprecationWarning: Importing file_hash from pooch.utils is DEPRECATED. Please import from the top-level namespace (`from pooch import file_hash`) instead, which is fully backwards compatible with pooch >= 0.1. return file_hash(path) == expected_hash [12/29 20:17:06] ppgan INFO: Found C:\Users\huyi\.cache\ppgan\stylegan2-ffhq-config-f.pdparams [12/29 20:17:09] ppgan INFO: Found C:\Users\huyi\.cache\ppgan\stylegan2-ffhq-config-f-directions.pdparams
看看效果
老態(tài)還是很明顯的,效果不錯。
照片年輕化處理
和上面一樣,下面是我的年輕化命令:
python -u applications/tools/styleganv2editing.py --latent D:/spyder/PaddleGAN/data_hy/output/dst.npy --output_path D:/spyder/PaddleGAN/data_hy/young --model_type ffhq-config-f --size 1024 --style_dim 512 --n_mlp 8 --channel_multiplier 2 --direction_name age --direction_offset -3 --cpu
對比兩個命令可以看出主要是--direction_offset參數(shù)不同。
執(zhí)行情況
(pytorch) D:\spyder\PaddleGAN>python -u applications/tools/styleganv2editing.py --latent D:/spyder/PaddleGAN/data_hy/output/dst.npy --output_path D:/spyder/PaddleGAN/data_hy/young --mod el_type ffhq-config-f --size 1024 --style_dim 512 --n_mlp 8 --channel_multiplier 2 --direction_name age --direction_offset -3 --cpu C:\ProgramData\Anaconda3\envs\pytorch\lib\site-packages\skimage\data\__init__.py:107: DeprecationWarning: Importing file_hash from pooch.utils is DEPRECATED. Please import from the top-level namespace (`from pooch import file_hash`) instead, which is fully backwards compatible with pooch >= 0.1. return file_hash(path) == expected_hash [12/29 20:20:07] ppgan INFO: Found C:\Users\huyi\.cache\ppgan\stylegan2-ffhq-config-f.pdparams [12/29 20:20:09] ppgan INFO: Found C:\Users\huyi\.cache\ppgan\stylegan2-ffhq-config-f-directions.pdparams
看看效果
效果還是不錯的,還能看出是誰,對嗎?
總結
PaddleGAN項目我最近開始研究,還沒有很深入,如果有理解不對的地方可以留言指正。如果大家喜歡這些效果的話,我可以把其他的效果,比如性別反轉等等做出來(想看的話,留言告訴我)。有時間的話也可以魔改一下代碼生成點有意思的特效。
以上就是Python PaddleGAN實現(xiàn)調整照片人物年齡的詳細內容,更多關于Python PaddleGAN調整照片人物年齡的資料請關注腳本之家其它相關文章!
相關文章
django的auth認證,authenticate和裝飾器功能詳解
這篇文章主要介紹了django的auth認證,authenticate和裝飾器功能詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-07-07