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

news2024/12/18 20:31:50

本节内容,是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.coloradmin.cn/o/2261775.html

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

相关文章

DC-8笔记

靶机信息 官网地址:DC: 8 ~ VulnHub DC-8 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing.This challenge is a bit of a hybrid between being an actual challenge, and being a "proof of c…

购物商城案例 1-- VueCli创建项目,调整目录,vant组件库

基于VueCli创建项目 调整目录,新增两个目录 修改路由和App.vue 路由中规则清空 新建文件夹api和utils api文件夹:发请求的一些文件 utils文件夹:工具函数方法 vant组件库:第三方vue组件库 vant-ui 找到vant官网,进入va…

npm : 无法加载文件 D:\nodejs\npm.ps1

问题描述 npm run serve 启动一个Vue项目,报错如下: npm : 无法加载文件 D:\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/? LinkID135170 中的 about_Execution_Policies。…

12.17双向链表,循环链表

循环单向链表 1.头文件test.h #ifndef __TEST_H_ #define __TEST_H_#include<stdio.h> #include<stdlib.h>typedef struct node {union{int len;int data;};struct node *next; }looplink,*looplinkPtr;//创建 looplinkPtr create();//判空 int empty(); //申请…

【多模态】MiniCPM-V多模态大模型使用学习

MiniCPM-V模型使用 前言1. 模型文件下载和选择2. 环境安装配置3. 模型微调3.1 qlora微调minicpm-v-int43.2 lora微调minicpm-v3.3 merge_lora3.4 lora微调后量化int4 4. 模型推理4.1 huggingface API4.2 swift API(A) swift&#xff08;不支持batch inference&#xff09;(B) s…

VMware ubuntu12.04怎么设置静态IP联网

记得刚开始学习嵌入式就是从ubuntu12.04的环境开始学习的C语言&#xff0c;当时没有弄清楚怎么设置静态IP联网&#xff0c;现在写一篇文章。 1.首先&#xff0c;关闭ubuntu的网络&#xff1b; 2.电脑使用的是wifi,将VMware桥接到该网卡上&#xff1b; 3.在虚拟机设置里面选择桥…

vs 调试

常用&#xff1a; 调试->窗口-> 断点 监视 自动窗口 局部变量 调用堆栈 内存 反汇编&#xff08;也可以右键&#xff0c;转到反汇编&#xff09; 寄存器 快捷键&#xff1a; F5:启用调试&#xff0c;经常用来跳到下一个断点处 F9创建断点和取消断点。断点的重要作用&…

从构想到实现:EasyOne 多模态 AI 产品开发历程

在人工智能技术飞速发展的今天&#xff0c;智能产品和服务已经从单一的应用向多模态智能系统进化。随着大语言模型、计算机视觉、语音识别等领域的突破&#xff0c;开发集成多种 AI 技术的平台变得日益重要。为此&#xff0c;我们开发了 EasyOne&#xff0c;一个全新的 AI 多模…

游戏引擎学习第43天

仓库 https://gitee.com/mrxiao_com/2d_game 介绍运动方程 今天我们将更进一步&#xff0c;探索运动方程&#xff0c;了解真实世界中的物理&#xff0c;并调整它们&#xff0c;以创建一种让玩家感觉愉悦的控制体验。这并不是在做一个完美的物理模拟&#xff0c;而是找到最有趣…

【已解决】启动此实时调试器时未使用必需的安全权限。要调试该进程,必须以管理员身份运行此实时调试器。是否调试该进程?

【已解决】启动此实时调试器时未使用必需的安全权限。要调试该进程&#xff0c;必须以管理员身份运行此实时调试器。是否调试该进程? 目录一、前言二、具体原因三、解决方法 目录 报错截图 一、前言 进行应用程序开发时&#xff0c;需要对w3wp进行附加调试等场景&#xff…

idea无法识别文件,如何把floder文件恢复成model

