Stable Diffusion Controlnet常用控制类型解析与实战课程 4

本节内容,是stable diffusion Controlnet常用控制类型解析与实战的第四节课程。上节课程,我们陆续讲解了几个与图像风格约束相关的控制类型,本节课程我们再学习一些实用价值较高的控制类型,看一看他们提供了哪些控制思路。

一:Tile

我们先看一下tile控制类型,这是一个非常重要的控制类型,tile的中文翻译是地砖,瓦片。该控制类型采用分块处理的方式,将图像分割为多块区域,同时tile控制类型会主动识别单独块中的语义信息,并对这些分块的区域分别采样处理。最后进行整合生成图像。

 这样的方式有哪些作用呢?我们在之前的课程中讲到过,可以使用图生图中的SD upscale,来增加图像分辨率,比如我们这里使用了一张512x512看起来有点模糊的图片

我们使用SD upscale,并且调整重绘幅度设置为0.3,填好一个简单的提示词(1 girl),选择SD upscale,放大算法设置为R-ESRGAN 4x+,点击生成,可以绘制出放大后的图像。

但是如果我们将重绘幅度调整为默认值0.75,仍然使用SD upscale,点击生成,可以看到,生成了奇怪的图像。

这是因为如果设置了较高的重绘幅度,放大算法在放大图像像素时可能出现难以预料的变化,从而导致最终合成出了奇异的图像。

我们可以借助tile控制类型的分块重采样方式来对放大算法进行约束。比如,重绘幅度仍然设置为0.75,启用controlnet,选择tile控制类型,预处理器默认使用tile_resample , 这里不勾选Upload independent control image选项,则代表使用上面所上传的参考图片作为控制类型的参考图。

点击生成,可以看到生成的图片虽然增加了一些细节,但还是很好地还原了原图。

这是因为tile会逐块去解析语义信息、从而限制全局提示词对分块采样绘制的影响,在还原图片时则会表现得更加准确。

如同上面演示的例子,使用放大算法放大图像的同时使用Tile控制类型进行控图,这是tile控制类型最典型的使用方法。

该方式不仅可以优化图像细节的同时不会影响画面结构。并且由于采用了分块重采样与放大的方式,也能有效减少绘制图片过程中的显存占用,是绘制高分辨率图像的重要手段。

需要注意的是tile控制类型在分块采样绘制图像时,也会增加一些细节,所以与原图并不是完全一致。比如这里生成的图片中人物的眼睛就变大了。

另外,虽然我们经常会在图生图模式中使用tile结合放大算法来生成高清图像,但在文生图模式中我们同样可以使用tile控制类型来控制绘图过程。

tile控制类型不仅仅适合人物,对物品的细节处理也非常优秀,只需要选择好合适的基础模型即可。

我们举例演示一下,

比如这里有一幅低分辨率的行李箱图片,图片原始分辨率为512*512,我们可以通过tile_resample结合sd upscale去提升图片分辨率,      

使用写实模型,填写简单的提示词bright background, a Luggage,重绘幅度设置为为0.3,启用tile_resample与sd upscale,sd upscale放大倍数调整为4。

点击生成,stable diffusion将绘制出高分辨率的行李箱图片

tile提供了多个细分预处理器。

我们通过在文生图模式下使用tile控制类型控制图像生成来做一下对比

我们填写简单的提示词1girl,启用controlnet,并上传控制图像,

先使用tile_resample预处理器,点击生成,可以看到生成的图片人物衣服的颜色可能发生较大偏移。

将预处理器更换为tile_colorfix,这个预处理则主要用于解决颜色偏移的问题,tile_colorfix 可以更好的控制颜色偏移程度)。tile_colorfix 增加了一个名为 Variation 的参数,可以控制每个tile之间的色彩变化,值越小,tile色彩变化越小,值越大瓦片的色彩变化越大,我们可以根据所需要的颜色变化力度来设置该值。比如我们这里使用较小的Variation,点击生成,出图时与原图的颜色偏差就会比较小。

tile_colorfix有时候生成的某些图像细节可能会过于柔和,

使用tile_colorfix+sharp可以使生成的图像更加锐利。

tile_colorfix+sharp增加了一个Sharpness选项可以控制图像的锐化程度,我们这里调整为0.8,点击生成,看一下效果。

在tile项的预处理下拉列表中还有一个blur_guassian预处理器。

