图像处理│一张自拍即可实现变老变年轻,带你感受时光流逝之美

news2024/11/16 7:52:27

✨ 目录

    • 🎈 项目效果
    • 🎈 环境搭建
    • 🎈 下载PaddleGAN
    • 🎈 安装飞浆
    • 🎈 生成图片潜码
    • 🎈 老龄化处理
    • 🎈 年轻化处理

🎈 项目效果

  • 飞浆是一个由百度推出的深度学习开发平台,为开发者提供了高效、易用、灵活和全面的深度学习开发工具和服务。
  • 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 推理,若不使用,请在命令去除
  • 这里从网上找了一张我最喜欢的大甜甜照片来测试

最美景甜

# 命令模板
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ep_MySQL基础-存储引擎

show engines; //查看mysql所支持的存储引擎&#xff0c;以及从中得到mysql默认的存储引擎 MyIsam存储引擎:(非聚集索引)->数据索引不在一起 Innodb存储引擎:(聚集索引)->数据索引在一起 MyISAM 每个MyISAM数据表&#xff0c;皆由存储在硬盘上的3个文件所组成, .f…

光学设计软件Ansys的Lumerical 2023版本下载与安装使用

文章目录前言一、许可管理工具安装二、许可管理器配置三、Lumerical安装四、工具使用配置总结前言 Lumerical是一款功能强大的软件&#xff0c;用于设计和分析从组件到系统阶段的光子学和电磁学。这个版本的Lumerical改进了电子和光子学设计工具&#xff0c;用于复杂光子学&am…

【JAVA程序设计】【C00108】基于Springboot+Vue前后端分离的民宿短租预约管理系统

基于SpringbootVue前后端分离的民宿短租预约管理系统项目简介项目获取开发环境项目技术运行截图项目简介 基于Springbootvue开发的民宿短租预订管理系统&#xff0c;共分为三种权限&#xff1a;系统管理员、商家、用户 管理员角色包含以下功能&#xff1a; 个人中心、修改密码…

C++——优先级队列(priority_queue)的使用及实现

