测一测异性的你长什么样?

懂PS的,用作图软件做一个异性的自己,可能很多人不觉得稀奇。但我们今天,用人工智能生成的,岂不是更有趣?

这类涉及到图像的AI功能实现,了解深度学习的朋友会知道一些。往往就是用当下很火的GAN生成式对抗网络来实现的,或者说是用DCGAN。而本文谈到的用AI来制作异性的自己,就是用到PaddleGAN的一个性别转换的功能。换句话说,是用PaddleGAN中的人脸属性编辑能力,实现将任意人脸进行性别变换!

一、环境准备

下载PaddleGAN

git clone https://github.com/PaddlePaddle/PaddleGAN
或者
git clone https://gitee.com/PaddlePaddle/PaddleGAN

本地安装PaddleGAN

#进入PaddleGAN目录
cd /home/aistudio/PaddleGAN

#安装依赖
pip install -r requirements.txt

#本地安装PaddleGAN
python setup.py develop
安装dlib
pip install dlib

dlib如果安排失败的,请到官网下载相应的whl版本,手动安装。

二、提取原图Latent Code

这里我们使用Pixel2Style2Pixel提取Latent Code,大家只需要更改两个参数:

  1. input_image:原图路径,即需要提取隐藏特征的照片路径

  2. output_path:原图的隐藏特征的存放路径,后续需要放在属性编辑和生成的模块中使用

将input_image部分放上想要变换性别的人脸照片即可,请注意最好是自拍和大头照,无眼镜效果更佳噢~

命令方式:

cd applications/
python -u tools/pixel2style2pixel.py 
       --input_image '/home/aistudio/人脸测试集/yingbb2.png' 
       --output_path   '/home/aistudio/psp_output/yingbb2' 
       --model_type ffhq-inversion 
       --seed 233 
       --size 1024 
       --style_dim 512 
       --n_mlp 8 
       --channel_multiplier 2

编程方式:

import paddle
from ppgan.apps import Pixel2Style2PixelPredictor
predictor = Pixel2Style2PixelPredictor(
    output_path="outputs",
    weight_path=None,
    model_type="ffhq-inversion",
    seed=233,
    size=1024,
    style_dim=512,
    n_mlp=8,
    channel_multiplier=2)
predictor.output_path = 'outputs'
predictor.run('inputs/src.png')

三、生成异性的你

对Latent Code进行特定方向编辑,使用StyleGAN V2将编辑后的向量生成新人脸。

命令方式:

python -u tools/styleganv2editing.py 
       --latent '/home/aistudio/psp_output/11/dst.npy' 
       --output_path '/home/aistudio/final_output/11' 
       --model_type ffhq-config-f 
       --size 1024 
       --style_dim 512 
       --n_mlp 8 
       --channel_multiplier 2 
       --direction_name gender 
       --direction_offset 5 #正数从女转换为男,负数男转变为女,

编程方式

import paddle
from ppgan.apps import StyleGANv2EditingPredictor
predictorEditing = StyleGANv2EditingPredictor(
    output_path="outputs",
    weight_path=None,
    model_type="ffhq-config-f",
    seed=None,
    size=1024,
    style_dim=512,
    n_mlp=8,
    channel_multiplier=2,
    direction_path=None)
dstNpyPath="outputs/dst.npy"
predictorEditing.output_path = 'outputs'
direction_offset = 5  #正数从女转换为男,负数男转变为女
predictorEditing.run(dstNpyPath, "gender", direction_offset)

四、最终转换的结果

测一测异性的你长什么样?_第1张图片

好了,今天就分享到这边,大家有什么想法,欢迎给我留言讨论。

你可能感兴趣的:(python,人工智能,神经网络,深度学习)