Stable Diffusion教程!ControlNet 三维类控制

时间:2024-06-04
B站视频:av1904838650
类别:AIGC
水平:入门
设计师入站必刷的宝藏频道,掌握设计真本领与AI并肩 👉 立即点击

当视频无法加载时请刷新页面,
或前往PC获得最佳体验。

Stable Diffusion教程!ControlNet 三维类控制

教程作者: 野鹿志(授权转载)

交作业:微博搜索话题 #优设每日作业# 进入话题页即可发布作业

一、关于教程

上一篇文章我们分享了 ControlNet 线条类控制,今天我们接着分享 ControlNet 的三维类控制,废话不多说,进入今天的正题吧!

二、教程分享

01 前言

三维类控制包括 Depth (深度)和 NormalMap (法线贴图),这两种控制在三维软件中比较常见,所以我把它们归类为三维类。

随着 Stable Diffusion 的更新,这两种控制类型都增加了一些新的预处理,今天大家就跟着老鹿一起把它们梳理一遍吧!

02 Depth (深度)

使用过 C4D 的鹿友应该比较熟悉,在三维渲染的时候,我们通常会多通道渲染保存一张深度图,用于后期添加景深效果。

Depth (深度)也是一样,可以将图片提取成一张用黑白灰表示的深度图,用于表达图片常见中的远近关系,其中白色代表近景,黑色代表远景:

Stable Diffusion教程!ControlNet 三维类控制

在 Stable Diffusion 中,如果你希望生成与原图构图类似,但是内容不同的图通常可以选择 Depth 控制类型:

Stable Diffusion教程!ControlNet 三维类控制

在 Depth 中一共有六个预处理器,分别是 Midas、Zoe、Leres、Leres++、Anything 和 Hand_Refiner:

Stable Diffusion教程!ControlNet 三维类控制

Anything 和 Hand_Refiner 是新增的两个预处理器,其中 Hand_Refiner 是专门用来修复手部,我们稍后再说。

Anything 会有它专门的模型,需要下载下来放置到 ControlNet 的模型文件夹里:

Stable Diffusion教程!ControlNet 三维类控制

同时它还有自己的预处理器,通常情况下你点击爆炸图标它会在后台自动下载:

Stable Diffusion教程!ControlNet 三维类控制

但如果你是因为网络问题下载失败的话就会麻烦一点,因为通过控制台可以看到,在下载模型之前,后台还进行了一些环境部署:

Stable Diffusion教程!ControlNet 三维类控制

文后我会把相关文件以及手动安装方法分享给大家:

Stable Diffusion教程!ControlNet 三维类控制

需要先将 facebook research 压缩包解压如图所示的指定路径中,如果 cache 文件夹里没有 torch 和 hub 文件夹,新建即可:

Stable Diffusion教程!ControlNet 三维类控制

然后把 dinov2_vitl14_pretrain 存放如图所示的路径里,同样如果没有 checkpoints 文件夹新建即可:

Stable Diffusion教程!ControlNet 三维类控制

再将 depth_anything_vitl14 模型文件存放到 ControlNet 对应的预处理器文件夹中:

Stable Diffusion教程!ControlNet 三维类控制

最后再将 control_sd15_depth_anything 模型存放到 ControlNet 对应模型文件夹中:

Stable Diffusion教程!ControlNet 三维类控制

分享给大家的文档里,也写了具体的安装步骤供大家参考:

Stable Diffusion教程!ControlNet 三维类控制

在 Leres 和 Leres++ 这两种预处理器中会有两个特有参数,移除近景和移除远景:

Stable Diffusion教程!ControlNet 三维类控制

作用如同字面意思,就是对远景和近景的修剪,下面是远近各自修剪百分之50之后的对比图:

Stable Diffusion教程!ControlNet 三维类控制

下面是五种预处理器的对比,可以看到 Midas 和 Zoe 忽略了一部分背景的细节,但是前景比较清楚。

Leres 和 Leres++ 背景细节最多,但是相对的,前景就会有点模糊。

新的预处理器 Anything 在处理远近的细节上跟接近 Midas 和 Zoe,但是近景更加清晰锐利:

Stable Diffusion教程!ControlNet 三维类控制

在实际进行生图测试的时候,我发现用于适配 Anything 的 ControlNet 模型生成的图都坏掉了,不知道如果是生成室内效果图会不会好一些。

因此建议多数时候,我们还是用默认的 depth 模型吧:

Stable Diffusion教程!ControlNet 三维类控制

最后我们再来说这个新增的 Hand_Refiner 预处理器,要使用它首先需要将 hrnetv2 和 gaphormer 这两个文件放到 ControlNet 对应的预处理器文件夹中:

Stable Diffusion教程!ControlNet 三维类控制

然后再将 control_sd15_inpaint_depth_hand_fp16 存放到 ControlNet 对应模型文件夹中:

Stable Diffusion教程!ControlNet 三维类控制

这里我先用sd生成了一张两只手都有问题的女孩图像:

Stable Diffusion教程!ControlNet 三维类控制

将它发送到图生图局部重绘里,并用画笔涂抹有问题的手部区域:

Stable Diffusion教程!ControlNet 三维类控制

然后在 ControlNet 中 Depth 控制类型中选择 Hand_Refiner 预处理器以及对应的适配模型,点击爆炸图标可以看到能够提取出一张正确的手部深度图:

Stable Diffusion教程!ControlNet 三维类控制

点击生成手部的问题就被修复了:

Stable Diffusion教程!ControlNet 三维类控制

03 NormalMap (法线贴图)

相信许多鹿友应该都是我以前写C4D内容的时候关注野鹿志的,所以对法线贴图这个概念并不陌生。

NormalMap (法线贴图)就是用图片的RGB通道记录物体在三维场景中的坐标信息,从而模拟光影以达到凹凸效果。

三维软件中我们通常是在制作材质的时候会用到法线贴图,而在 Stable Diffusion 中,这项 NormalMap 控制类型和 Depth 使用场景类似,主要是通过光影来还原画面的布局:

Stable Diffusion教程!ControlNet 三维类控制

在 NormalMap 中一共有三个预处理器,分别是 Bae、Midas 和 Dsine:

Stable Diffusion教程!ControlNet 三维类控制

其中 Midas 是以前 ControlNet1.0 的算法,官方表示已经弃用,大家仅做了解:

Stable Diffusion教程!ControlNet 三维类控制

在这个算法中有一个 Normal Background Threshold 的选项,默认数值 0.4,数值范围是 0-1:

Stable Diffusion教程!ControlNet 三维类控制

它的作用主要就是移除远景的信息,数值越大,远景的信息越少:

Stable Diffusion教程!ControlNet 三维类控制

Dsine 是新增的一种算法,我在网上暂时没有找到相关的使用说明,它似乎是有专门的 ControlNet SDXL 模型。

要使用它需要将预处理器模型 dsine.pt 存放到对应的 ControlNet 预处理器文件夹中:

Stable Diffusion教程!ControlNet 三维类控制

同时要将 ControlNet 模型放到对应的模型文件夹中:

Stable Diffusion教程!ControlNet 三维类控制

但经过我的测试,它在SD1.5模型下也可以使用,下图中我们可以看到,当我SD大模型选择1.5模型,同时ControlNet模型也使用1.5模型时,控制仍然生效。

而且说实话,我个人并不觉得在这个例子上,SDXL控制会比1.5模型好:

Stable Diffusion教程!ControlNet 三维类控制

Dsine 中会有 Fov 和 Iterations 两个参数,同样我在网上暂时没有找到相关说明,只能说下自己的理解:

Stable Diffusion教程!ControlNet 三维类控制

Fov 是视场角的意思,数值默认为60,数值范围0-360,我觉得这里的单位应该是度。

应该是为了模拟三维场景摄像机中不同视场角所看到的光影变化。

从下图我们可以看到,当数值为0和数值为360的时候,法线贴图完全相同,这就是由于360度和0度的位置是一样的:

Stable Diffusion教程!ControlNet 三维类控制

Iterations 是迭代的意思,默认数值为5,参数范围1-20,这个参数我只能从三维软件的使用经验来推测它的用途。

在三维软件中,迭代次数通常指的是对某个数值计算的次数,这里可能就是用迭代次数来对生成的法线贴图进行微调吧。

从下图的对比中我们可以看到,法线贴图的区别并不是很大:

Stable Diffusion教程!ControlNet 三维类控制

接下来是三种预处理器在默认参数情况下生成法线贴图的对比图,Dsine 算法会比 Bae 更加清晰,而 Midas 算法和我们常见的法线贴图差异较大:

Stable Diffusion教程!ControlNet 三维类控制

最后则是三款预处理器生成图的对比,Midas 基本可以弃用了,Dsine 生成的图也比 Bae 清晰,但是反而少了景深的效果。

至于修改 Dsine中 的 Fov 参数,是否也可以得到景深效果我就没有进一步测试了。

说实话,我从来就没有用过 NormalMap 这个控制类型:

Stable Diffusion教程!ControlNet 三维类控制

好了以上就是 ControlNet 三维类控制的所有内容。

欢迎关注「野鹿志」的微信公众号:

Stable Diffusion教程!ControlNet 三维类控制

学完这篇教程的人还在学…

附件下载

文件名 文件大小 提取码 下载来源
ControlNet 三维类控制7G6666 点此复制 登录下载
2 收藏 1

非特殊说明,本站 UiiiUiii.com 上的教程均由本站作者及学员原创或翻译,原作品版权归属原作者,转载请联系 @优优教程网 授权。

转载时请在文首注明,来源 UiiiUiii.com 及教程作者,并附本文链接。谢谢各位编辑同仁配合。UiiiUiii 保留追究相应责任的权利。

复制本文链接
img

发表评论 已发布 1

还可以输入 800 个字
yzm
 
 
加载更多评论
没有更多评论了

优优教程网 365 天打卡计划

点击 #优设每日作业# 进入微博超话页面,上传并发布你的练习作业,话题微博格式【 优优教程网365打卡计划 – DAY 01 】,优秀作业将有机会被 @优优教程网 官方微博转发点评。

/

支持键盘 ← → 键翻阅图片