可以在预览图中看到预处理过程会将原图高斯模糊处理,然后再据模糊处理后的图片像素去控制图片绘制过程。

绘制图片时,AI也会尽可能从模糊的像素中去还原图片,该预处理可以通过sigma选项调整高斯噪声效果。

我们可以利用该预处理器实现一个有趣的功能,比如我们上传的图片背景是比较模糊的,我们可以使用该预处理器将整体图像高斯模糊预处理后再控制图像绘制,通过调整sigma选项,可以使绘制出的图像背景与背景中的元素变得清晰。

我们演示一下

还是使用刚才的人物图作为控制图像,可以看到该图像背景是比较模糊的,我们使用blur_guassian预处理器,提示词和参数不变,然后将sigma值调整为5,

点击生成,可以看到绘制的图片背景内容变得更加清晰。

使用blur_guassian预处理器,图片整体构成不会发生太大变化,但是颜色和某些细节可能会有较大的偏移,我们可以调整sigma参数平衡出图结果。 

二:Recolor

讲解完tile,我们再学习一个控制类型Recolor。顾名思义,recolor控制类型可以对图片重新上色,我们可以使用该预处理器给黑白照片上色,也可以给彩色照片重新上色,重新上色时还需要提示词来配合。

recolor需要自行下载对应的模型文件,下载地址为 

https://huggingface.co/lllyasviel/sd_control_collection/tree/main
 

还需要特别注意的是recolor模型文件分为SD1.5版本和SDXL版本,

其中ioclab_sd15_是sd1.5版本,sdi_xl_recolor是SDXL版本,且SDXL版本有128lora和256lora两个模型,这两者都可以使用,带有lora字样,是指该模型在训练时引入了lora训练方法。

我们继续演示recolor的使用,文生图中,启用controlnet,上传参考图,选择recolor后,模型部分还需要自己去选择,因为使用的是基于SD1.5的大模型,我们选择下载好的SD1.5 iolab_sd15_recolor这个模型,点击预览按钮,可以看到预处理后的图片已经去除了颜色信息。

点击生成,可以看到,stable diffusion给照片重新上了颜色,

recolor的一个有价值的用途就是给黑白老照片上色,我们可以上传黑白老照片,然后让recolor帮我们给黑白老照片上色,

比如我们这里有一张黑白老照片,文生图模式下,启用recolor控制类型,并上传老照片作为控制图片,这里控制参考图像的分辨率为640*456,点击上传图片与预览图片下方的箭头图标可以快捷设置目标图像的分辨率为控制图像的分辨率

这里可以不填写任何提示词,点击生成,可以看到,stable diffusion给老照片上了颜色。

我们可以使用stable diffusion进一步帮上色后的老照片提升分辨率,使图片更加清晰,提升分辨率的方法有很多,我们在之前的课程中已经讲述,这里就不再演示。

recolor有两个细分预处理器,recolor_luminance和recolor_intensity我们看一下对比

recolor_luminance 提取图像特征信息时注重颜色的亮度,

recolor_intensity,提取图像特征信息时更注重颜色的饱和度。

我大部分情况下使用recolor_luminance效果更好。

提示词污染与打断提示词

这里,我们补充一个关于提示词污染和打断提示词的知识点,我们在使用recolor时有时会借助提示词来引导上色。但很多时候recolor无法保证颜色准确出现在特定位置上,可能会出现相互污染的情况,比如控制类型使用recolor, 提示词中添加颜色信息引导AI绘制颜色,(1 girl, green clothes,  red hair),

这里的提示词增加了绿色衣服,红色头发描述,但是此时生成的图像,人物头发可能会出现了绿色,

这就是提示词污染。针对提示词污染问题,我们可以设计打断提示词:

1 girl, green clothes,  BREAK red hair,

提示词中增加了BREAK关键字对不同部分进行打断,该技巧能有效减少提示词污染的概率。点击生成,可以看到头发区域的绿色基本没有了。

recolor增加了一个选项Gamma Correction

翻译成中文是伽马修正,该选项用于调整预处理时检测的图像亮度,我们可以看一下对比,可以看到随着Gamma Correction数值减小,预处理后的图像亮度会增加,生成的图像也会更亮。

三:局部重绘控制类型

本节课程最后,我们再讲解一个控制类型-局部重绘

该控制类型与图生图里的局部重绘功能是类似的,但是controlnet的局部重绘通过更优秀的算法将重绘的地方与原图融合得更好。controlnet的局部重绘通常与图生图局部重绘配合使用,

