Python PaddleGAN实现调整照片人物年龄
作者:剑客阿良_ALiang 发布时间:2023-09-28 05:48:14
前言
最近在试着研究飞浆平台的许多功能,看到了许多有意思的功能。其中可以将照片美化以及年龄调整这个功能让我想到了之前抖音的一个功能,所以特别感兴趣。花了些时间把项目拉下来玩了玩,用了一些我自己找的数据。
PaddleGAN的Github地址:github仓库
环境部署
如果没有看过相关的文章,可能会被README搞得很迷糊。先不用看README中一个个教程或者md,我们要先安装执行环境。主要看docs/zh_CN/install.md文件。
先看一下我们需要安装什么。项目已经提供了paddlepaddle的安装命令,按照自己机器的情况选择CUDA或者CPU。
还有一些包需要补充安装的。
注意哦,还需要安装dlib,按照我下面的命令执行一下。
pip install dlib -i https://pypi.douban.com/simple
OK,我们环境安装好了,我们开始玩玩代码吧。
项目使用
因为PaddleGAN实现照片编辑功能核心是StyleGAN,大家有兴趣的话也可以参看一下StyleGAN项目。在编辑图片前,需要先提取图片的Latant Code(潜在因子)。简而言之,会先将图片做预处理,然后使用预处理的数据进行编辑效果。
预处理部分
按照这个思路,我们先找到预处理md说明文件。看看下面的内容。
我们看看pixel2style2pixel.py的参数说明。
可以按照你的需求修改一下项目给出的命令。我这边使用的参数都是项目给出的,主要测试一下效果。从参数说明我们可以看出我们最重要需要提供的两个参数,分别是图片路径和输出目录。
先放出我准备的照片,大家都非常熟悉。
执行命令
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
执行效果(第一次会下载模型)
我们可以在输出目录看到3个文件,其中dst.npy就是后面我们需要做效果的npy数据。我们先看看预处理后的图片什么样。
可以看出细节变清晰了,照片集中在头部位置,头发也做了一定的处理,无官稍微修整了一下。
照片老化处理
下面我们继续看一下另一个md文件。
我们看到另一个py文件可以帮助我们实现图片的编辑,styleganv2editing.py。我们先看看参数说明。
注意哦,不只是可以变换年龄,还有其他的选项。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。那么其实还有很多效果我们可以实现。
下面是我准备的老化图片命令
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
执行情况
(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
看看效果
老态还是很明显的,效果不错。
照片年轻化处理
和上面一样,下面是我的年轻化命令:
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参数不同。
执行情况
(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
看看效果
效果还是不错的,还能看出是谁,对吗?
来源:https://huyi-aliang.blog.csdn.net/article/details/122217720


猜你喜欢
- 本文实例讲述了Django发送html邮件的方法。分享给大家供大家参考。具体如下:在Django中,发送邮件非常的方便,一直没有时间,今天来
- 最近做项目的时候有一个发布新闻的需求,新闻编辑的时候要求能发布带格式的文本内容和能展示支持图片。由于项目是用 Vue 开发的,所以找编辑器的
- 一、为什么难 秒杀系统难做的原因:库存只有一份,所有人会在集中的时间读和写这些数据。例如小米手
- 背景:Email地址存于MSSql一用户信息表中,数量上万。公司自有服务器,集SMTP,POP3,WWW,FTP,MSSql,DNS等多种服
- 很有趣的招聘方式和题目:以下是该次招聘前端开发工程师的聘题解答:小贤是一条可爱的小狗(Dog),它的叫声很好听(wow),每次看到主人的时候
- 前言近来chatGPT挺火的,也试玩了一下,确实挺有意思。这里记录一下在Python中如何去使用chatGPT。本篇文章的实现100%基于
- 1.format() 基本用法python2.6 开始,新增了一种格式化字符串的函数str.format(),它增强了字符串格式化的功能基本
- 利用Tkinter实现彩球碰撞屏保,供大家参考,具体内容如下一、架构与思路(1)主函数:main():通过类启动程序;(2)类:Screen
- The WeekdayName function returns the weekday name of a specified day o
- Python中可以使用for循环实现累加求和for循环语法:for 变量 in range(x):循环需要执行的代码如下实现1到n求和:de
- Python用input输入列表的方法使用input输入数据时,使用逗号隔开列表的每一项,再使用ast.literal_eval()方法转成
- 概述在 TypeScript 中我们会使用泛型来对函数的相关类型进行约束。这里的函数,同时包含 class 的构造函数,因此,一个类的声明部
- 本文实例讲述了JS实现倒序输出的几种常用方法。分享给大家供大家参考,具体如下:1.通过split和数组的逆序输出var num = 123;
- 本文实例为大家分享了python实现ftp文件传输的具体代码,供大家参考,具体内容如下主要步骤可以分为以下几步:1.读取文件名2.检测文件是
- 本文实例讲述了JavaScript实现二叉树的先序、中序及后序遍历方法。分享给大家供大家参考,具体如下:之前学数据结构的时候,学了二叉树的先
- Timedelta转换为Int或Float方式Pandas处理import pandas as pddataSet['t']
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
- 写在最前面:这个我打算分几次写,由于我们通过selenium拿到的图片会很模糊,所以使用Tesseract识别之前要对图片先进行处理。第一步
- 除了第一年外,谷歌每年母亲节都会更换主页的logo以向全世界的母亲致敬。虽然2000年和2001年母亲节的logo图片看起来没什么不同,但是
- 问题描述我在用Keras的Embedding层做nlp相关的实现时,发现了一个神奇的问题,先上代码:a = Input(shape=[15]