前面的篇章已经详细讲解了线条约束、三维关系与空间深度、人体姿态等几类controlnet的功能与应用,本节内容将对通过controlnet对图像修复与编辑进行讲解。

    通过controlnet也可以对图片进行编辑、重绘及放大等操作,具体包括Recolor、Inpaint、Tile等,我们可以将这几类功能理解为对原生图生图功能的延伸和拓展。

序号

分类

Controlnet名称

备注

1

线条约束

Canny(硬边缘)

约束性强,可以识别详细线条

SoftEdge(软边缘)

柔和的线条

MLSD 直线、最小线段检测

主要用于建筑空间

Lineart 线稿提取

粗细不同的线条

Scribble 涂鸦

粗略线条、发挥空间大

2

三维关系、

空间深度

Depth 深度

空间层次关系

Normal 法线贴图

纹理效果常用

3

人体姿态、手势与表情

Openpose 姿态控制

姿势、表情、手势控制

4

图像风格转换

Shuffle 随机

打乱图片元素重新组合

IP-Adapter (图像)风格迁移

参考图像画风、换脸等

T2l-Adapter (文字转图)风格迁移

参考原图画风

Reference 参考图引导

模仿原图绘画

Instant-ID 换脸

人物换脸

5

图片修复与编辑

Recolor 重上色

老照片修复

Inpaint重绘

类似于局部重绘,但融合效果更好

Tile 分块

分块重采样,细节方法

6

结构理解

Seg 语义分割

根据色块代表不同含义

7

其它

InstructP2P 指令式编辑

变换场景、特效

Revision 图像修订

1 Recolor重上色

    相信大家在网上看到过类似于老照片修复颜色的直播,这里面用到的主要功能就是通过Recolor重上色实现的。

    模型下载地址:https://huggingface.co/lllyasviel/sd_control_collection/tree/main

    对应1.5大模型版本模型1个:

对应XL大模型版本模型共有2个,根据电脑内存情况选择其中1个下载即可:

    Recolor预处理器共2种: intensity(调节图像强度)和 luminance(调节图像亮度),推荐使用 luminance效果更好。

    Gamma Correction参数用于调节图片的明暗,默认值为1,设置完成后点击爆炸按钮即可看到该数值的预览效果,方便多次调整至目标数值。

    使用Recolor模型,可以通过提示词指定图中人物或环境等元素的颜色,如肤色、衣服色彩等,从而实现对图片中元素色彩的调整。

    Recolor在文生图或者图生图中使用均可以获得类似的效果,下面以在文生图中为一张黑白图像上色作为案例,对recolor功能进行讲解。

目标图像:

提示词获取:可以通过WD1.4标签器功能反推出图片关键词,再根据目标需求进行修改。

调整后提示词描述为

正向提示词:color photo,solo,1girl,exquisite face,realistic,looking at viewer,lips,person photo,blond hair,fair_skin,lipstick,black eyelashes BREAK blue eyes,simple background,glass soda bottle,white shirt BREAK light blue sweater,

反向提示词:DeepNegative_xl_v1,

Recolor 无法保证需要的颜色可以准确地赋予特点的元素,不同的颜色之间也可能会出现相互污染,实际使用时可以配合提示词打断语法进行调试(BREAK句式)。

    实际上因为年代久远的问题,很多老照片并不清晰,仅仅采用重上色功能,可能无法达到较好的效果。一般情况下,一张老照片的修复需要经过以下几个步骤:先采用高清修复功能放大照片分辨率;再对照片进行消除噪点、修复损坏部分;最后再通过SD重上色功能进行上色填充。后续章节中针对老照片上色操作步骤会有详细的讲解。

2 Inpaint局部重绘

    Inpaint局部重绘的功能与图生图十分类似,但是因为在controlnet中可以选择不同的预处理器和模型,使Inpaint重绘的可控性比webUI图生图功能更强。

    inpaint重绘预处理共三个:

①重绘-全局融合算法(Inpaint_Global_Harmonious):对图片整体画面和色调调整,由于更加侧重蒙版区域与整体画面的融合,整体画面可能较原图有较大变动;

②仅局部重绘(Inpaint_only):仅对蒙版区域进行局部重绘;

③仅局部重绘+大型蒙版(Inpaint_only+lama):Inpaint_only的改良,lama算法更适合抹除蒙版区域内较为突出的内容,更适合消除/抹除画面局部内容。

