Stable Diffusion 系统教程 | 强大的ControlNet 控制网

2023-09-14 15:22:07

2023年的2月13日,一款名叫ControlNet的插件横空出世,AI绘画变得更加可控

ControlNet直译过来很简单,就叫做控制网,开发者是一名华裔,毕业于苏州大学,目前在斯坦福做读博士一年级,大佬大佬!

在controlNet之前,基于扩散模型的绘画是极为难控制的,平时自嗨画画其实没有一点问题,随机就随机一点,但是对于一些特定要求的岗位的同学来说,这种抽卡式缺乏稳定性的模型很难真正提高效率。

1 ControlNet的作用结构

​ 根据一些额外信息控制扩散生成走向,业内人士称为微调,通俗点说就是大模型你不是随机吗,那我给你一些指引信息,让你乖乖听话朝着我期望的方向走

​ 这时候有好奇的小伙伴就要问到了,那他和图生图有什么区别吗?我直接输入图片不也可以达到同样的效果吗?其实从某种意义上来说是的,但我举如下一个例子你就明白了

​ 比如我现在要生成一个有着特定姿势的图片,我固然可以通过一张自己期待的姿势的图片输入,模型可能会了解到这个姿势,但与此同时,这种图片除了姿势的其他信息如画面颜色,风格,人物特征也会被网络捕获到,因而就可能会产生意外的化学反应,但是用ControlNet可以提取人体关键点(如下图),这样的话模型只会了解到纯粹的需要生成的姿势而不会混杂其他信息,可控性就会增强了

2 ControlNet的安装和使用

ControlNet本质是一个插件,所以类似于之前插件的安装(看之前的这篇插件安装的文章)

不同于一些插件,ControlNet还需要搭配不同的模型来使用,来实现特定的功能

最推荐的安装方式,是将ControlNet的扩展文件夹放在根目录下的extensions文件夹内,可以省下很多麻烦

然后在扩展选单里重新加载WebUI 界面,就可以在文生图和图生图里面看到了

下载一个ControlNet模型(一般是pth和yaml文件)之后移动到ControlNet的扩展文件夹中

3 基本使用方式

点开ControlNet控制网。输入一张图片,我们在这里期望输出的图片模仿我们输入图片的姿势

2023年的2月13日,一款名叫ControlNet的插件横空出世,AI绘画变得更加可控

ControlNet直译过来很简单,就叫做控制网,开发者是一名华裔,毕业于苏州大学,目前在斯坦福做读博士一年级,大佬大佬!

在controlNet之前,基于扩散模型的绘画是极为难控制的,平时自嗨画画其实没有一点问题,随机就随机一点,但是对于一些特定要求的岗位的同学来说,这种抽卡式缺乏稳定性的模型很难真正提高效率。

1 ControlNet的作用结构

​ 根据一些额外信息控制扩散生成走向,业内人士称为微调,通俗点说就是大模型你不是随机吗,那我给你一些指引信息,让你乖乖听话朝着我期望的方向走

​ 这时候有好奇的小伙伴就要问到了,那他和图生图有什么区别吗?我直接输入图片不也可以达到同样的效果吗?其实从某种意义上来说是的,但我举如下一个例子你就明白了

​ 比如我现在要生成一个有着特定姿势的图片,我固然可以通过一张自己期待的姿势的图片输入,模型可能会了解到这个姿势,但与此同时,这种图片除了姿势的其他信息如画面颜色,风格,人物特征也会被网络捕获到,因而就可能会产生意外的化学反应,但是用ControlNet可以提取人体关键点(如下图),这样的话模型只会了解到纯粹的需要生成的姿势而不会混杂其他信息,可控性就会增强了

2 ControlNet的安装和使用

ControlNet本质是一个插件,所以类似于之前插件的安装(看之前的这篇插件安装的文章)

不同于一些插件,ControlNet还需要搭配不同的模型来使用,来实现特定的功能

最推荐的安装方式,是将ControlNet的扩展文件夹放在根目录下的extensions文件夹内,可以省下很多麻烦

然后在扩展选单里重新加载WebUI 界面,就可以在文生图和图生图里面看到了

下载一个ControlNet模型(一般是pth和yaml文件)之后移动到ControlNet的扩展文件夹中

3 基本使用方式

点开ControlNet控制网。输入一张图片,我们在这里期望输出的图片模仿我们输入图片的姿势

在这里插入图片描述

我们从网上找一张 在这里插入图片描述
图片上传

选择预处理器(OpenPose就是提取姿势的),并选择相应的模型

在这里插入图片描述

其他参数先维持不变

加入我们期望的场景提示词,如在森林里

1 cute girl, forest, smile,
SFW, (masterpiece:1.2), best quality, masterpiece, highres, original, extremely detailed wallpaper, perfect lighting,(extremely detailed CG:1.2)

生成
在这里插入图片描述

更改一下提示词

1 cute girl, city, smile,
SFW, (masterpiece:1.2), best quality, masterpiece, highres, original, extremely detailed wallpaper, perfect lighting,(extremely detailed CG:1.2)

