ControlNet on Stable Diffusion

ControlNet on Stable Diffusion

笔记来源:
1.Adding Conditional Control to Text-to-Image Diffusion Models
2.How to Use OpenPose & ControlNet in Stable Diffusion
3.ControlNet与DreamBooth:生成模型的精细控制与主体保持
4.Introduction to ControlNet for Stable Diffusion
5.Stable Diffusion — ControlNet Clearly Explained!
6.Talented Mr. 1X1: Comprehensive look at 1X1 Convolution in Deep Learning
7.ControlNet-modules-safetensors

下图由笔者参考其他内容整理而成,仅做学习使用

下图中上半部分就是Stable Diffusion的反向扩散过程,下半部分为ControlNet部分,Stable Diffusion的参数frozen,我们只训练ControlNet

condition部分要将图片使用preprocessor(openpose、normalmap、canny)预处理完成后,再用相应网络对其处理,处理结果为符合contronet所能接收的大小的feature map(本质为tensors)

左侧为Stable Diffusion,右侧为ControlNet
Controlnet前半部分直接copy SD Encoder和 Bottleneck 部分,后半部分用zero conv(1×1 conv layer)作解码(上采样)
为了能够让 condition 部分对模型的影响变大,论文中对prompt的组成进行了修改,将原有全部为文字的prompt,修改为一半prompt,一半空字符串
由于zero conv部分初始weight和bias为0,也就是说第一次训练过程,不会对copy来的SD Encoder和 Bottleneck 部分产生任何影响,只有当controlnet进行反向传播时,才会更新参数,这时就会更新SD Encoder和 Bottleneck 部分的参数

笔者个人理解
笔者之前关于SD的文章也提到一张图片对应一个概率分布,SD就是在计算估计关于所有输入图片的一个总的概率分布,这个概率分布如果接近真实概率分布(全世界所有图片的概率分布)生成的图片也就质量越高。SD如果有外来输入(这里的controlnet部分)就会对这个估计的分布有影响,当我们从这个大的概率分布中进行采样时就得到了某张图片(大的概率分布中的某个点)这个图片是在经过外来输入影响的大的概率分布中采样的,也就会符合外来输入的一些特性


了解了大致的原理,我们本地部署看看效果
stable diffusion webui + ControlNet (Extension)部署的过程在网络上相关内容很多,这里就不再展示

下图为ControlNet各个参数的简要说明

下图以Openpose为例,我们首先上传一张原图,随后对一张原图使用preprocessor(这里为openpose_full)进行处理,紧接着使用controlnet_v11将其编码为tensors用于给controlnet输入,点击openpose后的小火花生成人体姿势的估计并形成预览图,最后我们给SD输入prompt和negative prompt,SD就会根据人体姿势估计图和我们提供的文本生成相应姿势的其他人物(文本描述的)

关于如何描写prompt和negative prompt,我们请gpt给出提示


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

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

相关文章

计算机毕业设计django+hadoop+scrapy租房可视化 租房推荐系统 租房大屏可视化 租房爬虫 spark 58同城租房爬虫 房源推荐系统

python scrapy bootstrap jquery css javascript html 租房信息数据展示 租房地址数量分布 租房类型统计 租房价格统计分析 租房面积分析 房屋朝向分析 房屋户型平均价格统计分析 房屋楼层统计分析 房屋楼层与价格统计分析 房屋地址与价格统计分析 房屋相关信息词云展示 租房…

自定义prometheus监控获取nginx_upstream指标

1、前言 上篇文章介绍了nginx通过nginx_upstream_check_module模块实现后端健康检查,这篇介绍一下如何自定义prometheus监控获取nginx的upstream指标来实时监控nginx。 2、nginx_upstream_status状态 支持以下三种方式查看nginx_upstream的状态 /status?formatht…

【PyTorch】基于LSTM网络的气温预测模型实现

假设CSV文件名为temperature_data.csv,其前五行和标题如下: 这里,我们只使用Temperature列进行单步预测。以下是整合的代码示例: import pandas as pd import numpy as np import torch import torch.nn as nn import torch.op…

NLP基础知识2【各种大模型的注意力】