2.1 局部内容消除

    上传一张人物风景照,尝试去除风景照中的人物,并使该区域更好地融入背景。

    controlnet中上传图像,鼠标手动绘制蒙版--图像左上角点击“图像”可以看到操作方式。

    测试几款预处理器预览效果,Inpaint_only+lama在预处理器阶段就可以很好地实现去除物体效果。

    再来测试实际生成图片情况,测试仅依赖inpaint的消除功能,在提示词区域不填写任何内容:

生图结果对比:

    经过多轮抽卡,三款预处理器虽然均能实现抹除蒙版内容并生成与融入周边背景的内容,但从成功概率及生成效果对比,Inpaint_only+lama消除蒙版内容能力上有明显优势。

2.2 局部重绘

    涂抹图片中需要重绘的区域,提示词中填入目标内容提示词。

    比如我们将风景照中的人物衣服重绘成白色衬衫,测试一下三个预处理器的对比情况。

    提示词中填写目标内容,打开controlnet上传底图并手绘蒙版区域:

    三款预处理器生成效果对比:

预处理效果

生成图像效果

Inpaint_only+lama在预处理时即消除蒙版区域,虽然可以成功生成白色衬衣背影,但多次抽卡依然缺少一部分被消除的胳膊。

inpaint_only预处理器可以较好地按指令生成重绘内容

inpaint_global_harmonious预处理器可以较好地按指令生成重绘内容,根据其它图像测试,该预处理器在局部重绘时对全局融合的效果最好。

    该功能效果与图生图局部重绘效果基本类似(图生图局部重绘需要重绘蒙版区域,可能需要多次抽卡才能获得正常图片,更多地应用于重绘非蒙版区域)。

    高效子蒙版区的作用和图生图-上传蒙版重绘功能基本一致,但是经过实测,文生图controlnet中inpaint功能中仅有预处理器inpaint_global_harmonious对上传的蒙版生效,另外两款预处理器无效。另外需要注意,inpaint中,白底黑色蒙版图中黑色区域为蒙版区域。

2.3 扩图

    我们可以利用提示词+重绘功能来填充目标图像大于参考图像的范围空间,从而实现扩图的功能。

    因为是扩图,我们需要用到原图中的描述,可以通过WD1.4反推获取提示词(使用完反推功能后一定记得卸载反推模型),并发送到文生图。

    注意,图片尺寸需设置为扩图后尺寸,其余参数参考如下:

    controlnet中选择inpaint,选择预处理与模型,注意缩放模式需选择“缩放后填充空白”,即扩充画布后将新增空白区域进行填充。

    生成效果如下:

3 Tile分块

     Tile分块的原理是将图片切分成多个分块,分别识别每个分快的信息并进行放大及细节增强,最后再通过特定算法将扩大后的分块重组成一张图片。Tile分块因为采取分块放大再组合的方式,可以有效避免整张图片放大时易爆显存情况。理论上只要分的块足够多,普通显存设备也能绘制任意尺寸的放大图,只是需要花费的时间长短问题。

     因在优化图像细节的同时不会影响画面结构,除了将低像素图像清晰化外,Tile也可以用于增加画面细节,常用于模糊照片修复、图片放大、修复细节等。

     Tile分块共有4 种预处理器:resample重采样、colorfix+sharp固定颜色+锐化、colorfix固定颜色,以及特殊的算法blur_gaussian高斯模糊(通过模糊输入图像的特征,再重新生成质量更的图像)。

3.1 案例

     目标:将一张低像素模糊照片清晰化,并增加细节。

    选择与目标图像风格对应的大模型;

    提示词栏添加对图像内容简单描述词,也可通过WD1.4反推获得:

     参数设置中主要注意宽度高度设置为原图的倍数,即放大倍数:

     打开controlnet,上传底图(案例尺寸128×256),控制类型选择“Tile分块”,选择对应预处理器与模型等。

     不同预处理器最终生图效果如下:

    可以看出,图片在保持了原图片的原有结构基础上,通过增加细节变得更加清晰。这一点在图生图模块中很难实现,如采用图生图进行图像放大,调高重绘幅度虽然能增强画面细节,但是图片的变化可能会很大,导致与原图有明显差距。

    其它1组案例:

3.2 案例2

     一张原本清晰的照片,通过Tile功能增加细节(图像尺寸不变,不改变图像原有结构)

    因不改变图像尺寸,只通过tile增加细节,所以此处目标图像尺寸通过controlnet直接同步即可,无需调整。

     不同预处理器生成图像如下,可以看到后面两幅图较原图均有细节增加。

总结:

        这里分享webUI的本地整合包资源,个人自用的整合包(超全插件及模型,本节课程所有涉及的模型均可在对应文件夹中找到下载)。

     整合包形式,无需安装,Windows系统下载打开即用。

「webui全能包(内置超全插件、模型)--100G左右」https://pan.quark.cn/s/3647679a1966

    欢迎正在学习comfyui等ai技术的伙伴V加 huaqs123 进入学习小组。在这里大家共同学习comfyui的基础知识、最新模型与工作流、行业前沿信息等,也可以讨论comfyui商业落地的思路与方向。 欢迎感兴趣的小伙伴,群共享资料会分享博主自用的comfyui整合包(已安装超全节点与必备模型)、基础学习资料、高级工作流等资源……

    致敬每一位在路上的学习者,你我共勉!Ai技术发展迅速,学习comfyUI是紧跟时代的第一步,促进商业落地并创造价值才是学习的实际目标。

——画青山Ai学习专栏———————————————————————————————

零基础学Webui:

https://blog.csdn.net/vip_zgx888/category_13020854.html

Comfyui基础学习与实操:

https://blog.csdn.net/vip_zgx888/category_13006170.html

comfyui功能精进与探索:

https://blog.csdn.net/vip_zgx888/category_13005478.html

系列专栏持续更新中,欢迎订阅关注,共同学习,共同进步!

—————————————————————————————————————

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

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

相关文章

消息推送的三种常见方式:轮询、SSE、WebSocket

