【从零开始使用系列】StyleGAN2:开源图像生成网络——环境搭建与基础使用篇(附大量测试图)

ops/2025/1/15 21:18:06/

        StyleGAN2 是英伟达团队 NVIDIA 提出的生成对抗网络(GAN)的一种改进版本

        它通过创新的网络架构,能够生成细节丰富、逼真的图像,特别在高频细节(如皮肤纹理、光照等)的表现上表现卓越。与传统 GAN 相比,StyleGAN2 显著减少了生成图像中的伪影,提升了图像质量,并支持在不同图像层次上精细控制风格,提供了更加自然和多样化的生成效果。

        StyleGAN2 在生成高分辨率图像、训练稳定性和数据稀缺情况下的表现也非常出色。

        GitHub源码地址:https://github.com/NVlabs/stylegan2-ada-pytorch


        本部分专注于对该开源项目的环境搭建和官方教程的基本使用实验测试。

一、基础环境搭建

        下图是官方环境要求。

        官方要求 python3.7 + Pytorch1.7.1

        创建虚拟环境

# 创建python3.7虚拟环境
conda create -n stylegan2 python=3.7 -yconda activate stylegan2

        安装Pytorch1.7.1

# pip官方指令安装pytorch1.7.1-cu11.0
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html

        还有一些其他依赖库安装

# 官方指定其他依赖库
pip install click requests tqdm pyspng ninja imageio-ffmpeg==0.4.3

二、源码与官方训练模型参数下载

        GitHub源码地址:https://github.com/NVlabs/stylegan2-ada-pytorch

        下载源码保存到本地项目。

         为了使用styleGAN2,还需要下载官方训练好的模型参数,可以在 READ_ME 中的数据中心地址中的pretrained处下载。

        可以访问以下地址:https://nvlabs-fi-cdn.nvidia.com/stylegan2-ada-pytorch/pretrained/

        将下载好的pkl模型参数在项目下新建 weights 文件夹保存(这里下载了四个模型,更多测试可自行下载)

三、官方模型基础使用

        官方直接提供了便捷的指令使用方式,只需配置输出目录、模型参数地址和一些参数即可。

        下面来解释参数如何配置,并实验相关指令生成图片的效果。

        首先可以使用 --help 来查看相关指令中的参数如何配置。

# 查看参数含义及如何配置
python generate.py --help

        1.必要参数指令使用

        在上图配置参数中结尾带有 【required】是必须输入的参数,即模型地址和输出地址。还有一个必须要输入的是--seeds,这个代表图片生成的随机种子,输入几个数就生成几张图片。下面先实验只输入必须的参数,其余默认的结果。

outpath = '~/'  # 自定义输出的路径
modelpath = '~/weights/xxx.pkl' # 输入下载的模型保存路径# 默认参数使用,生成1张图
python generate.py --outdir=outpath --network=modelpath --seeds=42# 默认参数使用,生成3张图
python generate.py --outdir=outpath --network=modelpath --seeds=42,54,68# 默认参数使用,生成连续区间数量张图
python generate.py --outdir=outpath --network=modelpath --seeds=42-44 

        在 windows 系统中运行时,可能会出现以下报错,但没有影响到最后结果生成,因此暂不处理该问题,可忽视。

        下面看看具体实验结果。如果想生成不同对象的图像,如猫、狗、人像等,只需修改模型参数到对应的模型即可。下面生成的图片随机数都选择42-44区间。

        猫生成图。 

        狗生成图。

        艺术品人像生成图。

        人脸生成图。

        2.可选参数指令使用

        官方指令使用还提供了一些可选参数的输入使用,现在来测试这些参数的意义。

        首先是一个非常重要的可选参数 --trunc,其用于平衡图片生成的质量和多样性,其默认值为1,数值越低,图像质量水平越高;数值越高,图像随机性越大

        现在来测试不同值的 trunc 参数输入后的输出效果。

        下面的实验结果以默认值 --trunc=1.0 为基准对照组可视化结果。此处结果都是基于猫生成模型。 且随机种子保持42不变。

