Stable Diffusion Controlnet常用控制类型解析与实战课程 2

本节内容,给大家带来的是stable diffusion Controlnet常用控制类型解析与实战的第二节课程。在上期课程中,我们已经了解了关于线稿类控制类型的特征和用法,本节课程,我们将继续讲解一些常用的控制类型。

一:OpenPose

先看一看openpose控制类型,我们之前演示的线稿尤其是canny这种细致的线稿控制类型可能会限制AI的创作力。很多时候,我们只希望对某些要素进行控制。比如openpose控制类型可以用来对人物姿势进行控制,openpose通过关键点检测,根据提供的图片提取姿态信息,从而控精确地复制人物动作和姿势。相比线稿预处理器,openpose图像生成更自由。openpose也是stable diffusion中受欢迎程度非常高的一个控制类型。

我们演示一下,文生图标签页,启用controlnet unit 0,控制类型选择openpose,填写正向提示词1girl与反向提示词(badhandv4,  easynegative, nfsw),采样方式使用euler a,采样步数设置为30,

上传一幅之前我们使用过的女孩图像,点击预览图标,可以看到预处理器提取的是人体姿势的预览图。

在生成图片之前我们还补充一些实际应用中非常重要的知识

我们这里的参考图中的人物是半身图像,人物脸部占据画面的比例比较少,

选择openpose控制类型后,预处理自动设置为openpose_full,该预处理器将检测身体姿势,面部表情,手部细节,此时如果直接生成图像,很有可能脸部会出现崩坏的情况。比如生成这样的图像。

所以在生成之前,我们还需要一些额外的操作

1: 参考图是1024*1024,此时建议生成的图像分辨率也设置为1024 * 1024,或者使用512*512,但开启高清修复选项,使最终生成图片的分辨率也为1024*1024.

2: 针对脸部崩坏的情况,我们可以使用一个非常重要的插件ADetailer,我们不在课程中再讲述该插件的安装方法,如果还不熟悉插件的安装,可以参考之前的课程。插件安装后在选项中将增加Adetailer项目,点击展开,勾选启用,然后选择合适的模型即可,我们也可以根据需求调整一些相关的参数

执行以上操作后,再点击生成,可以看到stable diffusion绘制了新的人物图像,图像大部分元素已经发生了较大的变化,但是人物姿态与参考图是一致的。

再强调一下,对于人脸占比比较小的图像,建议开启ADetailer来对脸部进行修复,但对于人脸占比特别小的图像,即使开启了ADetailer仍然可能会绘制出奇怪的脸部,此时我们可以借助局部重绘来对脸部细节进一步修复。

我们回到openpose控制类型

openpose有几个细分预处理器。我们通过预处理器预览图对比一下

1.1 dw_openpose_full

1: dw_openpose_full是使用比较多的姿势处理器,无论是手部识别,面部识别,体态识别,或是一些其他的特征物识别,dw_openpose_ful的表现都非常优秀。他也比另外一个全身姿势识别预处理器openpose_full要更胜一筹。

2:openpose姿态:

主要检测身体的姿势,不会关注脸部细节

3: openpose_face

除了检测身体姿势,也会对脸部表情细节进行检测

4: openpose_faceonly

该预处理器仅检测脸部表情细节

5: openpose_full

检测身体姿势,面部表情,手部细节,但是细节程度不及dw_openpose_full

6:openpose_hand

检测身体姿势和手部细节

我们刚刚演示了文生图中openpose controlnet的使用,我们还可以使用图生图结合openpose实现一键换衣。

我们演示一下

先使用局部重绘,将衣服部分遮罩起来,

修改一下正向提示词

Best quality, masterpiece, ultra high res, raw photo, beautiful and aesthetic,deep shadow, dark theme,(photorealistic:1.4), 1girl, (((long skirt))), striking perspective,

culottes, sleeveless blouse, wedges

提示词中增加了裙子元素,将人物的服装更换为裙子。

如果不使用openpose,可以看到,服装根据提示词发生了变化,但重绘的同时,人物姿势也发生了变化,而由于AI的随机性,有的时候重新绘制的身体部分与头部可能缺乏统一性。