我们演示一下,图生图模式中,上传一幅图片,该图片中包含了草原,大树,和人物,但是我们想把人物从这张图中擦除,我们可以使用局部重绘,将人物涂刷,修改提示词grassland big tree ,反向提示词中添加human,引导AI在生成的图像不要绘制人物元素,点击生成,可以看到,重绘后,人物的确没有了,但是重绘的区域与原图融合效果并不好,有时候甚至会多出一些完全不协调的元素。

这个时候我们可以使用controlnet的局部重绘控制类型,其中controlnet并选择局部重绘,预处理器选择inpaint_global_harmounious,这里我们不需要上传图片,stable diffusion默认会使用原图做参考,

点击生成,可以看到,此时绘制的图片融合效果明显要优于未使用controlnet局部重绘时生成的图片。

局部重绘根据采用的算法不同,提供了几种细分预处理器,我们对比一下使用这几种预处理器绘制的图像

一般来说inpaint_global_harmounious效果比较好,也使用得最多,

inpaint_only 融合能力通常不如inpaint_global_harmounious

inpaint_only + lamas融合能力比 inpaint_only要更加优秀,在某些场景,也可以实现较好的效果。

好了,本节课的课程到这里就结束了,我们做一下总结,本节课程我们陆续讲解了放大图像时可以增强细节的tile控制类型,可以给黑白老照片上色的recolor控制类型,以及能够帮助图像融合更加自然的局部重绘控制类型。这些控制类型为非常多的实际应用场景提供了有针对性的解决方案。下期课程,我们继续探讨另外几个controlnet控制类型,包括revision,instructp2p,ip-adapter,t2i-adapter,这些控制类型不仅各具特色,提供独特的图像控制方法,同时也从多个角度增强了Stable Diffusion的应用能力。

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

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

相关文章

C++之二:类和对象

相关代码: C语言是面向过程的,关注的是过程,分析求解问题的步骤,调用函数逐步解决问题。 C是面向对象的,关注的是对象,将一件事情的完成分为不同的几个参与者(对象),靠…

B站bilibili视频转文字字幕下载方法

本文将讲述介绍一种使用本地工具如何快速的下载B站的字幕为本地文本文件的方法。 通常获取B站字幕需要在浏览器中安装第三方插件,通过插件获取字幕。随着大模型,生成式AI,ChatGPT的应用,B站也提供了AI小助手对视频的内容进行总结…

EM算法的参数更新过程

1. 计算每个高斯分布的责任度 责任度(Responsibility) 表示数据点 由第 k 个高斯分布生成的概率占总概率的比例。在 E步(Expectation Step) 中计算。 公式: 其中: ​: 责任度,表示数据点 ​ …

文件包含include

文件包含 第一道题是攻防世界的fileclude 这里第二行我们可以看见告诉我们在flag.php里面 然后检查了两次file1和file2是否为空 如果file2"hello ctf"成立 那么就可以包含file1 这里我们要使用php伪协议 来访问我们需要的flag.php并且将file2的数值改为"hello…

优选算法——链表

1. 链表常用技巧和操作总结 2. 两数相加 题目链接:2. 两数相加 - 力扣(LeetCode) 题目展示: 题目分析:本题给的是逆序,其实降低了难度,逆序刚好我们从第一位开始加,算法原理其实就…

【5G】5G的主要架构选项

