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

Stable Diffusion 使用详解(3)---- ControlNet

背景

炼丹师在AI绘画的过程中,由于Stable Diffusion的原理是水滴式的扩散作图原理,其实在前面也有提到,他的发挥是‘不稳定’的,因为你没有办法做到精确控制,只能说是大致符合你的预期。你不能总依赖抽卡+固定随机数种子的方式来寻找你满意的结果,那样太耗时,所以有必要深入研究下ControlNet 的使用方法,做到精确控图,满足你生产的需求。

ControlNet 简介

如果想对图做精准控制,那就需要使用ControlNet 告诉AI 你想绘制的东西答案有哪些表定量的部分,因为有的东西通过文生图与图生图无法准确表达。简单介绍下  ControlNet。

ControlNet的工作原理

  • 条件生成:ControlNet是一种条件生成对抗神经网络(GAN),它通过额外的输入(如参考图像)来控制预训练的大模型(如Stable Diffusion)。
  • 图像迁移:它能够将参考图像的构图、人体姿势等特征迁移到目标图像中,实现图像的高效控制。

ControlNet的优势与应用

  • 优势
    • 细节控制:相比单纯的关键词控制,ControlNet提供了更精细的图像控制能力。
    • 多场景适用:适用于各种图像处理任务,如线条检测、风格迁移等。
    • 扩展性强:可以与其他Stable Diffusion模型搭配使用,增强图像生成的效果。
  • 应用
    • 线条检测:如动漫线稿提取、标准线稿提取等,用于生成以线稿为框架的新图像。
    • 风格迁移:通过对构图类似但风格不同的图像进行风格迁移尝试。
    • 姿态控制:通过OpenPose等模型提取人体姿态信息,控制Stable Diffusion生成具有特定姿态的图像。

ControlNet 种类

ControlNet 种类很多,目前我使用过的差不多有20种。而且不同ControlNet彼此可以相互组合,而且不仅限于两两相互组合,如果显存够好,组合3-5个也没有问题。我先说下我用的比较多的几个ControlNet:

OpenPose

就是检测pose 的,我希望检测一个pose 来让AI作图。比如:

Depth

描述前后关系,有颈深的概念在里面,其实就是描述 Z 方向的关系,比如手在头的前还是以后面。

Canny

Canny是一种硬边缘检测模型,用于提取图片中的边缘信息,生成对应的轮廓线稿图。
它能够很好地识别图像内各对象的边缘轮廓,生成的线稿图较为精细且边缘清晰。
在图像生成过程中,可以通过Canny模型提取参考图片的线稿,再基于该线稿和提示词生成具有相同轮廓结构的新图。常用于需要精确控制图像轮廓的场景,如人物、物体等的轮廓重建。


SoftEdge

SoftEdge是一种软边缘检测模型,也是用于提取图片中的边缘信息,但与Canny不同,它生成的边缘更为柔和。
SoftEdge模型提供了多种预处理器选项,如softedge_hed、softedge_hedsafe、softedge_pidinet等,这些预处理器在处理边缘时具有不同的效果和质量。
在图像生成中,SoftEdge模型可以生成更自然的边缘效果,适用于需要保留更多细节且不希望边缘过于生硬的场景。
通过SoftEdge提取的线稿图,可以在后续的图像着色和风格化过程中获得更加自然的视觉效果。


Sketch

Sketch(或Scribble)模型用于处理涂鸦或草图形式的输入,并基于这些输入生成图像。
它支持从参考图中提取涂鸦信息,也支持在空白画布上直接手绘涂鸦作为输入。

在艺术创作和设计中,Sketch/Scribble模型提供了一种自由度更高的图像生成方式。
用户可以通过手绘草图来表达自己的创意,然后利用Sketch/Scribble模型将这些草图转化为具体的图像。这种方式特别适用于需要快速迭代和试错的场景,如概念设计、草图渲染等。

生成效果

我们先看看上面的生成效果,注意这里还是要和提示词,图生图等一起结合使用。

正向提示词

one girl,standing near the sea,
(masterpiece:1,2),best quality,masterpiece,highres,original,extremely detailed wallpaper,

负向提示词

下载embeddings 直接填写, 内容: BadDream UnrealisticDream.,easynegative,ng_deepnegative_v1_75t,negative_hand,

使用模型

找一个类似写真的底膜就行,我这里用了随便选了一个写真底膜。

生成图片

 还是挺不错的,我个人比较偏向第三幅图片。通过 controlnet 的精细化控制,结合promption及对的底膜,及embeddings,还是比较好的还原出了我想要的场景和人物。

下面的sketch 生成的画面:

脸部有点问题,重新矫正下,为了减少出图时间,我直接用图生图生成,promption 加强了下对face 的描述:

(radiant beautiful face:1.22)

手的姿势不太对,再调整下:

raise left hand diagonally upwards towards the sky,

注意事项

当然对于controlNet的使用,正如上面所说,他只是构图中的一环,其他promption,底膜,图生图原图等都是AI 作画需要考虑的因素,因此,如果你试图在图生图中,使用一个infomation 不太够的图片,而又妄图想从controlnet 中补充时,你要特别注意,通常来讲,图生图的原理还是脱离不开底图。比如,在上面的例子中,你使用上一次我上次使用的一张深渊橘的底膜绘制的AI,保持上面设置不动,出图结果是这样:

看着还是挺舒服的,但是你看到了,你设置的pose 完全没体现出来,为什么?因为图生图,就是要依据你的原图,你通过controlnet 做动作调整这些是没有问题的,但是你最好不要试图通过它去完成一些原图没有的场景,那样的话,你最好还是用文生图比较好。

相关文章:

Stable Diffusion 使用详解(3)---- ControlNet

背景 炼丹师在AI绘画的过程中,由于Stable Diffusion的原理是水滴式的扩散作图原理,其实在前面也有提到,他的发挥是‘不稳定’的,因为你没有办法做到精确控制,只能说是大致符合你的预期。你不能总依赖抽卡固定随机数种…...

pythonGame-实现简单的贪食蛇游戏