我们可以加入openpose控制来尽可能避免此类问题

启用openpose并使用openpose_full控制图片生成,人物的衣服同样实现了更换,并且人物姿势没有变化,身体与头部也会更加的协调。

openpose的应用非常广,比如一些视频转绘扩展插件也会利用到openpose来保证人物姿势的一致性。

二:Depth

讲解完openpose,我们继续讲解另外一个控制模型depth

depth也是实用价值很高的控制类型,他可以根据参考图像分析图像中各个区域与物品的深度与距离信息,然后基于这些信息取控制图片的生成。我们演示一下,文生图中,选择depth控制类型,上传一张人物风景图,预处理器选择depth_leres++,

点击预览,解析出的是元素深度信息图,颜色越浅表示离镜头越近,颜色越深则代表离镜头越远。

填写好提示词

正向:masterpiece,(best quality:1.3),ultra high res, raw photo, Landscape photos of characters, Long distance character photography, style: realistic pictures, 1girl

反向:nsfw, mutated hands and fingers, deformed, bad anatomy, disfigured, poorly drawn face, mutated, extra , ugly, poorly drawn hands, missing , floating , disconnected limbs, malformed hands, out of focus, long neck, long body

点击生成,stable diffusion会根据深度信息图绘制新的图像

depth也有多个细分预处理器,区别在于其采用的深度信息估算算法有一定的差异,最终呈现的效果也会有所差异。

我们对比一下这些预处理器解析出的深度信息图

depth_midas是非常灵活和高效一种预处理器,其深度信息估算算法可以从图像中推断出场景中物体的距离信息,从而表达物体的远近关系。midas的计算成本低,但细节没那么完整。midas更擅长处理前景。对于主体与背景,midas分离得更清晰。(以刚刚的图像为例)所以可以看到使用depth_midas,解析出的背景信息是比较少的。

depth_leres其深度信息估算算法可以检测图片的景深和光影的深度,相对于midas,其精度通常更高,细节也更多,但出图时间也可能更长。

depth_leres++则提供了更精确以及效率更高的算法,提取的信息更加的细致,可以看到,其提取的背景信息明显多于midas

depth_zoe预处理器采用的深度信息估算方法结合了相对深度和绝对深度,可以估计图像中每个像素的深度信息。比如对于包含人脸的图片,depth_zoe能估算出人脸五官信息的深度图,从而更好地还原人物的五官特征。

depth控制类型对于房屋内部的场景与物品等要素可以把控和还原得非常好,我们可以用来实现房屋设计方案的复刻与重绘制。这是depth预处理器比较典型的应用场景。

我们刚刚提到的depth_leres++预处理器,增加了两个可选项,Remove Near %和Remove Background,通过调整这两个选项可以设置保留前景和背景的程度

这两个选项在某些场景会特别有用,比如我们可以提高Remove Background比例(65~78)来减少背景的保留,然后添加背景提示词来更好地实现背景更换

我们演示一下,在文生图模式中,修改正向提示词(1girl ,(((field)))), 反向提示词填入river。更换了背景提示词为field-田野,并增加了其权重。打开controlnet unit 0,选择depth控制类型,(采样方法使用euler a),分辨率与原图相同1024*1024,预处理器使用depth_leres++,将Remove Background设置为75,

另外为了人物变化不要太大,我们在controlnet unit 1再开启一个reference控制类型,该控制类型我们会在下节课程中讲解,点击生成,可以看到图像的背景实现了更换。

当然,实现换背景,最好还是使用在图生图的课程中已经演示过的局部重绘(上传蒙版)方式,这样能保证人物不会发生变化。

三:Segmentation

讲述完depth控制类型,我们接着学习另外一个控制类型-segmentation。

segmentation预处理器可以分析图片中物品种类并以不同的颜色进行分割和区分,进而控制图像的生成。

segmentation能根据规则识别图片中的物品,从而有效约束图像构成,同时又赋予了AI更大的创作空间,

