用稳定扩散生成4K PBR纹理【SDXL】

我正在继续去年开始使用 Three.JS 构建 3D 场景和草图的工作。

当时,DALL-E 和 Stable Diffusion 等 AI 图像生成器刚刚真正起飞。 我成功地在本地运行稳定扩散,并使用它为我正在构建的 3D 世界中的地形、建筑物和其他环境生成纹理。

当时我使用的是稳定扩散 v1。 我发现了一些我喜欢的提示,它们创建了具有如下样式的图像:

在这里插入图片描述

推荐:用 NSDT编辑器 快速搭建可编程3D场景

SDv1 非常擅长生成这样的纹理,我在使用不同的提示时生成了数百/数千张图像。

现在已经是 2023 年 8 月,AI 图像生成生态系统持续突飞猛进。 我一直在尝试使用 Stable Diffusion XL 来生成纹理,从大部分地形开始,我已经得到了一些很好的结果。

起初,我得到了一些令人沮丧的结果,因为我之前使用的提示效果不佳。 然而,经过一些实验,我得到的结果比我过去取得的任何成果都要好得多。

1、SDXL v1.0 PBR 纹理生成工作流程

我想出了一个非常可靠的工作流程,可以使用 Stable Diffusion XL 和其他一些工具生成高质量的 4K PBR 纹理。 到目前为止,我对结果印象非常深刻,而且我现在才开始研究这些东西几天。

这是我能够得到的结果:

在这里插入图片描述

2、使用7900 XTX安装运行SDXL

我最近买了一块7900 XTX显卡。 它具有 24GB 的 VRAM,足以生成具有稳定扩散的 1024x1024 图像,无需升级或其他技巧。

我选择 AUTOMATIC1111 WebUI 来安装和运行 Stable Diffusion。 它似乎是功能最丰富和最受欢迎的,并且它开箱即用地支持 AMD GPU。 我克隆了存储库,运行了 ./run_webui.sh 脚本,它自动安装依赖项并下载稳定扩散权重和其他模型文件。

为了运行它,我需要做一些手动操作。 我在第一次运行时遇到了段错误,但可以通过设置两个环境变量来解决此问题:

export CL_EXCLUDE=gfx1036
export HSA_OVERRIDE_GFX_VERSION=11.0.0

我目前正在使用 ROCm v5.5,我相信这就是需要这样做的原因。 该版本增加了对 AMD 7000 系列 GPU 的支持,但支持还不是很完整。 这些环境变量诱骗 Pytorch 和其他库认为它是其他模型并使其工作。

我之前写过一些关于使用 7900 XTX 安装 ROCm 和 TensorFlow 的说明。 不过,它们可能已经过时了。

无论如何,安装并导出这些环境变量后,Web UI 启动并生成图像!

3、SDXL提示词

该过程的第一步是找到一些好的纹理生成提示。 这当然是整个事情中最具创意的部分,并且对你的结果影响最大。

我这里没有太多指导; 这很大程度上取决于你想要生成的内容以及想要获得的风格。 然而,这是一个我已经取得很大成功的提示示例:

top-down image of rough solid flat dark, rich slate rock. interspersed with bright ((flecks)) of ((glinting)) metallic spots like mica. high quality photograph, detailed, realistic

负面提示:

blurry, cracks, crevice, round, smooth, distinct, pebble, shadows, coin, circle

请注意一些单词周围的括号。 这是我正在使用的 AUTO1111 webui 的一个功能,它告诉模型更多地关注它们周围的提示部分。 还有一些其他奇特的提示语法技巧; 大量的灵活性和可供探索的选项。

4、SDXL参数

下一步是为图像生成提出良好的参数。

我发现 Stable Diffusion XL 实际上比旧版本对所选参数更敏感。 最重要的是,与一年前相比,需要调整的东西要多得多。 结果,我确实花了很长时间才想出能够产生令我满意的图像的设置。

为了解决这个问题,我广泛使用了 AUTO1111 webui 的“X/Y/Z 图”功能。 它位于用户界面的“脚本”下拉列表中:
在这里插入图片描述