在这里插入图片描述

可以看出姿势完全不变

同时它还会附加给我们一张骨骼图

3.1 参数详解

Control Weight

决定这个控制效应在图片中呈现出来的强度,维持默认1不变

Starting Control step

ending Control step

什么时候加入ControlNet影响,默认的0到1表示全程生效,缩短影响,可以赋予图像更多的自由度

ControlMode

提示词影响和ControlNet之间倾向于哪一个,一般维持默认Balanced即可,二者兼顾

核心就是控制强弱

缩放模式

会在导入图片和你生成图片分辨率不匹配的时候起作用

3.2 代表性ControlNet模型应用

3.2.1 Open Pose姿态

上面讲到的只是OpenPose的基本的身体整体骨骼的刻画

选择不同的预处理器可以获得对手部,脸部更精确的刻画

在这里插入图片描述

比如我们使用openpose_face,可以看到获得了更精细的脸部特征骨骼图

在这里插入图片描述

3.2.2 Depth 深度

适合富有空间感的多层次场景

3.2.3 canny 边缘检测

通过边缘来进行绘画输出,超级强大!!!

比如我们这里用Canny检测器,可以生成几乎一模一样的

在这里插入图片描述

可以实现线稿上色

在这里插入图片描述

更多推荐

rust数组

一、定义数组(一)一维数组1.指定所有元素语法格式letvariable_name:[dataType;size]=[value1,value2,value3];例如letarr:[i32;4]=[10,20,30,40];2.指定初始值和长度所有元素具有相同的值语法格式letvariable_name:[dataTy

二叉树的遍历

Ⅰ、二叉树基本介绍1.1、二叉树的定义二叉树(binarytree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树。1.2、特殊的二叉树1、满二叉树:如果一

【算法训练-二叉树 三】【最大深度与直径】求二叉树的最大深度、求二叉树的直径

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【求二叉树的直径】,使用【二叉树】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为:目标公司+最近一年+出现频率排序,由高到低的去牛客TOP101去找,只有两个地方都出现过才做这道题(CodeTop本身汇聚了Le

JavaWeb 学习笔记 5:JSP

JavaWeb学习笔记5:JSP简单的说,JSP就是Java+Html,JSP的出现是为了让JavaWeb应用生成动态页面更容易。1.快速开始1.1.依赖添加JSP依赖:<dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifa

元素全排列问题的新思路(DFS,递归,计数器)

目录前言1,普通DFS实现1~n的元素全排列2,计数器+DFS实现重复元素全排列总结前言我们之前看到的全排列问题的解法都是通过交换法达到的,去重的效果也是通过判断当前元素前是否有相同元素来实现,今天我们带来一个全新的思路,使我们直接进行深度优先搜索+一个计数器就可以实现,不用交换。1,普通DFS实现1~n的元素全排列我

数据结构 | 数据结构的“基本概念”和“术语”

数据结构的“基本概念”和“术语”:1.数据(Data)2.数据元素(DataElement)3.数据项(DateItem)4.数据、数据元素、数据项三者之间的关系5.数据对象(DataObject)6.数据结构(DataStructure)6.1数据结构(DataStructure)的种类/两个层次:逻辑结构逻辑结构的

数据结构入门 — 二叉树的概念、性质及结构

本文属于数据结构专栏文章,适合数据结构入门者学习,涵盖数据结构基础的知识和内容体系,文章在介绍数据结构时会配合上动图演示,方便初学者在学习数据结构时理解和学习,了解数据结构系列专栏点击下方链接。博客主页:DuckBro博客主页系列专栏:数据结构专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢

Mysql高级——索引优化和查询优化(1)

索引优化1.数据准备学员表插50万条,班级表插1万条。建表CREATETABLE`class`(`id`INT(11)NOTNULLAUTO_INCREMENT,`className`VARCHAR(30)DEFAULTNULL,`address`VARCHAR(40)DEFAULTNULL,`monitor`INTN

数据科学中的数据库简介

推荐:使用NSDT场景编辑器快速搭建3D应用场景用于高效视频、AI和图形的通用加速器数据科学中的数据库简介数据科学涉及从大量数据中提取价值和见解,以推动业务决策。它还涉及使用历史数据构建预测模型。数据库有助于对如此大量的数据进行有效的存储、管理、检索和分析。因此,作为一名数据科学家,您应该了解数据库的基础知识。因为它们

安卓页面绘制流程(3)Window注册

前言:本文属于安卓页面绘制流程的第3篇,主要介绍应用是如何把APP侧的Window向system进行注册的。主要分为2大块:第一块,APP侧在resume周期时向系统侧申请绑定。第二块,系统侧收到请求后处理绑定的流程。一.APP侧Window注册在上一篇文章中,我们已经讲过,在Activity的create周期内,其所

什么是Vue的自定义指令(custom directives)?如何自定义指令?

聚沙成塔·每天进步一点点⭐专栏简介⭐Vue.js的自定义指令⭐示例⭐写在最后⭐专栏简介前端入门之旅:探索Web开发的奇妙世界欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的

热文推荐