摘要:本文介绍消息推送的三种常见方式:轮询(定时请求,易增负担)与长轮询(阻塞请求至有数据 / 超时,减少请求)、SSE(HTTP 单向实时传输,纯文本、自动重连&…

论文阅读:ACL 2024 Stealthy Attack on Large Language Model based Recommendation

总目录 大模型相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 https://arxiv.org/pdf/2402.14836 https://www.doubao.com/chat/19815566713551106 文章目录速览攻击方法速览一、攻击核心目标与前提1. 核心目标2. 攻击前提二、模型无关的简单…

自动驾驶中的传感器技术43——Radar(4)

本文对目前毫米波雷达中的天线设计进行比较全面的罗列,并进行简单的设计评述 1、实际设计案例 图1 涵盖能宽窄覆盖的天线设计(无俯仰分辨率)图2 Bosch前雷达的天线设计(有俯仰的分辨率但比较弱,也涵盖了扩展覆盖&…

使用反转法线材质球,实现切换天空盒相同的功能,优点:包体变小

切换天空盒第一步先把SKY 天空球资源导入到工程里, 第二步:天空球文件下的SKY预制件拖入到场景里 第三步 选着SKY材质球,拖入自己的全景图片(图片分辨率不能超过5000*5000,否则手机无法显示) 如果并没有效果,看看图…

真正有效的数据指标体系应该长什么样?

真正有效的数据指标体系应该长什么样?为什么大多数企业的指标体系都是"花架子"?真正有效的指标体系应该长什么样?从数据到洞察:让指标真正"活"起来结语在这个人人都在谈数字化转型的时代,企业就像…

分布式专题——6 Redis缓存设计与性能优化

1 多级缓存架构2 缓存设计 2.1 缓存穿透 2.1.1 简介缓存穿透是什么?当查询一个根本不存在的数据时,缓存层和存储层都不会命中。正常逻辑下,存储层查不到数据就不会写入缓存层。这会导致:每次请求这个不存在的数据,都要…

一文了解大模型压缩与部署

一文了解大模型压缩与部署:从 INT4 量化到 MoE,让大模型跑在手机、边缘设备和云端🎯 为什么需要模型压缩与部署?你训练了一个强大的大模型(如 Qwen-72B、LLaMA-3-70B),但在部署时发现&#xff1…

新手向:中文语言识别的进化之路

自然语言处理(NLP)技术正在以前所未有的速度改变我们与机器的交互方式。根据Gartner最新报告显示,全球NLP市场规模预计在2025年将达到430亿美元,年复合增长率高达21%。而中文作为世界上使用人数最多的语言(全球约15亿使…

LeetCode100-206反转链表

本文基于各个大佬的文章上点关注下点赞,明天一定更灿烂!前言Python基础好像会了又好像没会,所有我直接开始刷leetcode一边抄样例代码一边学习吧。本系列文章用来记录学习中的思考,写给自己看的,也欢迎大家在评论区指导…

uniapp开源多商户小程序商城平台源码 支持二次开发+永久免费升级

在电商行业竞争日益激烈的今天,拥有一个功能强大、灵活可拓展的多商户小程序商城至关重要。今天给大家分享一款 uniapp 开源多商户小程序商城平台源码,它不仅具备丰富的基础功能,还支持二次开发,更能享受永久免费升级服务&#xf…

使用脚本一键更新NTP服务器地址为自定义地址

【使用场景】 在银河麒麟桌面操作系统V10SP1-2303版本中使用脚本一键修改NTP服务器地址为自定义地址。 【操作步骤】 步骤1. 编写shell脚本 ```bash desktop2303@desktop2303-pc:~$ vim setntptimeserver.sh #!/bin/bashfunction modifykylinconf() { # 检查是否已存在目标配置…

linux内核 - 内核架构概览

当 Linux 系统启动时,内核会在启动过程的早期阶段接管控制——紧跟在固件(BIOS 或 UEFI)和引导加载程序完成任务之后。此时,压缩的 Linux 内核镜像会被加载到内存中,通常会附带一个称为 initramfs 的最小临时根文件系统,它用于在切换到真实根文件系统并继续系统初始化之前…

[react] react-router-dom是啥?

页面路由,注意页面路由不是路由器,因为我之前总是把路由和路由器搞混。而且我总是把前端页面的路由和路由器的路由搞混。那么这里一定要明白,这里我所说的页面路由就是指在浏览器里面的导航路由。 npm create vitelatest my-react-app – --t…

HTTP简易客户端实现

🌐 HTTP简易客户端实现 流程图: 引用: chnroutes2.cpp#L474 chnroutes2_getiplist() chnroutes2.cpp#L443 http_easy_get(…) 🕒 1. 超时管理机制 (http_easy_timeout) 🔹 核心功能:创建定时器自动关…

建筑面LAS点云高度计算工具

效果 例如中位数,计算后,在shp建筑面中添加一个字段meidian_hei 准备数据 1、建筑矢量面.shp 2、点云.las 界面 脚本 import laspy import shapefile # pyshp库,处理POLYGONZ坐标格式异常 import pandas as pd import numpy as np import os import traceback # 打印…

java day18

继续学习,学习sringboot案例;熟悉的三件套;比如做一个表,前端搭建好框架,然后返回给后端一个请求,说要这个表的数据吧;然后通过请求和规定的格式返回给后端之后,我们后端进行接收处理…

并发编程原理与实战(二十八)深入无锁并发演进,AtomicInteger核心API详解与典型场景举例

无锁并发演进背景 随着系统高并发的压力越来越大,传统同步机制在高并发场景下的性能瓶颈和缺点可能会逐渐显露: (1)性能损耗:synchronized等锁机制会导致线程阻塞和上下文切换,在高并发场景下性能损耗显著。…

整体设计 之 绪 思维导图引擎 之 引 认知系统 之 引 认知系统 之 序 认知元架构 之5 : Class 的uml profile(豆包助手 之7)

摘要(AI生成)三层中间件架构的约束逻辑体系1. 架构定位与功能分工三个中间层(隔离层/隐藏层/防腐层)构成数据处理管道,分别承担:隔离层:跨系统数据转换处理对象:异构数据&#xff08…

iframe引入界面有el-date-picker日期框,点击出现闪退问题处理

前言:iframe引入界面有el-date-picker日期框,点击出现闪退问题处理。问题情况:点击开始日期的输入部分,会出现闪退情况,该组件是iframe调用的内容问题分析:事件冒泡,点击与聚焦的时候&#xff0…

docker 拉取本地镜像

要在Docker中拉取本地镜像,通常有以下几种实现方法: 使用docker pull命令:可以使用docker pull命令从本地镜像仓库拉取镜像。例如,如果本地镜像的名称是my-image,则可以运行以下命令拉取镜像: docker pull …