它生成输出图像的网格,其中每个单元格都是使用不同的参数组合生成的。 使用它时的输出如下所示:
在这里插入图片描述

它对于为我的图像确定一组良好的基线参数非常有用。

经过大量实验后,这是我现在在生成新纹理时使用的基线参数:

  • 采样方法:欧拉
  • 采样步数:60
  • 宽度/高度:1024x1024
  • CFG 量表:6.5(我发现正确地做到这一点尤其重要)
  • 平铺:启用(需要生成无缝平铺的纹理;极其重要)
  • 修复:已禁用(启用此功能后我尝试的所有操作都运气不好)

你可能需要自己进行试验才能找到适合你的用例的参数,但在开始时这些可能会作为一个很好的基准。

我观察到的另一件事是,启用平铺会导致生成的图像总体上显着不同。 例如,当使用 Stable Diffusion Dream Studio 在线生成图像以利用其快速 GPU,然后尝试在本地复制这些结果时,这会变得很棘手。 他们的托管 UI 中没有平铺选项,也不允许调整采样器等参数,因此很难获得精确匹配。

5、将纹理从 1K 转换为 4K

一旦我找到了一个好的提示和好的参数,我只需将其设置为生成一堆图像,然后就可以了! 我让它运行了大约 2 个小时,并选出了大约 50 张图像。 虽然很多都是不好的,但是这堆宝石中有足够多的宝石可供使用。

你可能已经注意到的一件事是,我在这篇文章的标题中提到了“4K 纹理”,但到目前为止我生成的所有图像都是 1K。 好吧,如果你认为我会说我使用多种可能方法中的一种沿着升级路线做了一些事情,那么你实际上就错了!

我创建了一种独特的方法,将AI生成的纹理组合在一起,以生成更高分辨率的输出。 生成的纹理保留源图像的无缝/无限平铺属性。

我构建了一个在浏览器中运行的工具,可以轻松地完成此操作,你可以在这里使用它, 100% 免费且开源。

过程非常简单。 你拖放 4 个看起来相似的无缝平铺稳定扩散生成的纹理,并将它们组合在一起。 正如我提到的,输出也将是无缝平铺的,并且分辨率提高了 4 倍。

该工具的 UI 如下所示:
在这里插入图片描述

你可以右键单击生成的图像并选择“图像另存为”将结果下载为 PNG 格式。 默认情况下的输出非常大,因此你可能需要使用像 sqoosh 这样的工具来压缩/优化它。

与稳定扩散和其他AI工具相比,其实现实际上技术含量相当低。 但我发现总体效果非常好!

它最适用于看起来非常相似的图像。 如果样式、颜色等方面存在较大差异,则在结果输出中可能会很明显并且看起来很糟糕。

获得外观非常相似的源图像的一个好方法是找到你喜欢的生成图像,然后生成它的变体。 为此,请将生成的图像上传到 AUTO1111 Web UI 的“PNG Info”选项卡。 然后,单击“发送到 txt2img”按钮,它将使用用于生成它的所有参数预先填充 UI。

然后,勾选 txt2img 选项卡上的“额外”复选框。 将“变化强度”设置为较小的值,例如 0.1-0.3,并生成十几个左右的图像。 它们整体看起来应该与原始版本相似,但细节不同。 如果您选择其中 4 个上传到无缝纹理缝合器工具,我发现输出通常看起来不错。

6、构建 PBR 纹理

一旦获得了满意的拼接 4K 图像,就可以将它们制作成完整的 PBR 纹理了。

为此,我使用了一个名为 Poly 的工具。 他们提供了一个AI驱动的纹理生成器,将图像作为输入并为其生成法线、高度、环境光遮挡、金属度和粗糙度贴图。 他们还提供自己的基于提示的生成工具,但我个人更喜欢自己生成它提供的控制。

他们的工具可以让你免费生成法线图和高度图,但是他们每月向你收取 20 美元来生成其他图。 我个人现在确实支付了该订阅费用,但你不必为了获得良好的结果而支付费用。 法线贴图是最重要的部分,您可以为纹理设置全局粗糙度/金属度值(这是您很多时候所需要的),或者编写自定义着色器以从像素值动态生成它们。