我们演示一下,文生图模式,启用controlnet,选择segmentation,上传参考图,点击预览,可以看到预处理后得到的是一张以色块标注区分物品的预览图,

segmentation有一个物体与色块对应表,对应表放在我们的课后文档中。

stable diffusion会根据对应表,再基于预处理结果去生成图像,比如这里,蓝色是沙发,黄色是灯

点击生成,stable diffusion会依据相应的规则重新绘制一幅客厅图像。

segmentation也有几个细分预处理器:

这几个预处理器的命名遵循一定的规则,

of和of部分代表的是算法

of则代表使用oneformer算法

uf表示使用uniformer算法

ade20k和coco则代表的是不同的数据集标记和注释方法,这两个数据集采用的颜色标示规则也有一定区别,

这里是不同预处理器处理得出的数据集标记预览图。

ade20k识别的物体种类更多,所以细节相比coco更丰富。一般情况我们更多会选择seg_ofade20k这个预处理器。

好了,本节课的课程到这里就结束了,我们做一下总结。本节课程我们继续讲解了controlnet的几个常用控制类型,我们首先讲述了使用度非常高的openpose姿态控制类型,接着我们讲解了depth深度控制类型与segmentation语义分割控制类型,这些控制类型在stable diffusion中都具备一定的实战应用价值,比如openpose对人物姿态的控制可以实现换装应用,depth和segmentation可以用于建筑物装修设计等等。在下节课程中我们将继续讲解一些图像风格约束类的控制类型,包括shuffle,reference和normalmap。这些控制类型可以通过提取图片的风格,包括颜色,角色,光影特征,从而控制图片的绘制。

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

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

相关文章

TC3xx系列芯片--GPT12模块介绍

1、模块介绍 GPT1/2(General Purpose Timer Unit)是 Aurix TC3XX 内部的通用定时器模块,提供高精度定时功能,GPT1/2 包含 GPT1 和 GPT2 两个子模块,通用定时器单元块 GPT1 和 GPT2 具有非常灵活的多功能定时器结构,可…

uniapp 添加loading

在uniapp中添加loading可以使用uni的API uni.showLoading 方法。以下是一个简单的示例代码 // 显示loading uni.showLoading({title: 加载中 });// 假设这里是异步操作,比如网络请求 setTimeout(function () {// 隐藏loadinguni.hideLoading(); }, 2000);

基于反射内存的光纤交换机

