影像處理│一張自拍即可實現變老變年輕,帶你感受時光流逝之美

tiny極客發表於2023-03-02

? 專案效果

  • 飛漿是一個由百度推出的深度學習開發平臺,為開發者提供了高效、易用、靈活和全面的深度學習開發工具和服務。
  • PaddleGAN是飛漿在影像生成和處理領域的一個代表性專案,透過深度學習的技術和飛漿的支援,PaddleGAN可以實現多種驚人的影像處理效果,例如影像轉換、人臉編輯、動態效果生成等等。
  • 其中內建了StyleGAN V2FOM分別實現人臉屬性編輯和人臉動畫效果。這些技術和應用在很多領域都有廣泛的應用,例如娛樂廣告電影製作虛擬現實等等。

官方效果預覽

? 環境搭建

  • 這裡個人推薦使用 Anaconda 搭建本地環境,因為如果專案太多,後期非常不好管理
  • 另外推薦全域性更換 pip 源:pip config set global.index-url https://mirror.baidu.com/pypi/simple
  • 如果未更換源的話,下載會超級慢,甚至下載失敗,也可以透過 -i 臨時設定源:pip install xxx -i https://mirror.baidu.com/pypi/simple
# 建立環境
conda create --name PaddleGAN python=3.6

# 啟用環境
activate PaddleGAN

# 安裝依賴cmake
pip install cmake -i https://mirror.baidu.com/pypi/simple

# 安裝依賴boost 
pip install boost -i https://mirror.baidu.com/pypi/simple

# 安裝依賴numpy
pip install numpy -i https://mirror.baidu.com/pypi/simple

# 安裝依賴dlib
pip install dlib==19.8.1 -i https://mirror.baidu.com/pypi/simple

? 下載PaddleGAN

  • GAN 是一種深度學習模型,是近年來複雜分佈上無監督學習最具前景的方法之一
  • 在安裝依賴的時候,因使用的環境是 python3.6,所以需要將 requirements.txt 檔案中的 opencv-python 加上一個版本號opencv-python==4.3.0.38,不然預設安裝最新版本的,而最新版本的無法被下載成功
# 下載原始碼
git clone https://gitee.com/PaddlePaddle/PaddleGAN

# 進入專案目錄
cd PaddleGAN

# 安裝專案依賴,這裡一定要設定全域性源
pip install -r requirements.txt

# 安裝環境
python setup.py develop

? 安裝飛漿

  • 安裝 CPU 版本,不容易出錯,但速度會有點慢,如果有 GPU 儘量使用 GPU 版本
  • 我這裡只安裝最新的,如果想要安裝指定版本,請檢視飛漿官方教程
# CPU版本
pip install paddlepaddle

# GPU版本
pip install paddlepaddle-gpu

? 生成圖片潛碼

  • 需要透過命令生成原圖對應的 Latent Code
  • input_image: 輸入的影像路徑
  • output_path: 生成圖片存放的路徑
  • weight_paht: 預訓練模型路徑
  • model_type: PaddleGAN 內建模型型別,若輸入 PaddleGAN 已存在的模型型別,weight_paht 將失效,當前可用:ffhq-inversionffhq-toonify
  • seed: 隨機數種子
  • size: 模型引數,輸出圖片的解析度
  • style_dim: 模型引數,輸出圖片的解析度
  • n_mlp: 模型引數,風格z所輸入的多層感知層的層數
  • channel_multiplier: 模型引數,通道乘積,影響模型大小和生成圖片的質量
  • cpu: 是否使用 cpu 推理,若不使用,請在命令去除
  • 測試人像是用 StyleGAN2 技術模型生成的,僅用做測試,不存在侵犯任何人肖像權

數字人像原圖

# 命令模板
cd applications/
python -u tools/styleganv2.py \
       --input_image <替換為輸入的影像路徑> \
       --output_path <替換為生成圖片存放的資料夾> \
       --weight_path <替換為你的預訓練模型路徑> \
       --model_type ffhq-inversion \
       --seed 233 \
       --size 1024 \
       --style_dim 512 \
       --n_mlp 8 \
       --channel_multiplier 2 \
       --cpu

# 使用的命令
python -u applications/tools/pixel2style2pixel.py  --input_image E:/PaddleGAN/results/input/beauty.jpg  --output_path   E:/PaddleGAN/results/output --model_type ffhq-inversion --seed 233  --size 1024  --style_dim 512  --n_mlp 8  --channel_multiplier 2 --cpu

? 老齡化處理

  • latent:要編輯的代表影像的風格向量的路徑。可來自 Pixel2Style2Pixel 生成的 dst.npy,也就是上面生成的潛碼
  • latent2: 第二個風格向量的路徑。來源同第一個風格向量
  • output_path: 生成圖片存放的資料夾
  • weight_path: 預訓練模型路徑
  • model_type: PaddleGAN 內建模型型別,若輸入 PaddleGAN 已存在的模型型別,weight_paht 將失效,當前建議使用:ffhq-config-f
  • size: 模型引數,輸出圖片的解析度
  • n_mlp: 模型引數,風格z的維度
  • channel_multiplier: 模型引數,通道乘積,影響模型大小和生成圖片的質量
  • direction_path: 存放一系列屬性名稱及物件屬性向量的檔案路徑。預設為空,即使用 ppgan 自帶的檔案。若不使用,請在命令中去除
  • direction_name: 要編輯的屬性名稱,對於 ffhq-config-f 有預先準備的這些屬性:ageeyes_openeye_distanceeye_eyebrow_distanceeye_ratiogenderlip_ratiomouth_openmouth_rationose_mouth_distancenose_rationose_tippitchrollsmileyaw

老齡化

# 命令模板
cd applications/
python -u tools/styleganv2editing.py \
       --latent <潛碼路徑> \
       --output_path <新人臉(年齡變換後)的儲存路徑> \
       --model_type ffhq-config-f \
       --size 1024 \
       --style_dim 512 \
       --n_mlp 8 \
       --direction_name age \
       --direction_offset 3
       
# 使用的命令
python -u applications/tools/styleganv2editing.py --latent E:/PaddleGAN/results/output/dst.npy --output_path E:/PaddleGAN/results/old --model_type ffhq-config-f --size 1024 --style_dim 512 --n_mlp 8 --channel_multiplier 2 --direction_name age --direction_offset 3

? 年輕化處理

  • direction_offset: 這個引數的絕對值越大,處理程度越重,絕對值越大顯得越年輕或者老齡化越嚴重

年輕化

cd applications/
python -u tools/styleganv2editing.py \
       --latent <潛碼路徑> \
       --output_path <新人臉(年齡變換後)的儲存路徑> \
       --model_type ffhq-config-f \
       --size 1024 \
       --style_dim 512 \
       --n_mlp 8 \
       --direction_name age \
       --direction_offset -3

# 使用的命令
python -u applications/tools/styleganv2editing.py --latent E:/PaddleGAN/results/output/dst.npy --output_path E:/PaddleGAN/results/young --model_type ffhq-config-f --size 1024 --style_dim 512 --n_mlp 8 --channel_multiplier 2 --direction_name age --direction_offset -3

相關文章