最初,在3GPP讨论中考虑了所有可能的聚合和核心网络组合,共有八个架构选项。以下重点介绍option2、3、4和7。 1. 独立组网 (Standalone, SA) 架构选项 2 :Standalone architecture with 5G-core 特点: 5G核心网(5GC, …

css 动画实现从中间到两边亮度逐渐变暗的流水灯效果

先看效果&#xff1a; 快结束效果 随着离中心点距离逐渐边远&#xff0c;亮度逐渐变暗 完整的视线代码如下&#xff1a; <template><div class"container"><div class"runner bottom to-right"></div><div class"runner …

kubeadm_k8s_v1.31高可用部署教程

kubeadm_k8s_v1.31高可用部署教程 实验环境部署拓扑图**部署署架构****Load Balance****Control plane node****Worker node****资源分配&#xff08;8台虚拟机&#xff09;**集群列表 前置准备关闭swap开启ipv4转发更多设置 1、Verify the MAC address and product_uuid are u…

测评|携程集团25年社招在线测评北森题库、真题分析、考试攻略

携程集团社招入职测评北森题库主要考察以下几个方面&#xff1a; 1. **言语理解**&#xff1a;这部分主要测试应聘者运用语言文字进行思考和交流、迅速准确地理解和把握文段要旨的能力。 2. **资料分析**&#xff1a;包括文字题和图表题&#xff0c;考察应聘者快速找出关键信息…

workman服务端开发模式-应用开发-websockt应用介绍

一、workerman介绍 1、框架介绍 workerman-chat框架是基于workerman的GatewayWorker框架开发的一款高性能支持分布式部署的聊天室系统。 workerman框架官网&#xff1a;http://www.workerman.net/ GatewayWorker框架文档&#xff1a;http://www.workerman.net/gatewaydoc/ 2、特…

34. 在排序数组中查找元素的第一个和最后一个位置 二分法

34. 在排序数组中查找元素的第一个和最后一个位置 class Solution { public:vector<int> searchRange(vector<int>& nums, int target) {vector<int> res(2,-1);res[0]findleft(nums,target);if(res[0] -1) return res;res[1] findright(nums,target);…

#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍03-SQL注入联合查询注入(Union-Based SQL Injection)

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

你了解TCP/IP参考模型吗

前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 你了解TCP/IP参考模型吗 一. TCP/IP参考模型二. TCP/IP模型图解三. TCP/IP模型的对比与OSI模型四. TCP/IP协议族五. 总结 TCP/IP参考…

RK3588, FFmpeg 拉流 RTSP, mpp 硬解码转RGB

RK3588 ,基于FFmpeg, 拉取RTSP,使用 mpp 实现硬解码. ⚡️ 参考: Rk3588 FFmpeg 拉流 RTSP, 硬解码转RGBUbuntu x64 架构, 交叉编译aarch64 FFmpeg mppCode RTSPint open_stream(

MySQL八股-全局锁,表级锁,表锁,元数据锁,意向锁,行级锁,行锁,间隙锁,临键

文章目录 全局锁表级锁表锁(表级锁)元数据锁(MDL&#xff0c;Meta Data Lock&#xff0c;表级锁)元数据锁演示元数据锁兼容的情况元数据锁互相阻塞的情况 意向锁&#xff08;Intention lock&#xff0c;表级锁&#xff09;意向锁分类意向锁演示&#xff1a;意向共享锁(**IS**)与…

【BUG记录】Apifox 参数传入 + 号变成空格的 BUG

文章目录 1. 问题描述2. 原因2.1 编码2.2 解码 3. 解决方法 1. 问题描述 之前写了一个接口&#xff0c;用 Apifox 请求&#xff0c;参数传入一个 86 的电话&#xff0c;结果到服务器 就变成空格了。 Java 接收请求的接口&#xff1a; 2. 原因 2.1 编码 进行 URL 请求的…

51c视觉~合集31

我自己的原文哦~ https://blog.51cto.com/whaosoft/12088488 #PDD 西南交大&利兹大学等联合提出金字塔离散扩散模型&#xff08;PDD&#xff09;&#xff0c;实现了3D户外场景生成的粗到细的策略 本文是对 ECCV 2024 Oral 文章Pyramid Diffusion for Fine 3D Large S…

strace跟踪的原理以及使用

如果想成为一名合格的工程师&#xff0c;那肯定应该知道如何去分析应用逻辑&#xff0c;对于如何优化应用代码提升系统性能也应该能有自己的一套经验。而今天想要讨论的是&#xff0c;如何拓展自己的边界&#xff0c;让自己能够分析代码之外的模块&#xff0c;以及对我自己而言…

Canoe CAPL编程

文章目录 CAPL 简介CAPL的程序结构CAPL的数据类型1. 无符号整数2. 有符号整数3. 有符号整数4. CAN消息类型5. 定时器类型6. 变量定义 on message xxx 中 this相关方法公共方法1. output(msgName) 从程序块输出message&#xff08;形式1&#xff09;或errorframe&#xff08;形式…

详解CompletableFuture

最近一直畅游在RocketMQ的源码中&#xff0c;发现在RocketMQ中很多地方都使用到了CompletableFuture&#xff0c;所以今天就跟大家来聊一聊JDK1.8提供的异步神器CompletableFuture&#xff0c;并且最后会结合RocketMQ源码分析一下CompletableFuture的使用。 Future接口以及它的…