另一种可用于生成法线贴图的方法是 SmartNormap。 它使用非人工智能方法以编程方式为任何源图像生成法线贴图。 它有一些参数可以调整,结果还不错,但根据我的经验,总体来说不如AI驱动的 Poly 工具好。

无论如何,是的,那时你可以下载贴图并将其插入 Blender、Three.JS 或你想要的任何其他 3D 软件中。

如果你想更疯狂地使用它,无缝 4K 输出纹理可以与十六进制平铺算法一起使用,使其无限平铺,没有任何重复。 我正在开发一个 Three.JS 库来自动处理这个问题,下面是我在 Blender 中生成的一些地形上的布局:

在这里插入图片描述

7、结束语

这里真的有闸门打开的感觉。 我个人发现,使用 AI 图像生成纹理和其他构建块资产而不是完整图像或艺术品才是正确的选择。 我的创造力和投入有很大的空间来指导整个过程。 有无限的可能性可以探索,整个过程在我看来还是蛮有趣的。

无论如何,我希望这些内容对您有所帮助,如果你决定亲自尝试一下,祝你好运。


原文链接:用SDXL生成4K PBR纹理 — BimAnt

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

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

相关文章

Django、Nginx、uWSGI详解及配置示例

一、Django、Nginx、uWSGI的概念、联系与区别 Django、Nginx 和 uWSGI 都是用于构建和运行 Web 应用程序的软件,这三个软件的概念如下: Django:Django 是一个基于 Python 的开源 Web 框架,它提供了一套完整的工具和组件&#xf…

解决每次重启ganache虚拟环境,十个账号秘钥都会改变问题

很多时候 我们启动一个 ganache 环境 然后 通过私钥 在 MetaMask 中 导入用户 但是 当我们因为 电脑要关机呀 或者 ETH 消耗没了呀 那我们就不得不重启一个ganache虚拟环境 然后 你在切一下网络 让它刷新一下 你就会发现 上一次导入的用户就没有了 这是因为 你每次 ganache…

第2篇 机器学习基础 —(1)机器学习方式及分类、回归

前言:Hello大家好,我是小哥谈。机器学习是一种人工智能的分支,它使用算法和数学模型来使计算机系统能够从经验数据中学习和改进,而无需显式地编程。机器学习的目标是通过从数据中发现模式和规律,从而使计算机能够自动进…

React封装自定义表单校验方法

一、表单校验 为什么要封装自定义表单校验方法,因为在后台管理系统中,通常我们会涉及到用户的添加或则信息的修改,这时候通常就涉及表单的相关校验。但通常一个系统中的表单校验针对同一个字段来说是统一的。因此我们就需要将对应的校验字段的…

STM32复习笔记(五):FSMC连接外部SRAM