前景&#xff1a; 昨天&#xff0c;我在之前的A1214模块包下新增了一个demo类&#xff0c;然后又新建了一个A1216模块&#xff0c;写了算法题&#xff0c;后面打算用git提交&#xff0c;发现之前的A1214模块下的demo类和新建的模块源文件都已经被追踪了&#xff0c;都是绿色的&…

2024三掌柜赠书活动第三十六期:深度学习高手笔记系列

目录 前言 理解深度学习基础 数据预处理技巧 关于《深度学习高手笔记》 编辑推荐 内容简介 作者简介 图书目录 媒体评论 《深度学习高手笔记》全书速览 结束语 前言 不用多讲&#xff0c;近两年的技术圈关于AI相关的技术讨论层出不穷&#xff0c;而深度学习作为人工…

【技术干货】移动SDK安全风险及应对策略

移动SDK&#xff08;软件开发工具包&#xff09;已经成为应用开发中不可或缺的一部分。通过SDK&#xff0c;开发者能够快速集成分析、广告调度、音视频处理、社交功能和用户身份验证等常见功能&#xff0c;而无需从零开始构建。这不仅能节省时间和资源&#xff0c;还能提高开发…

【一文概述】常见的几种内外网数据交换方案介绍

一、内外网数据交换的核心需求 内外网数据交换的需求核心在于“安全、效率、合规”&#xff0c;而应用场景的多样性使得不同企业需要定制化的解决方案。通过结合业务特性和安全等级要求&#xff0c;企业能够选择适合的技术方案来实现高效、安全的内外网数据交换。 1、数据安全…

【Linux 篇】Docker 容器星河与镜像灯塔:Linux 系统下解锁应用部署奇幻征程

文章目录 【Linux 篇】Docker 容器星河与镜像灯塔&#xff1a;Linux 系统下解锁应用部署奇幻征程前言一 、docker上部署mysql1. 拉取mysql镜像2. 创建容器3. 远程登录mysql 二 、docker上部署nginx1. 拉取nginx镜像2. 在dockerTar目录下 上传nginx.tar rz命令3. 创建nginx容器4…

Pytorch | 从零构建Vgg对CIFAR10进行分类

Pytorch | 从零构建Vgg对CIFAR10进行分类 CIFAR10数据集Vgg网络结构特点性能应用影响 Vgg结构代码详解结构代码代码详解特征提取层 _make_layers前向传播 forward 训练和测试训练代码train.py测试代码test.py训练过程和测试结果 代码汇总vgg.pytrain.pytest.py 前面文章我们构建…

实战 | 某院校小程序记录

更多大厂面试经验的视频分享看主页和专栏 目录&#xff1a; 前言&#xff1a; 渗透思路 1.绕过前端 2.信息泄露 3.爆破用户账号密码 4.信息泄露2 结束 前言&#xff1a; 遇到一个学校小程序的站点&#xff0c;只在前端登录口做了校验&#xff0c;后端没有任何校验&#x…

k8s kubernetes

文章目录 CGroupk8s运行时k8s组件k8s组件安装kubeadm命令kubectl命令k8s官网代码 CGroup 在 Linux 上&#xff0c;控制组&#xff08;CGroup&#xff09;用于限制分配给进程的资源。kubelet 和底层容器运行时都需要对接控制组来强制执行 为 Pod 和容器管理资源 并为诸如 CPU、…

uniapp中vuex(全局共享)的应用

一、Vuex概述 1.1 官方解释 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 它采用集中式存储管理 应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化 - Vuex 也集成到 Vue 的官方调试工具 devtools extension&#xff0c;提供了诸…

React简单入门 - [Next.js项目] - 页面跳转、AntD组件、二级目录等

须知 1Next.js 官网(英文)Next.js by Vercel - The React Framework2Next.js 文档(中文)简介 | Next.js 中文文档3React官网(中文)https://react.docschina.org/learn4Ant Design组件总览组件总览 - Ant Design5tailwindcss类名大全 官网英Justify Content - TailwindCS…