# 默认值trunc=1.0
python generate.py --outdir=~\test1.0 --network=~\weights\afhqcat.pkl --seeds=42 --trunc=1.0# 减小值trunc=0.5
python generate.py --outdir=~\test0.5 --network=~\weights\afhqcat.pkl --seeds=42 --trunc=0.5# 减小值trunc=0.1
python generate.py --outdir=~\test0.1 --network=~\weights\afhqcat.pkl --seeds=42 --trunc=0.1# 增大值trunc=1.5
python generate.py --outdir=~\test1.5 --network=~\weights\afhqcat.pkl --seeds=42 --trunc=1.5# 增大值trunc=2.0
python generate.py --outdir=~\test2.0 --network=~\weights\afhqcat.pkl --seeds=42 --trunc=2.0

 

        上面多图结果可以看到,trunc参数的值越低,图片质量效果越好,越于现实近似。但是如果trunc值太低了,会导致图片生成多样性显著下降。下图可见。下图使用trunc=0.1下的多种随机种子(42,43,44)生成图。

 

        --noise-mode中参数选择可以是const(稳定模式)或random(随机模式),实验效果图两者差异不大,可能是图片色泽亮度的细微变化,这里不展示了,使用默认const即可。

        而另一个使用的方法 python style_mixing.py 实际就是多图按行按列的组合效果图,这里也不赘述,可以自行测试,使用起来较为简单。


        在下一章节,将介绍 StyleGAN 的自建数据集训练微调。


http://www.ppmy.cn/ops/150388.html

相关文章

当生活低迷时,如何醒过走出迷境?

生活就像一场漫长的旅程,途中难免会遇到低谷和挫折。当生活陷入低迷时,我们该如何调整心态,重新找回自信,走出困境呢?今天,我想和大家分享一些从《毛泽东选集》中汲取的智慧,希望能给你带来启发…

MySQL数据库(SQL分类)

SQL分类 分类全称解释DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改DQLData Query Languag…

基于Springboot的汽车维修预约服务系统设计与实现

博主介绍:java高级开发,从事互联网行业多年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实…

windows和linux的抓包方式

1.实验准备: 一台windows主机,一台linux主机 wireshark使用: 打开wireshark,这些有波动的就代表可以有流量经过该网卡,选择一张有流量经过的网卡 可以看到很多的流量,然后可以使用过滤器来过滤想要的流量…

Linux 常见运营维护,从安装软件开始,到mysql,php,redis,tomcat等软件安装,配置,优化,持续更新中。。。

下载centos7 CentOS 7 完整版(DVD): https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.isoCentOS 7 最小化版(Minimal): https://mirrors.aliyun.com/centos/7/isos/x86_64/C…

《自动驾驶与机器人中的SLAM技术》ch9:自动驾驶车辆的离线地图构建

目录 1 点云建图的流程 2 前端实现 2.1 前端流程 2.2 前端结果 3 后端位姿图优化与异常值剔除 3.1 两阶段优化流程 3.2 优化结果 ① 第一阶段优化结果 ② 第二阶段优化结果 4 回环检测 4.1 回环检测流程 ① 遍历第一阶段优化轨迹中的关键帧。 ② 并发计算候选回环对…

41_Lua函数

在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。Lua函数主要有两种用途: 完成指定的任务,这种情况下函数作为调用语句使用。计算并返回值,这种情况下函数作为赋值语句的表达式使用。此外,Lua还提供了许多的内建函…

常见安全风险及防护(如CSRF,XSS) 配置SSL/TLS

Web应用程序在互联网的开放环境中运行时,会面临各种安全风险。了解这些风险及其防护措施不仅可以使你的应用更安全,还能提高用户信任。在这篇文章中,我们将讨论一些常见的Web应用安全风险,如CSRF和XSS,以及如何配置SSL…