【AIGC】【图像生成】controlNet介绍(原理+使用)

news2024/10/7 6:43:21

在这里插入图片描述


文章目录

  • 安装
  • 1、ControlNet:AI绘画
    • 1.1、ControlNet的本质是文生图(txt2img)
    • 2.2、预处理器 & 模型选择
    • 1.3、参数配置
  • 2、ControlNet 模型分类
    • 2.1、草图类(6个)
    • 2.2、高级特征类(3个)
    • 3.3、高级类(5个)
  • 3、配置参数
  • 4、基本原理:可控的SD模型
  • 5.可视化效果
  • 总结


安装

下载安装:建议下载V1.1版本,模型在:
https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main

1、ControlNet:AI绘画

如果要画一幅画,一方面是构图,一方面是风格。现在的AI绘画,就是炼丹。需要通过各种 prompt 来控制画面的构图和风格。

鉴于prompt 的专业性与复杂性,产生了两个模型: ControlNet就是用来控制构图的,LoRA就是用来控制风格。还有一个风格迁移的模型shuffle,此外,SD1.5也能生成好的图像。

那ControlNet是 如何构图呢?有以下两种方法:
1、已经手绘了草图,后续的完善和美化由 AI 去做;
2、利用现成的图,生成不同风格的新图。
那么这就是ControlNet做的事情:通过你手上已有的图而不是咒语,实现对AI绘图的控制。

这里只介绍 ControlNet,LoRA作为锦上添花的 work 后续介绍。

1.1、ControlNet的本质是文生图(txt2img)

ControlNet的原始论文:《Adding Conditional Control toText-to-Image Diffusion Models》 及代码,最原始是一个 txt2img 的工作。此外还有 inpaint 的附加功能,也就是替换、消除等。
所以在WEB UI中,不管是txt2img还是img2img,都有ControlNet。

2.2、预处理器 & 模型选择

要保证预处理器(preprocessor)跟模型(model)是同类的

预处理器preprocessor:对参考图预处理,作为控制图,给到后续的对应模型进行控制出图。比如:如果选择了scribble类的预处理器,那么模型就最好选择scribble模型:
在这里插入图片描述
上图中,第一行分别是原图和scribble预处理后的图,想画一只类似猫头鹰。第二行是不同配置条件下的AI出图结果。只有预处理跟模型是一致的情况下,才能得到比较好的结果图,如果预处理器或者模型有一者为空,基本就等同于ControlNet未生效,就是一般的SD出图,如第二行的中间两幅图。 WEB UI开发者也注意到了预处理器vs模型之间对应关系的问题,所以在1.1.2XXX版本中限定了预处理和模型之间的对应关系,如下图所示。

在这里插入图片描述

1.3、参数配置

由于可调参数多,第一次使用默认参数,如果效果不好,再做参数细调。

2、ControlNet 模型分类

ControlNet1.1版本发布了14个模型,主要可以分成三类:

2.1、草图类(6个)

主要是用预处理器,将图像处理成草图,或者直接输入手稿也行。

预处理器有以下几种:
1)Canny:边缘提取器,最常用
2)MLSD:特殊的线条检测(比如直线),适合建筑设计、室内设计
3)lineart :线条提取(早期版本叫fake_scribble )
4)lineart_anime:需要配合anything_v3-v5的大模型(需要复杂提示词)使用
5)SoftEdge:区分几种预处理器,综合效果选择SoftEdge_PIDI
6)Scribble:涂鸦,类似于简笔画

以下是不同预处理器的效果和差异

在这里插入图片描述

以下是Scribble的效果

在这里插入图片描述
简单的prompt就能生成非常好的效果图

2.2、高级特征类(3个)

1)depth:深度图
2)seg:语义分割图。譬如粉色是建筑物、绿色是植物等
3)normalbae:法线贴图(法线就是像素的梯度,反映了纹理)

以下是效果图,后面两列是模型生成的新图

在这里插入图片描述

对应的预处理器如下(可随机选,效果类似):

