【AIGC专题】Stable Diffusion 从入门到企业级实战0403

news2025/1/9 1:28:12

一、前言

本章是《Stable Diffusion 从入门到企业级实战》系列的第四部分能力进阶篇《Stable Diffusion ControlNet v1.1 图像精准控制》第03节, 利用Stable Diffusion ControlNet Canny模型精准控制图像生成。本部分内容,位于整个Stable Diffusion生态体系的位置如下图黄色部分所示:

二、定义

ControlNet v1.1 共提供了14个功能模型,每一个模型对应一个适用的业务场景,具体的模型信息如下图所示:

本文介绍的是ControlNet Canny模型,Canny边缘检测算法是一种提取图像中边缘信息的算法,它由John F. Canny于1986年开发,是最广泛使用的边缘检测算法之一。stable diffusion 结合 canny 边缘检测,将经典边缘检测算法与 AI 生成结合的创新尝试,可以获得更好的生成效果,有效拓展了 
Stable diffusion 的应用范围。

三、工作流程

使用ControlNet Openpose工作流程如下图所示:

完整的工作流程描述,如下所示:

  1. 对输入图像进行 canny 边缘检测,得到边缘图像。
  2. 将边缘图像中的边缘线条部分作为 mask,与原图中的非边缘部分组合,得到输入图像的边缘 mask 图。
  3. 将组合后的边缘 mask 图作为条件之一,输入到 stable diffusion 模型中。
  4. stable diffusion 根据边缘信息及其他文本描述,生成包含相应边缘特征的新图像。
  5. 可以创建多个不同边缘样式的 mask,输入到 stable diffusion 中,生成具有这些边缘样式的图片。

四、创作成果

利用ControlNet Canny技术,通过姿态检测,实现的图像精准控制效果如下图所示:

目标建筑和源建筑,具有相同的边缘特征。首先识别源图像的边缘特征,然后根据边缘特征,进行目标图像生成。

五、创作过程

5.1 工作步骤

整个的创作过程可以分为4个步骤,如下图所示:

环境部署:启动ControlNet Canny WebUI服务;

模型下载:下载ControlNet Canny 模型;

操作实战:选择输入、配置参数和调试;

运行演示:展示图像生成的效果;

5.2 环境部署

为了降低集成封装对于我们了解底层实现的影响,我们采用的ControlNet v1.1 原生框架部署,而非集成可视化界面环境,具体的ControlNet Openpose服务程序如下图所示,我们只需要启动该程序即可:

5.3 模型下载

ControlNet v1.1 canny 预训练模型主要有两个,如下图所示:

5.4 操作实战

因为是可视化操作界面,可以一目了然的了解操作的方法和过程,具体细节我们不再赘述,直接上配置界面,如下图所示:

5.5 运行演示

六、小结

本章是《Stable Diffusion 从入门到企业级实战》系列的第四部分能力进阶篇《Stable Diffusion ControlNet v1.1 图像精准控制》第03节, 利用Stable Diffusion ControlNet Canny模型精准控制图像生成。下一节,我们将给大家带来,利用Stable Diffusion ControlNet Depth深度信息精准控制图像生成。

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

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

相关文章

剑指offer(C++)-JZ61:扑克牌顺子(算法-模拟)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。 有如…

MyBatisPlus 基础Mapperr接口:增删改查

MyBatisPlus 基础Mapper接口:增删改查 插入一条数据 代码 Testpublic void insert() {User user new User();user.setId(6L);user.setName("张三");user.setAge(25);user.setEmail("zhangsanexample.com");userMapper.insert(user);}日志 数…

postman token 请求头添加