通过python简单复现贪食蛇游戏。 使用到的库函数: import pygame import time import random 游戏源码: import pygame import time import randompygame.init()white (255, 255, 255) yellow (255, 255, 102) black (0, 0, 0) red (213, 50, 80…...

2024年软件系统与信息处理国际会议(ICSSIP 2024)即将召开!

2024年软件系统与信息处理国际会议(ICSSIP 2024)将于2024年10月25-27日在中国昆明举行。引领技术前沿,共谋创新未来。ICSSIP 2024将汇聚来自世界各地的专家学者,他们将在会上分享最新的研究成果、技术突破及实践经验。会议议题涵盖…...

使用vscode连接开发机进行python debug

什么是debug? 当你刚开始学习Python编程时,可能会遇到代码不按预期运行的情况。这时,你就需要用到“debug”了。简单来说,“debug”就是能再程序中设置中断点并支持一行一行地运行代码,观测程序中变量的变化&#xff…...

(家用)汽车充电桩项目总结分析

1. 项目选题背景 (1)社招:公司想做这个方向,先让学习测试一下,而且不做Web或者APP,以某一个模块或者某一个部分为主 (2)非社招:之前在学校做的一个学习的项目 2. 充电…...

JMeter接口测试:测试中奖概率!

介绍 Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、J…...

生成式人工智能之路,从马尔可夫链到生成对抗网络

人工智能(Artificial intelligence,AI)技术在过去几年中取得了显著进展,其中生成式AI(Generative AI)因其强大的内容生成能力而备受关注。生成式AI可以创建新的文本、图像、音频、视频、代码以及其他形式的…...

qt做的分页控件

介绍 qt做的分页控件 如何使用 创建 Pagination必须基于一个QWidget创建,否则会引发错误。 Pagination* pa new Pagination(QWidget*);设置总页数 Pagination需要设置一个总的页数,来初始化页码。 pa->SetTotalItem(count);设置可选的每页数量…...

MySQL with recursive 用法浅析

目录 写在前面 语句功能 with recursive 语法讲解 细节补充 “union all”语句 添加递归终止条件 写在前面 介绍“with recursive”用法的文章不少,但我都觉得讲的不够通俗,所以干脆自己写一篇。话不多说,进入正题。 语句功能 with r…...

ROS2常用命令集合

文章目录 指令帮助创建功能包功能包查找编译执行节点查看话题服务命令接口命令动作命令参数命令录制控制命令 指令帮助 ros2 --help # 帮助查看命令创建功能包 ros2 pkg create 包名 --build-type 构建类型 --dependencies 依赖列表 --node-name 可执行程序名称功能包查找 …...

VUE 子组件可以直接改变父组件的数据吗

子组件不可以直接改变父组件的数据。‌在Vue中,‌数据流是单向的,‌即父组件通过props向子组件传递数据,‌而子组件不能直接修改父组件的数据。‌这是为了维护数据流动的单向性和数据的可维护性。‌ 如果子组件需要修改父组件的数据&#xf…...

Redis 持久化详解

AOF 持久化 AOF持久化数据恢复相对RDB慢,文件也更大,但数据丢失的风险更小。 AOF 写入 将数据写入Redis内存后,将写数据的命令记录到AOP磁盘文件。 【结构】server.aof_buf 主线程写操作执行完之后,命令会先追加到 Redis 的 se…...

基于riscv64架构的Dayu800开发板的napi_demo开发介绍

itopen组织1、提供OpenHarmony优雅实用的小工具2、手把手适配riscv qemu linux的三方库移植3、未来计划riscv qemu ohos的三方库移植 小程序开发4、一切拥抱开源,拥抱国产化 一、环境准备工作 1.1 Ubuntu20.04环境配置 如果已经配置OpenHarmony的编译环境则…...

HAL STM32 SPI/ABZ/PWM方式读取MT6816磁编码器数据

HAL STM32 SPI/ABZ/PWM方式读取MT6816磁编码器数据 📚MT6816相关资料(来自商家的相关资料): 资料:https://pan.baidu.com/s/1CAbdLBRi2dmL4D7cFve1XA?pwd8888 提取码:8888📍驱动代码编写&…...

HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号5

基础认证题库请移步:HarmonyOS应用开发者基础认证题库 注:有读者反馈,题库的代码块比较多,打开文章时会卡死。所以笔者将题库拆分,单选题20个为一组,多选题10个为一组,题库目录如下,…...

Tekion 选择 ClickHouse Cloud 提升应用性能和指标监控

本文字数:4187;估计阅读时间:11 分钟 作者:ClickHouse team 本文在公众号【ClickHouseInc】首发 Tekion 由前 Tesla CIO Jay Vijayan 于 2016 年创立,利用大数据、人工智能和物联网等技术,为其汽车客户解决…...

mysql之触发器的使用

cr一:创建goods表和orders表; mysql> use mydb16_tirgeer Database changed mysql> create table goods(-> gid char(8) primary key,-> name varchar(10),-> price decimal(8,2),->-> num int); Query OK, 0 rows affected (0.0…...

使用Java和Hazelcast实现分布式数据存储

使用Java和Hazelcast实现分布式数据存储 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在分布式系统中,实现高效的数据存储和管理是非常重要的。Hazelcast作为一个内存数据网格(IMDG)&…...

Hi3751V560_SELinux

Hi3751V560_SELinux setenforce Enforcing setenforce Permissive(或“setenforce 0”) getenforce V560:demo本身的: [ 13.765161] type=1400 audit(1628821512.905:4): avc: denied { read } for pid=1926 comm="system_server" name="ifindex" d…...

邮件安全篇:邮件反垃圾系统运作机制简介

1. 什么是邮件反垃圾系统? 邮件反垃圾系统是一种专门设计用于检测、过滤和阻止垃圾邮件的技术解决方案。用于保护用户的邮箱免受未经请求的商业广告、诈骗信息、恶意软件、钓鱼攻击和其他非用户意愿接收的电子邮件的侵扰。 反垃圾系统的常见部署形式 2. 邮件反垃圾…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 ​ 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

ios苹果系统,js 滑动屏幕、锚定无效

现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

书籍“之“字形打印矩阵(8)0609

题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...

Springboot 高校报修与互助平台小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,高校报修与互助平台小程序被用户普遍使用,为…...

SOC-ESP32S3部分:30-I2S音频-麦克风扬声器驱动

飞书文档https://x509p6c8to.feishu.cn/wiki/SKZzwIRH3i7lsckUOlzcuJsdnVf I2S简介 I2S(Inter-Integrated Circuit Sound)是一种用于传输数字音频数据的通信协议,广泛应用于音频设备中。 ESP32-S3 包含 2 个 I2S 外设,通过配置…...

break 语句和 continue 语句

break语句和continue语句都具有跳转作用&#xff0c;可以让代码不按既有的顺序执行 break break语句用于跳出代码块或循环 1 2 3 4 5 6 for (var i 0; i < 5; i) { if (i 3){ break; } console.log(i); } continue continue语句用于立即终…...

Unity-ECS详解

今天我们来了解Unity最先进的技术——ECS架构&#xff08;EntityComponentSystem&#xff09;。 Unity官方下有源码&#xff0c;我们下载源码后来学习。 ECS 与OOP&#xff08;Object-Oriented Programming&#xff09;对应&#xff0c;ECS是一种完全不同的编程范式与数据架构…...

STM32CubeMX-H7-19-ESP8266通信(中)--单片机控制ESP8266实现TCP地址通信

前言 上篇文章我们已经能够使用串口助手实现esp8266的几种通信&#xff0c;接下来我们使用单片机控制实现。这篇文章会附带教程&#xff0c;增加.c和,.h&#xff0c;把串口和定时器放到对应的编号&#xff0c;然后调用初始化就可以使用了。 先讲解&#xff0c;然后末尾再放源码…...