当前位置: 首页 > news >正文

ControlNet构图控制

最初的 ControlNet 主要用于线稿上色、图像风格化、可控姿态的人体生成等任务。

如今各路网友脑洞大开,使用 ControlNet 做出了创意二维码、将文字自然地融入照片等趣味效果。

在这里插入图片描述

ControlNet 的基本结构

加粗样式
ControlNet 并没有改变 SD 模型的 VAE、CLIP 文本编码器和 UNet 结构,而是在这个方案的基础上多加了一些东西。
ControlNet 作为一个即插即用的插件,训练过程应该避免影响到 SD 模型的部分。
固定 SD 权重可以减少一半以上的可学习参数,这么做能节省计算资源。

主要思路:

  • 锁定原始diffusion模型的参数,同时复制可训练的参数副本。这样可以保留原始模型的能力,同时新增可训练的参数用于学习条件控制。

  • 使用“零卷积”层(weights和bias初始化为0)连接原始模型和可训练副本。这可以避免训练初期参数被噪声污染,保护预训练模型。

  • 在diffusion模型的encoder模块添加ControlNet结构。具体来说,对Stable Diffusion的12个编码块和1个中间块应用ControlNet。

  • ControlNet接收条件图像作为输入(比如边缘、人体姿态等),先降采样到与diffusion模型latent space大小一致,然后输入到ControlNet。

  • 训练时随机排除部分文本提示,迫使模型从条件图像中学习语义信息。

  • 推理时,可以组合使用多个ControlNet为同一diffusion模型添加多个条件控制。

训练 ControlNet

第一,根据你要使用的控制方法,在你的数据集上生成这些控制条件,比如提取图像边缘轮廓或者提取人体姿态点。

第二,按照标准的 SD 模型训练流程进行训练,UNet 的输入包括带噪声的潜在表示、时间步 t 的编码、prompt 文本表征和 ControlNet 的控制信号。

标准 SD 训练过程中使用无分类器引导,一般有 10% 的概率会将训练的 prompt 设置为空字符串。而 ControlNet 的训练中,这个概率是 50%!

这是为了让 SD 模型在预测噪声时,有更多信号源自 ControlNet 的控制信号,而不是 prompt 文本表征。说到底,还是为了加强控制。

在训练 ControlNet 时,针对每一种控制条件需要单独完成。这里的控制条件可以是轮廓线(Canny、HED 等),也可以是法线、深度图等。所以,在 Hugging Face 中我们可以找到 20 余种不同的 ControlNet 模型权重。下一讲我们会探讨这些权重的使用方式。

二维码

在这里插入图片描述

a painting of a city with a river and buildings on the hillside and a sky background with clouds and snow on the ground and a blue sky, a detailed matte painting
Negative prompt: (KHFB, AuroraNegative),(Worst Quality, Low Quality:1.4)
Steps: 28, Sampler: Euler, CFG scale: 6, Seed: 1916675209, Size: 512x512, Model hash: 54ef3e3610, Model: meinamix_meinaV11, Denoising strength: 0.75, Clip skip: 2, ControlNet 0: “Module: none, Model: controlnetQRPatternQR_v2Sd15 [2d8d5750], Weight: 1, Resize Mode: Crop and Resize, Low Vram: False, Guidance Start: 0, Guidance End: 1, Pixel Perfect: False, Control Mode: Balanced, Save Detected Map: True”, Version: v1.7.0

https://civitai.com/models/90940/controlnet-qr-pattern-qr-codes

相关文章:

  • PCL 格网法计算点云的占地面积
  • React16源码: React中创建更新的方式及ReactDOM.render的源码实现
  • 收到的字符串写入xml并且将这个xml写入.zip文件中
  • 【设计模式】工厂模式
  • 【动态规划】C++算法:446等差数列划分 II - 子序列
  • 带前后端H5即时通讯聊天系统源码
  • ES-极客学习第二部分ES 入门
  • 二叉树的层序遍历经典问题(算法村第六关白银挑战)
  • 缓存cache和缓冲buffer的区别
  • 3.3 设计模式基础
  • 机器学习 前馈神经网络
  • 芯片命名大全:完整的器件型号包括主体型号、前缀、后缀等!
  • Unity之预制体与变体
  • 【Leetcode】242.有效的字母异位词
  • Spring Boot中加@Async和不加@Async有什么区别?设置核心线程数、设置最大线程数、设置队列容量是什么意思?
  • Angular数据绑定机制
  • mysql常用命令汇总
  • mysql外键的使用
  • Terraform入门 - 3. 变更基础设施
  • vagrant 添加本地 box 安装 laravel homestead
  • Vue--数据传输
  • 复习Javascript专题(四):js中的深浅拷贝
  • 给Prometheus造假数据的方法
  • 跳前端坑前,先看看这个!!
  • 微服务框架lagom
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 06-01 点餐小程序前台界面搭建
  • 阿里云服务器购买完整流程
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • #Ubuntu(修改root信息)
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (2)MFC+openGL单文档框架glFrame
  • (70min)字节暑假实习二面(已挂)
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (二)fiber的基本认识
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (十三)Maven插件解析运行机制
  • (四) 虚拟摄像头vivi体验
  • (五)关系数据库标准语言SQL
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .net core使用ef 6
  • .NET/C# 的字符串暂存池
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .Net中ListT 泛型转成DataTable、DataSet
  • ??javascript里的变量问题
  • @ModelAttribute注解使用
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?