目录 Preface: (一)原理相关 (二)CUBEMX配置 (三)轮询方式读写 (四)DMA方式读写 Preface: STM32F4有一个FSMC(Flexible Static Memory Contr…

侯捷 C++ STL标准库和泛型编程 —— 9 STL周围

最后一篇,完结辽!😋 9 STL周围 9.1 万用Hash Function Hash Function的常规写法:其中 hash_val 就是万用Hash Function class CustumerHash { public:size_t operator()(const Customer& c) const{ return hash_val(c.fna…

BASH shell脚本篇5——文件处理

这篇文章介绍下BASH shell中的文件处理。之前有介绍过shell的其它命令,请参考: BASH shell脚本篇1——基本命令 BASH shell脚本篇2——条件命令 BASH shell脚本篇3——字符串处理 BASH shell脚本篇4——函数 在Bash Shell脚本中,可以使用…

【C++】String -- 详解

⚪C语言中的字符串 C 语言中,字符串是以 \0 结尾的一些字符的集合,为了操作方便,C 标准库中提供了一些 str 系列的库函数,但是这些库函数与字符串是分离开的,不太符合 OOP 的思想,而且底层空间需要用户自己…

【Linux】工具:gcc/g++ 升级 7.3 版本

安装语言信息 sudo yum install -y centos-release-scl-rh centos-release-scl安装 7.3 版本 gcc 和 g 编译器 sudo yum install -y devtoolset-7-gcc devtoolset-7-gcc-c加载配置文件 临时生效 source /opt/rh/devtoolset-7/enable 将相应内容重定向到配置文件中&#xff…

Is This The Intelligent Model(这是智能模型吗)

Is This The Intelligent Model 这是智能模型吗 Ruoqi Sun Academy of Military Science Defense Innovation Institute, Beijing, 100091, China E-mail: ruoqisun7163.com The exposed models are called artificial intelligent models[1-3]. These models rely on knowled…

讲讲项目里的仪表盘编辑器(二)

应用场景 正常来说,编辑器应用场景应该包括: 编辑器-预览 编辑器 最终运行时 怎么去设计 上一篇推文,我们已经大概了解了编辑器场景。接下来,我们来看预览时的设计 编辑器-预览 点击预览按钮,执行以…

[Unity][VR]Oculus透视开发图文教程1-Passthrough应用XR项目设置

Oculus现在已向开发者公布了如何使用自己的设备Camera,本系列课程就来手把手地告诉你如何在Unity中使用这个特性。 第一步,既然用的是Quest的特性,那就需要先引入Quest的Unity开发SDK。并且完成基本的VR开发项目设置。 新建Unity项目后,在编辑器界面先点击Window,打开资…

虹科分享 | 为工业机器人解绑,IO-Link wireless无线通讯技术可实现更加轻量灵活的机器人协作

背景 机器人是一种能够半自主或全自主工作的智能机器。中国电子学会组织发布的《中国机器人产业发展报告(2022年)显示,近些年,我国机器人市场规模持续快速增长,“机器人”应用不断拓展深入,预计五年年均增…

YOLOv5、YOLOv8改进:RepVGG结构

1.简介 论文参考:最新RepVGG结构: Paper 我们所说的“VGG式”指的是: 没有任何分支结构。即通常所说的plain或feed-forward架构。 仅使用3x3卷积。 仅使用ReLU作为激活函数。 主要创新点为结构重参数化。在训练时,网络的结构是多分支进…

P4727 [HNOI2009] 图的同构计数

B u r n s i d e : ∣ X / G ∣ 1 ∣ G ∣ ∑ g ∈ G ∣ X ( g ) ∣ Burnside:|X/G|\frac{1}{|G|}\sum\limits_{g\in G}|X^{(g)}| Burnside:∣X/G∣∣G∣1​g∈G∑​∣X(g)∣ 该题: ∣ X / G ∣ 1 ∣ G ∣ ∑ b 2 k Π ( b i …

Visopsys 0.92 发布

Visopsys 是一个 PC 机的操作系统,系统小型、快速而且开源。有着丰富的图形界面、抢先式多任务机制以及支持虚拟内存。Visopsys 视图兼容很多操作系统,但并不是他们的克隆版本。Visopsys 0.92 现已发布,此维护版本引入了多任务处理程序、文件…

JS里实现判断条件不通过退出整个循环

总结,使用for...in循环实现。 如果你需要在JavaScript中使用类似break的行为,你可以使用for...in循环。下面是一个例子: let arr [1, 2, 3, 4, 5];for (let index in arr) {if (arr[index] > 3) {console.log(找到了大于3的元素&#xf…

3126: 【C2】【结构体】小明做调查

题目描述 小明的班级同学们很不喜欢小明,小明想做点什么改变同学们的印象,现在小明想调查班级中每个同学的生日,并按照从大到小的顺序排序。但和蔼的编程老师总让他去放鸭子了,没有时间,所以请你帮他排序。 输入 有…

二叉树题目:路径总和 II

文章目录 题目标题和出处难度题目描述要求示例数据范围 前言解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:路径总和 II 出处:113. 路径总和 II 难度 4 级 题目描述 要求 给你二叉树的根结点 root \tex…

MySQL找回误删的数据,数据恢复

原创作品,未经同意,请勿转载;允许复制链接,对原文直接进行转发。 原创作者玉龙有着十几年大厂软件开发工作经验, 目前自由职业, 欢迎业务洽谈。 误删了几十万条MySQL记录, 要如何找回物理删除的…