注意力 传统Attention存在的问题优化方向变体有哪些现在的主要变体集中在KVMulti-Query AttentionGrouped-query AttentionFlashAttention 传统Attention存在的问题 上下文约束速度慢,显存占用大(因为注意力考虑整体信息,所以每一个位置都要…

Redis7(二)Redis持久化双雄

持久化之RDB RDB的持久化方式是在指定时间间隔,执行数据集的时间点快照。也就是在指定的时间间隔将内存中的数据集快照写入磁盘,也就是Snapshot内存快照,它恢复时再将硬盘快照文件直接读回到内存里面。 RDB保存的是dump.rdb文件。 自动触发…

Docker-Compose实现MySQL之主从复制

1. 主服务器(IP:192.168.186.77) 1.1 docker-compose.yml services:mysql-master:image: mysql:latest # 使用最新版本的 MySQL 镜像container_name: mysql-master # 容器的名称environment:MYSQL_ROOT_PASSWORD: 123456 # MySQL root 用户的密码MYSQL_DATABASE: masterd…

-XX:MaxDirectMemorySize和-Dio.netty.maxDirectMemory区别

-XX:MaxDirectMemorySize是java运行参数,用户控制java程序可以使用的最大直接内存(堆外/本地); -Dio.netty.maxDirectMemory是netty运行参数,用户控制netty程序可以使用的最大直接内存(堆外/本地&#xff…

【深度学习】yolov8-seg分割训练,拼接图的分割复原

文章目录 项目背景造数据训练 项目背景 在日常开发中,经常会遇到一些图片是由多个图片拼接来的,如下图就是三个图片横向拼接来的。是否可以利用yolov8-seg模型来识别出这张图片的三张子图区域呢,这是文本要做的事情。 造数据 假设拼接方式有…

Django—admin后台管理

Django官网 https://www.djangoproject.com/ 如果已经有了Django跳过这步 安装Django: 如果你还没有安装Django,可以通过Python的包管理器pip来安装: pip install django 创建项目: 使用Django创建一个新的项目: …

常见的CSS属性(一)——字体、文本、边框、内边距、外边距、背景、行高、圆角、透明度、颜色值

一、字体 二、文本 三、边框 四、外边距 五、内边距 六、背景 七、行高 八、圆角 九、透明度 九、颜色值 元素的继承性是指给父元素设置了某些属性,子元素或后代元素也会有作用。 一、字体 “font-*”是字体相关的属性,具有继承性。代码如下&a…

普乐蛙VR航天航空体验馆知识走廊VR体验带你登陆月球

VR航天航空设备是近年来随着虚拟现实(VR)技术的快速发展而兴起的一种新型设备,它结合了航天航空领域的专业知识与VR技术的沉浸式体验,为用户提供了前所未有的航天航空体验。以下是对VR航天航空设备的详细介绍: 一、设备…

nodejs编译报错 集合

目录 一、使用命令编译typescript时报错,报错文件tsconfig.json 二、npm start运行后报错,could not find module 一、使用命令编译typescript时报错,报错文件tsconfig.json npx tsc 报错: Specified include paths were [&…

PyTorch安装CUDA标准流程(可解决大部分GPU无法使用问题)

最近一段时间在研究PyTorch中的GPU的使用方法,之前曾经安装过CUDA,不过在PyTorch中调用CUDA时无法使用。考虑到是版本不兼容问题,卸载后尝试了其他的版本,依旧没有能解决问题,指导查阅了很多资料后才找到了解决方案。 …

uni-app声生命周期

应用的生命周期函数在App.vue页面 onLaunch:当uni-app初始化完成时触发(全局触发一次) onShow:当uni-app启动,或从后台进入前台时显示 onHide:当uni-app从前台进入后台 onError:当uni-app报错时触发,异常信息为err 页面的生命周期 onLoad…

什么是设备运维管理系统?有什么作用?(6款设备运维管理系统推荐)

一、什么是设备运维管理系统? 设备运维管理系统是一种集成了监控、管理、维护和优化设备性能的软件平台。它旨在通过自动化的手段,提高设备运行的可靠性和效率,降低运维成本,并优化资源利用。 设备运维管理系统能够实时监控设备…

图片上传成功却无法显示:静态资源路径配置问题解析

1、故事的背景 最近,有个学弟做了一个简单的后台管理页面。于是他开始巴拉巴拉撘框架,写代码,一顿操作猛如虎,终于将一个简单的壳子搭建完毕。但是在实现功能:点击头像弹出上传图片进行头像替换的时候,卡壳…

Hyperledger Fabric 网络体验 - 网络启动过程概览

进入fabric-samples/test-network目录,执行指令: ./network.sh up -i 2.5执行完指令能看到fabric已经启动。 作为第一次Fabric网络体验,网络启动主要包含三个操作,分别是生成配置文件、启动网络和操作网络。 配置文件 使用cr…

Java面试八股之后Spring、spring mvc和spring boot的区别

Spring、spring mvc和spring boot的区别 Spring, Spring Boot和Spring MVC都是Spring框架家族的一部分,它们各自有其特定的用途和优势。下面是它们之间的主要区别: Spring: Spring 是一个开源的轻量级Java开发框架,最初由Rod Johnson创建&…

基于 HTML+ECharts 实现的数据可视化大屏案例(含源码)

数据可视化大屏案例:基于 HTML 和 ECharts 的实现 数据可视化已成为企业决策和业务分析的重要工具。通过直观、动态的图表展示,数据可视化大屏能够帮助用户快速理解复杂的数据关系,发现潜在的业务趋势。本文将介绍如何利用 HTML 和 ECharts 实…

DBeaver Ultimate 22.1.0 连接数据库(MySQL+Mongo+Clickhouse)

前言 继续书接上文 Docker Compose V2 安装常用数据库MySQLMongo,部署安装好之后我本来是找了一个web端的在线连接数据库的工具,但是使用过程中并不丝滑,最终还是选择了使用 DBeaver ,然后发现 mongo 还需要许可,又折…