在当今高度信息化的社会中,数据的高速传输与处理已成为各行各业不可或缺的一部分。特别是在航空航天、工业自动化、金融交易及高性能计算等领域,对数据实时性和可靠性的要求尤为严格。为满足这些需求,基于反射内存(Reflective Mem…

前端上传后端接收参数为null

记录一下工作中的问题 前端明明把文件传到后台了,但是后台接收参数为null 原因: 前端上传文件的name和后端接收参数名称不匹配 前端 后端 把前端上传的name由upfile改为file即可 本来是很基本的小问题,但因为自己钻了牛角尖一直没搞定&…

Web3的技术栈详解:解读区块链、智能合约与分布式存储

随着数字时代的不断发展,Web3作为下一代互联网的核心理念逐渐走进了大众视野。它承载着去中心化、用户主权以及更高效、更安全的网络环境的期望。Web3不再是由少数中心化机构主导的网络,而是通过一系列核心技术的支撑,给每个用户赋予了更多的…

芯食代冻干科技研究院:创新与品质并重,推动家用冻干机高质量发展

11月25日,芯食代首届食品冻干前沿与智能化升级创新大会在江苏常州成功举办。本次大会由芯食代冻干科技研究院(江苏)有限公司与芯食代(上海)科技发展有限公司联合主办,云集学界专家教授、商界企业精英,共议家用冻干机的未来创新发展。作为创新大会,芯食代冻干科技研究院也在本次…

相交的链表

力扣链接:160. 相交链表 - 力扣(LeetCode) 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据…

PETRv2: A Unified Framework for 3D Perception from Multi-Camera Images

全文摘要 本文介绍了一种名为PETRv2的统一框架,用于从多视图图像中进行三维感知。该框架基于先前提出的PETR框架,并探索了时间建模的有效性,利用前一帧的时间信息来提高三维物体检测效果。作者在PETR的基础上扩展了三维位置嵌入(…

项目基于oshi库快速搭建一个cpu监控面板

后端&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.github.oshi</groupId><artifactId>oshi-…

设计模式——Chain(责任链)设计模式

摘要 责任链设计模式是一种行为设计模式&#xff0c;通过链式调用将请求逐一传递给一系列处理器&#xff0c;直到某个处理器处理了请求或所有处理器都未能处理。它解耦了请求的发送者和接收者&#xff0c;允许动态地将请求处理职责分配给多个对象&#xff0c;支持请求的灵活传…

【Nacos02】消息队列与微服务之Nacos 单机部署

Nacos 部署 Nacos 部署说明 Nacos 快速开始 Nacos 快速开始 版本选择 当前推荐的稳定版本为2.X Releases alibaba/nacos GitHuban easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications. - Re…

查看 tomcat信息 jconsole.exe

Where is the jconsole.exe? location: JDK/bin/jconsole.exe

大数据新视界 -- Hive 元数据管理:核心元数据的深度解析(上)(27 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

大数据实验E5HBase:安装配置,shell 命令和Java API使用

实验目的 熟悉HBase操作常用的shell 命令和Java API使用&#xff1b; 实验要求 掌握HBase的基本操作命令和函数接口的使用&#xff1b; 实验平台 操作系统&#xff1a;Linux&#xff08;建议Ubuntu16.04或者CentOS 7 以上&#xff09;&#xff1b;Hadoop版本&#xff1a;3…

【Linux系统】Linux内核框架(详细版本)

Linux体系结构&#xff1a;Linux操作系统的组件详细介绍 Linux 是一个开源的类 UNIX 操作系统&#xff0c;由多个组件组成&#xff0c;具有模块化和层次化的体系结构。它的设计实现了内核、用户空间和硬件的高效协作&#xff0c;支持多用户、多任务操作&#xff0c;广泛应用于…

如何使用apache部署若依前后端分离项目

本章教程介绍,如何在apache上部署若依前后端分离项目 一、教程说明 本章教程,不介绍如何启动后端以及安装数据库等步骤,着重介绍apache的反向代理如何配置。 参考此教程,默认你已经完成了若依后端服务的启动步骤。 前端打包命令使用以下命令进行打包之后会生成一个dist目录…

oracle 11g中如何快速设置表分区的自动增加

在很多业务系统中&#xff0c;一些大表一般通过分区表的形式来实现数据的分离管理&#xff0c;进而加快数据查询的速度。分区表运维管理的时候&#xff0c;由于人为操作容易忘记添加分区&#xff0c;导致业务数据写入报错。所以我们一般通过配置脚本或者利用oracle内置功能实现…

【不稳定的BUG】__scrt_is_managed_app()中断

【不稳定的BUG】__scrt_is_managed_app函数中断 参考问题详细的情况临时解决方案 参考 发现出现同样问题的文章: 代码运行完所有功能&#xff0c;仍然会中断 问题详细的情况 if (!__scrt_is_managed_app())exit(main_result);这里触发了一个断点很奇怪,这中断就发生了一次,代…

FFmpeg源码中,计算CRC校验的实现

一、CRC简介 CRC(Cyclic Redundancy Check)&#xff0c;即循环冗余校验&#xff0c;是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法&#xff0c;主要用来检测或校核数据传输或者保存后可能出现的错误。CRC利用除法及余数的原理&#xff0c;实现错误侦…

核密度估计——从直方图到核密度(核函数)估计_带宽选择

参考 核密度估计&#xff08;KDE&#xff09;原理及实现-CSDN博客 机器学习算法&#xff08;二十一&#xff09;&#xff1a;核密度估计 Kernel Density Estimation(KDE)_算法_意念回复-GitCode 开源社区 引言 在统计学中&#xff0c;概率密度估计是一种重要的方法&#xff0…