1.depth:支持depth_Midas, depth_Leres, depth_Zoe等等,以及别其他软件生成的depth map
2.seg:支持Seg_OFADE20K、Seg_OFCOCO、Seg_UFADE20K,以及人工手绘的蒙版。
3.normalbae:支持normal_bae, normal_midas

3.3、高级类(5个)

1)OpenPose:骨骼捕捉,很热门
2)inpaint:局部修图,可以很自然删除一些目标
3)shuffle:风格混合,转换不同风格
4)ip2p:指令式修图,可以识别有限的指令
5)tile:图像超分:会增加原图没有的细节。

以下是ip2p的效果

在这里插入图片描述

以下是shuffle 的效果

在这里插入图片描述


3、配置参数

大多数参数选择默认就可以了,在高阶应用时需要调参。除了对预处理器与模型的选择,下面介绍别的参数

在这里插入图片描述

黄色框:跟所选的 预处理器和模型相关的。主要是线条粗细、细节丰富程度等参数

红色框

第一组:基础控制,比较简单
1)enable:是否启用ControlNet
2)lowVRAM:低精度,可以减少显存消耗
3)Pixel Perfect:是新版本新增功能,对应黄框中的第一项preprocessor resolution,算法自己去计算最合适的resolution。如果不是512*512这种的方形出图,建议勾上这个选项。
4)allow preview:提前预览 预处理器的效果

第二组:权重控制(可以直接用默认)
1)control weight:控制网络的控制权重
2)starting control step:什么时候介入控制(百分比)
3)ending control step:什么时候退出控制(百分比)
如果不想用controlNet控制太多,则可以晚点介入

第三组:控制模式(可以直接用默认)
1)balanced
2)my prompt is important
3)ControlNet is important
用于分配 prompt 和 参考图的权重比例

第四组:裁剪方式
当控制图(参考图)的尺寸跟目标图(txt2img里面要生成的图)的尺寸不一致时,需要配置这组参数:
1)just resize:变更控制图的长宽比以适应目标图的尺寸比例(可能导致形变)。
2)crop and resize:对控制图进行裁剪以适应目标图的尺寸比例 。
3)resize and fill:对控制图进行缩放,保证整个控制图能塞到目标图中去,然后对多余部分进行空白填充。

4、基本原理:可控的SD模型

ControlNet:将stable diffusion模型,克隆出一个副本

ControlNet是一个用于 深度神经网络 的控制技术,它可以通过操作神经网络的输入条件来控制神经网络的行为。网络主要包含 “resnet”块、“conv-bn-relu”块、多头注意力块等。通过克隆神经网络块的参数, 并应用零卷积连接层来实现ControlNet的目标。

副本网络与原始网络块的输入和输出是一致的。训练初始阶段,ControlNet不会对神经网络产生影响。零卷积的权重和偏置值都被初始化为零,这使得ControlNet在优化过程中不会影响权重和偏置值的梯度。ControlNet通过控制神经网络块的输入条件来调整神经网络的行为,并适应不同的任务和数据。每个神经网络块由一组参数来定义,这些参数可以在训练过程中进行优化。

在这里插入图片描述

ControlNet 应用于任意神经网络块。x; y 是神经网络中的深度特征。“+” 表示特征加法。“c” 是我们要添加到神经网络中的额外条件。“zero convolution” 是一个 1 × 1 卷积层,其权重和偏置都初始化为零

ControlNet结构可以表示为:

yc = F(x; α) + Z(F(x + Z(c;βz1); βc); βz2)

其中,yc是该神经网络块的输出结果。在第一次训练步骤中,神经网络块的可训练副本锁定副本的所有输入和输出不受ControlNet 影响。任何神经网络块的能力、功能和结果质量都得到完美保留,并且任何进一步的优化将变得像微调一样快(与从头开始训练这些层相比)。

在第一次训练步骤中,由于零卷积层的权重和偏置值都初始化为零,我们有:

Z(c; βz1) = 0
F(x + Z(c; βz1); βc) = F(x; βc) = F(x; α)
Z(F(x + Z(c; βz1); βc); βz2) = Z(F(x; βc); βz2) = 0