思路: 1、登录成功后将 得到的token设置为集合变量 2、在需要携带Authorization的请求头上使用该集合变量 关键代码 const responseData pm.response.json(); if(responseData.code 1) {// 获取tokenconst {data:{token}} responseData// 设置为集合变量pm.colle…

Java8中List转Map报错“java.lang.IllegalStateException: Duplicate key”

排查思路 从报错的关键字中可以大致判断是是key冲突,Duplicate key在数据库的主键冲突错误中经常遇到,个人的思维惯性就联想到了数据库,从这个方向去排查,无果。抓耳挠腮之下,分析如下错误信息 java.lang.IllegalStateException: Duplicate key image(…

java八股文面试[数据库]——索引哪些情况下会失效

查询条件包含 or,会导致索引失效。 隐式类型转换,会导致索引失效,例如 id字段类型是varchar,我们 where id 1,这样就会触发隐式类型转换 like 通配符会导致索引失效,注意:”ABC%” 不会失效,…

问道管理:华为产业链股再度拉升,捷荣技术6连板,华力创通3日大涨近70%

华为产业链股6日盘中再度拉升,到发稿,捷荣技能涨停斩获6连板,华映科技亦涨停收成3连板,华力创通大涨超19%,蓝箭电子涨约11%,力源信息涨超4%。 捷荣技能盘中再度涨停,近7日已累计大涨超90%。公司…

如何成为一个高效的电商数据分析师

如何成为一个高效的电商数据分析师 文章目录 如何成为一个高效的电商数据分析师前言市场洞察平台品类品牌淘天京东抖音 商品 总结 前言 电商数据分析师 在我看来这个角色的定义其实很宽泛,现在从事电商这门生意的人都可以是,而且应该是一名电商数据分析师…

[BSidesCF 2019]Kookie 1 , cookie伪造

给了一个用户和密码 用户名:cookie 密码:monster 登录后查看cookie 发现就是用户名维持登录 那么修改用户名为 admin 得到flag

原型-设计模式

原型设计模式 原型模式应用场景:创建一个对象比较复杂,当前存在一个和需要创建的对象极其相似,我们就可以采用原型模式,在原来的对象上进行一个修改。 修改方案:在原来的基础上进行拷贝,在进行部分的修改。…

Pytest系列-快速入门和基础讲解(1)

前言 目前有两种纯测试的测试框架,pytest和unittestunittest应该是广为人知,而且也是老框架了,很多人都用来做自动化,无论是UI还是接口pytest是基于unittest开发的另一款更高级更好用的单元测试框架 单元测试框架介绍 单元测试…

【Arduino24】8*8点阵实验

硬件准备 8*8点阵:1个 旋钮电位器:1个 面包板:1块 杜邦线:若干 硬件连线 软件程序 //定义引脚 #define xKnob_pin A0 //x轴旋钮的引脚 #define yKnob_pin A1 //y轴旋钮的引脚 const int row_pin[8] { 6, 11, 10, 3, 17, 4…

Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、等业务的企业

功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…

playwright 录制脚本执行时出现文件编码错误 SyntaxError

playwright 录制脚本执行时出现文件编码错误 SyntaxError 问题描述: 使用playwright 进行脚本录制,录制的过程中,某些元素的定位方式由中文确认,脚本录制完成后,执行脚本报错,出现 SyntaxError: (unicode e…

无涯教程-JavaScript - BESSELK函数

描述 BESSELK函数返回修改后的Bessel函数Kn(x),该函数等效于针对纯虚参判断的Bessel函数。 这些也称为双曲贝塞尔函数。 语法 BESSELK(X, N)争论 Argument描述Required/OptionalXThe value at which to evaluate the function.RequiredNThe order of the function. If n i…

Docker实战:docker compose 搭建Sonar

1、docker-compose-sonar文件准备 进入/home/docker目录,新建docker-compose-sonar.yml文件,内容如下: version: 3 services: sonar:image: sonarqube:8.9.6-communityrestart: always container_name: sonarqubevolumes:# 设置与宿主机时间…

string容器的常用操作

string容器的常用操作 一、C语言中的字符串二、string容器1、概念2、特点 三、string类对象的常见构造1、构造2、实际构造函数3、测试代码4、运行结果 四、赋值运算符1、类型2、作用3、测试代码4、运行结果 五、string类对象的容量操作1、成员函数2、测试代码3、说明4、运行结果…

第二十章 ObjectScript - 潜在的缺陷

文章目录 第二十章 ObjectScript - 潜在的缺陷 第二十章 ObjectScript - 潜在的缺陷 以下项目可能会让刚接触ObjectScript的程序员感到困惑,特别是那些负责维护其他程序员编写的代码的程序员: 在例程或方法中,除非每行包含标签,否则每行必须…

复制粘贴是怎么实现的

在上面的代码中,command 和 select 是自定义的函数。它们的作用如下: 实现复制粘贴的思路: 创建一个 textarea 标签将 textarea 移出可视区域给这个 textarea 赋值将这个 textarea 标签添加到页面中调用 textarea 的 select 方法调用 docum…

【PowerDesigner16】显示工具面板

1、点击左上角【工具】“toolbars”,然后【自定义工具栏】,选择“palette”即可显示工具栏。

MediaCodec源码分析 createByCodecName流程

前言 本文梳理MediaCodec初始化流程,即create流程,基于7.0代码。流程图如下,创建流程还是比较清晰简单的。 代码见: frameworks/base/media/java/android/media/MediaCodec.java frameworks/base/media/jni/android_media_MediaCodec.h frameworks/base/media/jni/androi…