目录 一.priority_queue的使用 1.1、基本介绍 1.2、优先级队列的定义 1.3、基本操作(常见接口的使用&#xff09; 1.4、重写仿函数支持自定义数据类型 二.priority_queue的模拟实现 2.1、构造&&重要的调整算法 2.2、常见接口的实现 push() pop() top() empt…

2023爬虫学习笔记 -- 多线程操作

一、定义一个程序开始时间程序开始时间time.time()二、创建几个网址&#xff0c;模拟目标网站网址列表[http://www.baidu.com,http://www.sogou.com,http://www.163.com]三、创建一个函数访问网站&#xff0c;模拟爬取数据操作&#xff08;耗时操作&#xff09;头{ "User-…

【C++】讲的最通透最易懂的关于结构体内存对齐的问题

目录1. 内存对齐规则2. 简单易懂的内存对齐示例2.1 简单结构体2.2 含位域的结构体2.3 空类的大小2.4 嵌套结构体3. 为什么需要内存对齐&#xff1f;4. 类型在不同系统下所占字节数1. 内存对齐规则 第一个成员在与结构体变量偏移量为0的位置处。其他成员变量要对齐到某个数字&a…

学了很久python却什么都做不了?这个方法一定要试试

很多人学了两三个月的python却什么都做不了&#xff0c;但有的人只学了不到一个月的时间&#xff0c;就可以开始自己做项目或者接私活&#xff0c;这是为什么&#xff1f; 作为20年码龄的老程序员&#xff0c;龙叔我觉得除了内在原因外&#xff0c;学习资源占据着大头。拥有好的…

NOC2021年测试卷2

一、单选题(共25题,每题2分,共50分) 1. 执行下面程序,屏幕上最多会看到多少个苹果?( ) A、10个B、11个C、1个D、无法确定2. 关于下面程序,说法正确的是 ?( ) 3. “角色1”要在“角色2”说完话后才能开始动作,如果“角色2”思考2秒钟,然后说3秒钟,那么“角…

【干货】又是一年跳槽季!Nginx 10道核心面试题及解析

Nginx是一款轻量级的高性能Web服务器和反向代理服务器&#xff0c;由俄罗斯的Igor Sysoev开发。它具有占用资源少、高并发、稳定性高等优点&#xff0c;被广泛应用于互联网领域。在Nginx的面试过程中&#xff0c;面试官通常会提出一些核心问题&#xff0c;本文将介绍一些常见的…

【手把手教会数据类型的存储】

数据类型介绍整型在内存中的存储&#xff1a;原码、反码、补码大小端字节序介绍及判断浮点型在内存中的存储解析1.数据类型介绍我们已经学习过了基本的数据类型&#xff1a;整型&#xff1a;shor —— 短整型int —— 整型long —— 长整型long long —— 更长的整型浮点型&…

机器学习 | 线性回归(单变量)

前文回顾&#xff1a;机器学习概述&#x1f4da;线性回归概念我们要使用一个数据集&#xff0c;数据集包含俄勒冈州波特兰市的住房价格。在这里&#xff0c;我要根据不同房屋尺寸所售出的价格&#xff0c;画出我的数据集。比方说&#xff0c;如果你朋友的房子是 1250 平方尺大小…

数据仓库之建模理论以及仓库设计思想

1、数据仓库 1.1、数据仓库概述 数据仓库是一个为数据分析而设计的企业级数据管理系统。数据仓库可集中、整合多个信息源的大量数据&#xff0c;借助数据仓库的分析能力&#xff0c;企业可从数据中获得宝贵的信息进而改进决策。同时&#xff0c;随着时间的推移&#xff0c;数…

【计算机组成原理】1、浮点数的二进制表示、科学计数法、IEEE754标准

文章目录什么是浮点数浮点数表示数字浮点数的二进制表示浮点数的「IEEE754标准」二进制表示背景特殊约定示例浮点数为什么有精度损失浮点数的范围和精度有多大参考资料用定点数表示数字时&#xff0c;会约定小数点的位置固定不变&#xff0c;整数部分和小数部分分别转换为二进制…

中原银行使用 XSKY星辰天合对象一体机解决核心系统备份管理问题

中原银行使用星辰天合 X3000 对象存储一体机在生产中心和灾备中心分别搭建分布式存储集群&#xff0c;通过 S3 协议与 NBU 备份平台对接&#xff0c;提供海量存储服务&#xff0c;实现备份平台架构转型。 近年来&#xff0c;金融机构随着业务规模及数据量的持续增长&#xff0c…

JavaSE19-常见类

文章目录一、Object1.概述2.常用方法二、String1.概述2.对象创建2.1 直接使用字面值2.2 使用构造方法3.常用方法三、包装类1.概述2.创建对象2.1 直接使用字面值2.2 使用构造方法2.3 使用静态方法valueOf3.常用方法4.自动装箱与自动拆箱4.1 自动装箱4.2 自动拆箱4.3 原理四、Str…

各类特殊开关电源问题解决方案

一、提高DCDC芯片电流 使用大功率三极管代替芯片内部开关管提高过流能力 二、BUCK电路实现负电压 将buck的地作为-Vout输出&#xff0c;原输出接地。 注&#xff1a;不要用LM2596跟LM2576 三、FLY-BUCK电路 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20808c03b126…

成功解决xshell7会话窗口只能显示一个的问题

文章目录前言一. 问题复现二. 问题解决方法一方法二三. 拓展3.1 自定义快捷键3.2 将当前shell中的代码内容复制到记事本中3.3 xshell配置密钥登录3.3.1 生成密钥3.3.2 将密钥上传到服务器并设置3.3.3 用xshell密钥登录服务器总结前言 重点强调&#xff1a; 本文是解决xshell的…

Linux系列 使用vi文本编辑器

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.vi文本编辑器 1.使用vi文本编辑器 2.vi编辑器的工作模式 3.命令模式中的…

【LeetCode】剑指 Offer(13)

目录 题目&#xff1a;剑指 Offer 31. 栈的压入、弹出序列 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a; 题目&#xff1a;剑指 Offer 31. 栈…

重写toString()方法-课后程序(JAVA基础案例教程-黑马程序员编著-第十二章-课后作业)

【案例12-1】&#xff1a;重写toString()方法 【案例介绍】 1.案例描述 为了方便输出对象&#xff0c;Object类提供了toString()方法。但是该方法的默认值是由类名和哈希码组成的&#xff0c;实用性并不强。通常需要重写该方法以提供更多的对象信息。 本案例要求使用反射重…