当应用ControlNet到一些神经网络块时,在任何优化之前,它都不会对深度神经特征产生影响。任何神经网络块(比如预训练的SD)的能力、功能和结果质量都得到完美保留,并且任何进一步的优化将变得像微调一样快。通过迭代的过程,重复应用ControlNet操作来优化神经网络块。这样,在每一步中,我们可以保持所有其他神经网络块不变,仅对某些神经网络块进行修改和调整

原文以 Stable Diffusion为基础,使用ControlNet对大型网络进行控制:将Encoder复制训练,decoder部分进行skip connection。

在这里插入图片描述

图中 “Zero Convolution”是带有零初始化权重和偏差的1×1卷积。模型开始训练之前,所有零卷积输出都是零,此时模型仍然是原始的Stable Diffusion Model而在加入自己的训练数据之后,则会对最终结果做微调,因此不会导致模型出现重大偏离的情况

我们从整体的模型结构上可以看出,作者在Stable Diffusion 模型的decode层加入了上述“0卷积层”,以实现对最终模型与训练数据的一致性。

5.可视化效果

图像分割搭配SD1.5
在这里插入图片描述

姿态检测搭配SD1.5:
在这里插入图片描述

通过HED轮廓,搭配SD1.5
在这里插入图片描述

灵魂画师搭配SD1.5
在这里插入图片描述


总结

部分图片转载自知乎用户@BitByBit

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

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

相关文章

CopilotHub招聘产品设计师;大模型岗位面试官的一线分享;AI应用创业的共识与非共识;LangChain学习手册 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 CopilotHub 招聘产品设计师,AI Agent C 端产品、远程工作、无限制带薪假期 https://app.copilothub.ai 这是一家成立于202…

抖店电商运营,新开通抖店正确的起店方法,新手商家必看做店教程

我是王路飞。 当你的抖店开通之后,也做好了店铺的一些基础搭建工作,那么之后的任务,就是起店了。 只有起店之后,你的店铺权重才会越来越高,不管走自然流量还是找达人带货,都更有优势。 所以今天给你们分…

OpenWrt系统开发笔记

openWrt英文官网: https://openwrt.org/ 中文官网: http://www.openwrt.org.cn/ 一、开发环境及编译 在github上有两个源码使用的比较多   一个是lede,地址为:https://github.com/coolsnowwolf/lede   另一个为OpenWrt的官方源码&#…

【创新项目探索】大数据服务omnidata-hive-connector介绍

omnidata-hive-connector介绍 omnidata-hive-connector是一种将大数据组件Hive的算子下推到存储节点上的服务,从而实现近数据计算,减少网络带宽,提升Hive的查询性能。目前支持Hive on Tez。omnidata-hive-connector已在openEuler社区开源。 …

SwiftUI简单基础知识学习

以下是一个大致的学习计划,将SwiftUI的知识分成12个主题: SwiftUI 简介和基础语法视图和布局状态和数据流按钮和用户输入列表和数据展示导航和页面传递动画和过渡效果手势和交互绘制和绘图多平台适配网络和数据请求实际项目实践和高级主题 每个主题可以…

rac异常hang死故障分析(sskgxpsnd2)

x86虚拟化的平台麒麟系统的一套RAC。事件梳理20:24左右,发现一个节点hang死,关闭操作没有响应。关闭hang死节点,另一个节点也发生hang死,然后重启了另一个节点。 无效分析部分 检查gi的alert日志 有一个很大跨度的时间回退 再看…

辛普森近似求值

