太实用了!关于ControlNet,这篇你一定要看

一篇文章教会你,从入门到使用。

这里是行者AI,我们专注于人工智能在游戏领域的研究和应用,凭借自研算法,推出游戏AI、智能内容审核、数据平台等产品服务。

controlNet控制生成

anypaint

看到这篇文章的你,一定也是AI绘画的爱好者吧。我们有一款可以0门槛上手入门,也可以满足复杂专业生图需求的AI美术在线学习工具anypaint。在线生图,无需硬件和部署。anypaint功能包括文生图、图生图、局部重绘、高清放大、LoRA、ControlNet、潜变量局部放大、平铺扩散、姿势编辑等。不论你是初学者还是专业人士,都能在图刷刷中找到适合自己的绘图方式和独特风格,为你的创意提供无限可能。入股绝对不亏。

链接给各位看官奉上:

https://www.anypaint.art/

ControlNet的出现代表着 AI 生成开始进入真正可控的时期,而 AIGC 的可控性是它进入实际生产最关键的一环。如果说Lora是把你想要画面的风格炼制成模型,那么ControlNet就是更好地控制这个模型,生成你想要的特定姿势或画面。文章以下关于ControlNet的教学都以anypaint为例(https://www.anypaint.art/),建议可以边看边打开网页操作,效果更好,不方便的话可以先收藏

ControlNet 的核心能力就是能让我们通过设置各种条件来让AI更可控地生成最终图像结果。这些条件就是通过调节预处理器参数来实现的,所以我们首先要先了解下 ControlNet 各种预处理器的功能,展示部分预处理器效果如下:

每个 ControlNet 的预处理器都有不同的功能接下来我们具体一个一个来看,他们究竟是什么?怎么用?什么时候用哪个?或者那些合适?

(表格太长,完整表格已放评论区,需要自取)

1.Canny 边缘检测

Canny 边缘检测预处理器可很好识别出图像内各对象的边缘轮廓,帮助我们标注轮廓、动作、衣服褶皱、表情等等画面的细节,多用在3转2;常用于生成线稿。
缺点:主体容易被其他的背景影响
1. 预处理器分辨率
预处理器分辨率数值越高越精细,也越吃显存。但如果数值太低生成的线条也会很粗糙。默认512,具体设置时需根据素材大小和实际情况来做权衡。
也可直接勾选【Pixel Perfect】选项,系统自动设置最佳分辨率(推荐)

2.长和宽的阈值,这个值越高线条越简单,越低线条越复杂。
注意:一定要找到和预处理器对应名字一样的模型。

Depth 深度检测

通过提取原始图片中的深度信息,生成具有原图同样深度结构的深度图,越白的越靠前,越黑的越靠后。

MiDaS 深度信息估算

● 用来表示空间距离,也就是前后距离,体现透视关系;越白的就越靠前,越黑的就越往后
● 可以用来更换背景、主体、还有画风之类的东西;有时我们也可以用于生成遮罩蒙版。
● 深度图可由3D软件生成,也可以使用PS
● 如果用人像来检测的话,边缘轮廓没问题,但白色里面是没有细节的,所以单独使用的话一般就用风景,或者能表示纵深关系的图。

LeReS 深度信息估算


LeReS 深度信息估算比 MiDaS 深度信息估算方法的成像焦点在中间景深层,这样的好处是能有更远的景深,且中距离物品边缘成像会更清晰,但近景图像的边缘会比较模糊,具体实战中需用哪个估算方法可根据需要灵活选择。
如下图能看出我们很好地控制住了生成结果的整体结构,这与原图基本保持一致。

HED 边缘检测

HED 边缘检测可保留更多柔和的边缘细节,类似手绘效果。

参数也是分辨率越高越精细,但也越吃显存。
相对于使用普通的 img2img ,边缘线提取的方式可以生成更加清晰完整的图,黑色描边也得到了很好的重绘。

M-LSD 线条检测

  • 适用于四四方方的场景,建筑物,物体,房间、车辆等,生成的预览图就是很正直的线条
  • 非常适合搞建筑和室内设计的朋友用

  • 直线检测mlsd与canny区别 mlsd只会检测直线,而canny会检测所有边缘线条 如图里的人物,canny会检测出来并生成灯

Normal Map 法线贴图

Normal Map 法线贴图能根据原始素材生成一张记录凹凸信息的法线贴图,便于AI给图片内容进行更好的光影处理,它比深度模型对于细节的保留更加的精确。法线贴图在游戏制作领域用的较多,常用于贴在低模上模拟高模的复杂光影效果。

  • RGB 转 BGR

如需要把 Normal map 从 RGB 反转成 BGR 的可把这个选项勾上。(注:因坐标系问题,有时需要反转下通道信息,如生成结果的光照信息和你预期是反的,可能需要勾选此选项)

人物姿势检测

OpenPose 姿态检测

OpenPose 姿态检测可生成图像中角色动作姿态的骨架图,这个骨架图可用于控制生成角色的姿态动作。这个没有涉及手部的骨架,所以手部控制不行有时会出问题。

OpenPose 姿态及手部检测

OpenPose 姿态及手部检测解决了姿态检测手的问题。如下图有了手部骨骼控制生成的手部效果会更好。

除了生成单人的姿势,它甚至可以生成多人的姿势,这点非常关键,在此之前AI生成的画面里多个人物的特定动作是几乎无法靠提示词来实现的。
通过控制人物姿势,在人物角色设计时也可以得到很好应用。

PiDiNet 边缘检测(像素差分网络,配合 hed 模型)

PiDiNet 边缘检测生成的线条较粗壮,类似雕刻效果。这个预处理器要配合选择 hed 模型效果才会比较好。

Scribble 涂鸦(要配合 scribble 模型)

Fake_Scribble 伪涂鸦

不用自己画,扔个图片给AI,生成类似涂鸦效果的草图线条。
该算法提取了曝光对比度比较明显的区域,以此来重新引导。可以看到提取的涂鸦,仅保留了曝光度对比较大的部分,但是细节保留的很不错,细节保留的越多,那么重新引导时所能更改的部分就越小。

Reference 参考原图

参考原图的风格或角色
reference只有预处理器,不需要模型,该功能对于保持人物角色也有不错的效果。

anypaint中界面具体操作解释:

  • 启用
    勾选此选项后,点击 “生成” 按钮时,ControlNet 才会生效。
  • 反色模式(Invert Input Color)
    将图像颜色进行反转后应用。
  • RGB 转 BGR(RGB to BGR)
    把颜色通道进行反转,在 NormalMap 模式可能会用到。
  • 低显存优化(Low VRAM)
    低显存模式,如果你的显卡内存小于等于4GB,建议勾选此选项。
  • 无提示词的猜测模式(Guess Mode)
    也就是盲盒模式,不需要任何正面与负面提示词,出图效果随机,很有可能产生意想不到的惊喜效果!
  • 预处理器(Preprocessor)
    在此列表我们可选择需要的预处理器,每个 ControlNet 的预处理器都有不同的功能,后续将会详细介绍。
  • 模型(Model)
    配套各预处理器需要的专属模型。该列表内的模型必须与预处理选项框内的名称选择一致,才能保证正确生成预期结果。如果预处理与模型不致其实也可以出图,但效果无法预料,且一般效果并不理想。
  • 权重(Weight)
    权重,代表使用 ControlNet 生成图片时被应用的权重占比。
  • 引导介入时机(Guidance Start(T))
    在理解此功能之前,我们应该先知道生成图片的 Sampling steps 采样步数功能,步数代表生成一张图片要刷新计算多少次,Guidance Start(T) 设置为 0 即代表开始时就介入,默认为 0,设置为 0.5 时即代表 ControlNet从 50% 步数时开始介入计算。
  • 引导退出时机(Guidance End(T))
    和引导介入时机相对应,如设置为1,则表示在100%计算完时才会退出介入也就是不退出,默认为 1,可调节范围 0-1,如设置为 0.8 时即代表从80% 步数时退出介入。
  • 缩放模式(Resize Mode)
    用于选择调整图像大小的模式:默认使用(Scale to Fit (Inner Fit))缩放至合适即可,将会自动适配图片。
    一共三个选项:Just Resize,Scale to Fit (Inner Fit),Envelope (Outer Fit)
  • 画布宽度和高度(Canvas Width 和 Canvas Height)
    画布宽高设置,请注意这里的宽高,并不是指 SD 生成图片的图像宽高比。该宽高代表 ControlNet 引导时所使用的控制图像的分辨率,假如你用 SD 生成的图片是 1000x2000 分辨率,那么使用 ControlNet 引导图像时,对显存的消耗将是非常大的;我们可以将引导控制图像的分辨率设置为 500x1000 ,也就是缩放为原本图像一半的分辨率尺寸去进行引导,这有利于节省显存消耗。
  • 创建空白画布(Create Blank Canvas)
    如果之前使用过 ControlNet 功能,那么将会在 ControlNet 的图像区域留有历史图片,点击该按钮可以清空之前的历史,也就是创建一张空白的画布。
  • 预览预处理结果(Preview Annotator Result)
    点击该按钮可以预览生成的引导图。例如:如果使用 Canny 作为预处理器,那么点击该按钮之后,可以看到一张通过 Canny 模型提取的边缘线图片。
  • 隐藏预处理结果(Hide Annotator Result)
    点击该按钮可以隐藏通过 Preview 按钮生成的预览图像窗口(不建议隐藏)

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

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

相关文章

SpringBoot整合人大金仓数据库KingBase

1 去KingBase官网下载驱动jar包 2 将解压得到的所有jar包放置在libs目录下&#xff08;没有就新建一个目录&#xff09; 3 在pom文件添加相关依赖 <!--添加KingBase所需要的依赖--> <dependency><groupId>com.kingbase</groupId><artifactId>kin…

DNS解析原理和k8s DNS 实践

1. 问题背景 1.1 域名解析异常 近期开发的一个功能&#xff0c;需要在k8s集群容器环境中调用公司内部api&#xff0c;api提供了内网域名&#xff0c;解析内网域名异常导致请求超时&#xff0c;因此梳理了下DNS的知识点。 可以先看到下面&#x1f447;这段配置&#xff0c;修…

向量数据库:Milvus

特性 Milvus由Go(63.4%),Python(17.0%),C(16.6%),Shell(1.3%)等语言开发开发&#xff0c;支持python&#xff0c;go&#xff0c;java接口(C,Rust,c#等语言还在开发中)&#xff0c;支持单机、集群部署&#xff0c;支持CPU、GPU运算。Milvus 中的所有搜索和查询操作都在内存中执行…

《每天十分钟》-红宝书第4版-基本引用类型

引用值&#xff08;或者对象&#xff09;是某个特定引用类型的实例。在 ECMAScript 中&#xff0c;引用类型是把数据和功能组织到一起的结构&#xff0c;经常被人错误地称作“类”。虽然从技术上JavaScript 是一门面向对象语言&#xff0c;但ECMAScript 缺少传统的面向对象编程…

Disruptor相关问题及答案(2024)

1、Disruptor 是什么&#xff0c;它解决了什么问题&#xff1f; Disruptor是一个高性能的内存中数据交换框架&#xff0c;由LMAX(伦敦多资产交易所)开发&#xff0c;目的是用于支持交易系统中极高的并发处理。它可以说是一个用于线程间消息传递的工具&#xff0c;但与传统的队…

第32次CCF计算机软件能力认证-第一题

仓库规划 问题描述 西西艾弗岛上共有 n个仓库&#xff0c;依次编号为 1…n。每个仓库均有一个m维向量的位置编码&#xff0c;用来表示仓库间的物流运转关系。 具体来说&#xff0c;每个仓库 i均可能有一个上级仓库 j&#xff0c;满足&#xff1a;仓库 j 位置编码的每一维均大…

【XR806开发板试用】XR806无线OTA功能实验

前言 非常感谢基于安谋科技STAR-MC1的全志XR806 Wi-FiBLE开源鸿蒙开发板试用活动,并获得开发板试用。 XR806不仅硬件功能多&#xff0c;XR806也提供了功能极其丰富的SDK&#xff0c;几天体验下来非常容易上手。常见的功能几乎都有相应的cmd或demo实现&#xff0c;HAL也做得非…

Apache ActiveMQ RCE漏洞复现

Apache ActiveMQ RCE漏洞复现&#xff08;CNVD-2023-69477&#xff09; 1、漏洞版本 Apache ActiveMQ < 5.18.3 Apache ActiveMQ < 5.17.6 Apache ActiveMQ < 5.16.7 Apache ActiveMQ < 5.15.16 2、POC 通过dnslog验证的poc.xml <?xml version"1.…

面对24考研不尽如人意的预期,如何有效应对与规划未来?

文章目录 1. 自我反思与总结&#x1f90f;2. 保持学习与积累✌3. 多元发展与备选方案&#x1f91e;4. 心理调适与激励&#x1f44f; 当你点开这篇文章的时候&#xff0c;或许你正在经历着2024年研究生入学考试之后的心潮起伏。成绩未定&#xff0c;而内心却已有所预感&#xff…

SpringBoot:详解Bean装配

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《SpringBoot从官方文档学习》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、IoC容…

C++:多态|虚函数、虚表底层原理|多态原理

C&#xff1a;多态|虚函数、虚表底层原理|多态原理 前言一、多态的概念二、多态的定义及实现2.1 多态的构成条件2. 2 虚函数2.3 虚函数的重写2.3.1 虚函数重写的例外1&#xff1a;协变(基类与派生类虚函数返回值类型不同)2.3.2 虚函数重写的例外2&#xff1a;析构函数的重写(基…

【hcie-cloud】【18】华为云Stack灾备服务介绍【容灾解决方案介绍、灾备方案架构介绍、管理组件灾备方案介绍、高阶云服务容灾简介、缩略词】【下】

文章目录 灾备方案概述、备份解决方案介绍容灾解决方案介绍华为云容灾解决方案概览云容灾服务云硬盘高可用服务 (VHA)VHA组网结构VHA逻辑组网架构VHA管理组件介绍VHA服务实现原理云服务器高可用服务&#xff08;CSHA&#xff09;CSHA物理组网架构CSHA逻辑组网架构CSHA服务组件间…

面试宝典进阶之redis缓存面试题

R1、【初级】Redis常用的数据类型有哪些&#xff1f; &#xff08;1&#xff09;String&#xff08;字符串&#xff09; &#xff08;2&#xff09;Hash&#xff08;哈希&#xff09; &#xff08;3&#xff09;List&#xff08;列表&#xff09; &#xff08;4&#xff09;Se…

# 大模型实战作业02

大模型实战作业02 知识库助手搭建 注 有些问题在回答的时候可能出现乱码的情况 可能的原因 模型内部提示词知识库 这部分可以做适当的优化&#xff0c;对于无法回答或回答质量不佳的回答返回特定话术提升用户体验

.gitignore作用和使用以及文件无法变黄或忽略文件无效还是被提交问题

目录 .gitignore作用 .gitignore使用 1.语法规范&#xff08;熟悉正则很容易理解&#xff09; 2.示例 文件无法变黄或忽略文件无效还是被提交问题 解决方案 .gitignore作用 .gitignore 文件在 Git 版本控制系统中扮演着非常重要的角色。在任何 Git 仓库中&#xff0c;.giti…

Spring Boot 和 Spring 有什么区别

Spring Boot 和 Spring 是两个不同的概念&#xff0c;它们服务于不同的目的&#xff0c;但它们之间有着紧密的联系。下面是它们之间的主要区别&#xff1a; 目的和定位&#xff1a; Spring&#xff1a;Spring 是一个开源的 Java 平台&#xff0c;它最初由 Rod Johnson 创建&am…

保姆级AI绘画入门教程 从入门到实操!!!!小白必收藏!!!

手把手教你入门绘图超强的AI绘画程序&#xff0c;用户只需要输入一段图片的文字描述&#xff0c;即可生成精美的绘画。给大家带来了全新保姆级教程资料包&#xff08;文末可获取&#xff09; 很多朋友想尝尝AI绘画的鲜&#xff0c;但是使用市场上的AI程序也好、软件也好&#…

HCIA-Datacom题库(自己整理分类的)_17_简单的命令判断【11道题】

1.华为AR路由器的命令行界面下&#xff0c;save命令的作用是保存当前的系统时间。 解析&#xff1a;Save保存配置 2.VRP界面下&#xff0c;使用命令delete vrpcfg.zp删除文件&#xff0c;必须在回收站中清空&#xff0c;才能彻底删除文件。√ 解析&#xff1a;delete删除到回…

常用连读技巧2

1. how to do it – 咋做 连读的时候的音标是/haʊdə du ɪt/&#xff1a;听起来就像是【薅的毒it】 “how to do” 中的 “w” 和 “to” 之间会发生连读。在口语中&#xff0c;“to” 常常被弱读为 /tə/ 或 /tu/&#xff0c;所以 “how to” 发音时可以近似为 /haʊtə/ 或…

uniapp自定义顶部导航并解决打包成apk后getMenuButtonBoundingClientRect方法失效问题

需求&#xff1a;要在app上的顶部导航提示哪里添加一些东西进去&#xff0c;用uniapp自带的肯定不行啊&#xff0c;所以自定义了所有的页面的顶部导航&#xff0c;之后自定义后用手机调试发现 uni.getMenuButtonBoundingClientRect()这个方法的top获取不到....网上找了很多种方…