辛普森近似求解 公式证明任意一个对称区间的一元二次函数定积分拆分求和:strawberry: 总结 : 如果我们把六分之一乘进去我们只不过在指定的区间采集数据六个求平均,乘以采集数据区间的微元宽度(历史上不少的手稿用h,翻译为微元高度&#xff0…

Python虚拟环境venv下安装playwright介绍及记录

playwright介绍 Playwright是一个用于自动化Web浏览器测试和Web数据抓取的开源库。它由Microsoft开发,支持Chrome、Firefox、Safari、Edge和WebKit浏览器。Playwright的一个主要特点是它能够在所有主要的操作系统(包括Windows、Linux和macOS&#xff09…

OS 磁盘 从生磁盘到文件 文件使用磁盘

通过磁头和磁盘的电生磁,磁生电来写读通过往控制器写入扇区sect 磁头head 柱面port 等位置,通过DMA总线盗用技术,将信息读入内存或写入磁盘,重点在于传递数值,使用out指令,将几个信息拼接起来 寻道&#xf…

正中优配:消费电子概念走高,捷荣技术斩获5连板,凯旺科技等大涨

消费电子概念5日盘中走势活泼,截至发稿,凯旺科技涨超12%,华映科技、合力泰、瀛通通讯、捷荣技能、实益达等涨停,信维通讯涨超8%。值得注意的是,捷荣技能已连续5个交易日涨停,华映科技4日斩获3板。 消息面上…

【RabbitMQ】介绍及消息收发流程

介绍 RabbitMQ 是实现 AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 RabbitMQ 主要是为了实现系统之间的双向解耦而实…

【校招VIP】前端专业课考点之CSMA/CD协议

考点介绍: CSMA/CD,载波监听多点接入/碰撞检测,是广播型信道中采用一种随机访问技术的竞争型访问方法,具有多目标地址的特点。它通过边发送数据边监听线路的方法来尽可能减少数据碰撞与冲突。采用分布式控制方法,所有结…

QT 一个简易闹钟

1 效果图 pro QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your c…

PE文件格式详解

摘要 本文描述了Windows系统的PE文件格式。 PE文件格式简介 PE(Portable Executable)文件格式是一种Windows操作系统下的可执行文件格式。PE文件格式是由Microsoft基于COFF(Common Object File Format)格式所定义的&#xff0c…

16|女性视角:李清照笔下独到的细腻

好诗相伴,千金不换。你好,我是天博。 前面我们说了这一章的主题是“见众生”,见众生就是读诗词里的人性。截止到现在,我们已经感受了杜甫面对人民的悲悯,刘禹锡面对贬谪的耿直,而今天这一讲,我…

智能合约安全,著名的区块链漏洞:双花攻击

智能合约安全,著名的区块链漏洞:双花攻击 介绍: 区块链技术通过提供去中心化和透明的系统彻底改变了各个行业。但是,与任何技术一样,它也不能免受漏洞的影响。一个值得注意的漏洞是双花攻击。在本文中,我们将深入研究…

告别复杂的绘画软件!选择Growly Draw for Mac,让你的创作更轻松

Growly Draw for mac是一款快速绘画应用,让你可以在Mac电脑上轻松创作美丽的绘画作品。这个应用程序并不像Photoshop那样拥有丰富的功能,但它的简约设计使得那些基本的绘画任务变得轻松便捷。 如果你对绘画充满热情,但缺乏专业的绘画技巧&am…

Python调用Jumpserver的Api接口增删改查

引言 Jumpserver是一款强大的堡垒机系统,可以有效管理和控制企业内部服务器的访问权限,提高网络安全性。本文将介绍如何使用Python编程语言,结合Jumpserver提供的API接口,实现对跳板机的管理和操作。 1、什么是Jumpserver&#…

气传导耳机怎么样?市面上热门气传导耳机推荐

​气传导耳机不仅能够提升幸福感还能听到周围环境声,大大提高安全性。如果你在寻找一款高品质的气传导耳机,又不知从何入手时,不要担心,我已经为你精心挑选了四款市面上综合表现很不错的气传导耳机,让你享受更好的音质…

达梦类型转换问题-float转换为varchar

表结构 CREATE TABLE "SYSDBA"."TABLE_2" ( "COLUMN_1" FLOAT, "COLUMN_2" NUMERIC(22,6)) STORAGE(ON "MAIN", CLUSTERBTR) ; 表数据: 查询,将numeric转换为float,再转换为varchar&…