超简单 Flux 换背景工作流:结合最新 ControlNet 深度 Depth 模型

news2024/11/28 10:54:53

在本篇文章中,我们将深入探讨如何使用 Flux ControlNet Depth 模型进行换背景。这种方法是我之前基于 Flux 模型换背景工作流的简化版。虽然旧的工作流程功能强大,但它非常复杂且运行缓慢。今天,我们将学习一个更快速、更易用的替代方案。

Flux ControlNet Depth 模型的新特性

这款由 Jasper AI 开发的全新 ControlNet 模型的最大优势是,它可以与现有的 SDXL ControlNet 节点和采样器兼容,无需专门的Flux ControlNet 节点。这大大简化了搭建过程,使其更容易集成到您的现有工作流中。

需要的小伙伴直接扫码可获取

关键优势:

  • 更简化的设置: 无需专门的Flux ControlNet 节点,直接兼容现有框架。

  • 提升运行速度: 优化后的节点结构显著减少了处理时间。

  • 更高的灵活性: 能够无缝处理不同类型的背景。

模型下载

在开始之前,请从 HuggingFace下载 Flux ControlNet Depth 模型。下载后,请按照以下步骤操作:

  1. 重命名 文件为 Flux.1-dev-Controlnet-Depth.safetensors

  2. 移动 文件到您的 ControlNet 模型文件夹:ComfyUI/models/controlnet

如果您在流程中看到某些节点缺失,只需安装它们即可确保所有功能正常运行。

工作流程概览

该新工作流程分为三个主要部分:

  1. 图像缩放和背景去除

  2. 深度图生成与新背景创建

  3. 将修改后的主体替换为原始主体

整个流程大约包含 30 个节点,运行速度比以往更快。例如,在一张 3090 GPU 上,它可以在大约 1 分钟内生成一张图像。使用 Hyper LoRA 的 8 步图像生成甚至可以进一步提高速度!

让我们先看看原始图像和使用此工作流更换了背景的图像:

工作流程下载

您可以在这里下载完整的工作流。在使用它之前,请确保已正确下载并配置 ControlNet Depth 模型。

接下来,让我们逐步讲解每个部分的详细操作。

第 1 部分:图像缩放和背景去除

步骤 1:调整图像尺寸

我上传的原始图像尺寸为 2995 x 3994 像素——对于我们想要生成的背景来说,这个尺寸太大了,可能会使 GPU 负载过重。因此,我们需要对图像进行缩放。

  1. 使用 ‘Upscale Image By’ 节点,并将缩放系数设置为 0.35,将图像尺寸缩小至 1048 x 1398 像素

步骤 2:使用 ‘Anything Everywhere’ 节点

  • 这个节点可以使图像输入的连接更加整洁,避免流程节点连接混乱。

  • 缩放后的图像被连接到 ‘Image Comparer’ 节点的 ‘image_b’ 端口。

步骤 3:去除背景

为了将主体从背景中分离出来:

  1. 使用 ‘Inspyrenet’ 节点去除原始背景。

  2. 根据图像调整 threshold 值。较高的阈值将移除更多的背景元素。

  3. 此节点还生成了一个 蒙版,我们将在之后的合成中使用它。

步骤 4:创建并应用灰色背景

  1. 使用 ‘Image Blank’ 节点创建一个灰色背景。
  • 红色、绿色和蓝色RGB 值 均设置为 128
  1. 使用 ‘Image Composite Masked’ 节点将蒙版化的主体合成到灰色背景上。

修复粗糙的边缘
  • 通常,在主体周围会出现白色边框或粗糙的边缘。为了修复这些问题:
  1. 使用 ‘Mask Grow Fast’ 节点。

  2. 设置 负的“grow”值 以去除白色边缘。

  3. 调整 “blur”值 以平滑边缘过渡。

到这里,第一个部分就完成了。主体已被干净地隔离,并放置在一个灰色背景上。接下来我们进入第二部分。

第 2 部分:深度图生成与背景创建

步骤 1:使用 Flux ControlNet Depth 模型

在这部分中,我们将从灰色背景图像生成深度图。深度图将指导 ControlNet 在创建新背景时保持主体的大致轮廓。

  1. 根据您的显存情况选择 fp8 版本GGUF 版本

  2. 编写一个与原始图像光照条件相匹配的 提示词

  • 例如,如果你的图像具有柔和的日落光照效果,请避免在提示词中使用强烈的正午光照描述。

步骤 2:生成深度图

  1. 对灰色背景图像应用 ‘AIO Aux’ 预处理节点。

  2. 使用生成的深度图引导 ControlNet 确定主体的大致轮廓。

提高背景清晰度的技巧

Flux 生成的背景可能略显模糊。如果您需要更清晰的效果,可以尝试使用 LoRA 模型 进行微调。更多细节请参考我之前的文章。

第 3 部分:主体替换

现在我们已经生成了新背景,我们需要将原始主体放回图像中。

步骤 1:移除修改后的主体

主要节点是 ‘Big Lama Remover’。它能够从生成的背景图像中移除修改后的主体,从而创建一个空白区域供我们粘贴原始主体。

  1. 再次使用 ‘Inspyrenet’ 节点生成移除所需的蒙版。
  • threshold 设低,确保主体被完全擦除。

步骤 2:粘贴原始主体

  1. 使用 ‘ImageCompositeMasked’ 节点将原始主体融合到新背景中。
  • 这将确保主体边缘与周围环境自然融合。

至此,背景替换已完成。效果看起来更加干净且更具专业性。

最终总结

这个工作流利用 Flux ControlNet Depth 模型提供了一个更快速、更简化的背景替换方案。与之前的方法相比,它结构更简单,但仍能生成令人满意的结果。我已经在开发一个功能更强大的升级版本——敬请期待更多更新!
这里为了帮助大家更好地掌握 ComfyUI,分享一套字节大佬整理的ComfyUI工作流集合,其包含了很多好玩有趣,但又有点复杂的工作流节点和json配置。

涵盖了 Stable Scascade、3D、LLM+SD、Portrait Master、SVD 等相关类别的工作流,共计15个类目38项工作流。这些都放在了下方卡片,需要的点击免费获取:

img

对于初学者来说,最佳的学习方法是以这些现成的工作流为模板,一步步地复刻并理解它们。

通过观察和分析别人的工作流,你可以学习到各种节点搭建的技巧和方法。随着理解的深入,你将能够根据自己的需求创新和搭建属于自己的工作流。

希望本文能帮助你有效地提升你的设计效率和创造力。

对于从来没有接触过AI绘画的同学,我已经帮你们准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

img

这份完整版的AI绘画资料和SD整合包已经打包好了,需要的点击下方插件,即可前往免费领取!

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

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

相关文章

变电站红外检测数据集 1180张 变电站红外 标注voc yolo 13类

变电站红外检测数据集 1180张 变电站红外 标注voc yolo 13类 变电站红外检测数据集 名称 变电站红外检测数据集 (Substation Infrared Detection Dataset) 规模 图像数量:1185张图像。类别:13种设备类型。标注个数:2813个标注。 数据划分…

【全球顶级域名后缀】

数据时间: 2024.10.6 广告: 五分钟申请SSL证书 (手机电脑都能用) ["aaa","aarp","abarth","abb","abbott","abbvie","abc","able","abogado","abudhabi","ac"…

一项研究表明,只需一滴干血,新的检测技术或许可以在几分钟内发现癌症

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

视频加字幕用什么软件最快?12款工具快速添加字幕!

对于大多数同学来讲,剪辑中比较头疼的就是如何给视频加字幕和唱词啦,特别是用Pr或者FCXP等专业剪辑软件,加字幕也是特别费时的,哪怕是有批量添加的功能orz... 虽然关于这方面的内容已经很多啦,但是真正全面的内容还特…

unity 2d 近战攻击判定的三种方式以及精确获取碰撞点

精确获取碰撞点 核心是获取武器碰撞盒最顶点&#xff0c;然后获取敌人碰撞盒距离该点最近的点 /// <summary>/// 获取获取武器前端位置 碰撞盒最左或最右顶点/// </summary>/// <param name"collider"></param>/// <param name"…

如何把数组作为参数传递给函数(注意,只是传递数组名)?

直接上代码吧&#xff1a; template<class T, size_t nSize> void printArray(T(&Array)[nSize]) {T* pt Array;for (size_t n 0; n < nSize; n) {cout << *(pt n) << "\t";}cout << "\n"; } int main() {int ia[] {…

6款不错的本地大模型运行工具推荐

运行大型语言模型 (LLM)&#xff08;如 ChatGPT 和 Claude&#xff09;通常涉及将数据发送到 OpenAI 和其他 AI 模型提供商管理的服务器。虽然这些服务是安全的&#xff0c;但一些企业更愿意将数据完全离线&#xff0c;以保护更大的隐私。 本文介绍了开发人员可以用来在本地运…

基于Vue.js + 大屏Datav + Spring Boot后端的养殖场环境设备实时监测控制系统

开发一个基于Vue.js 大屏Datav Spring Boot后端的养殖场环境设备实时监测控制系统是一个复杂而全面的任务。下面将详细介绍整个项目的架构设计、技术选型、开发实现和测试部署过程。 1. 需求分析 1.1 功能需求 环境参数监控&#xff1a;实时监控温度、湿度、光照强…

C/C++/EasyX——入门图形编程(5)

【说明】友友们好&#xff0c;今天来讲一下键盘消息函数。&#xff08;其实这个本来准备和鼠标消息函数放在一起的&#xff0c;但是上一篇三个放在一起&#xff0c;内容就有点多了&#xff0c;只写一个又太单调了&#xff0c;所以键盘消息函数的内容就放在这一篇了 (^&#xff…

大语言模型中文本分割策略的综合指南

整理 本文整理了一些简单的文本切分方式&#xff0c;适用于大语言模型经典应用RAG或相似场景。 一般切分 如果不借助任何包&#xff0c;很容易想到如下切分方案&#xff1a; text "我是一个名为 ChatGLM3-6B 的人工智能助手&#xff0c;是基于清华大学 KEG 实验室和智…

模型 SECI(知识的创造)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。知识创造的螺旋转化模型。 1 SECI的应用 1.1 Tech Innovations移动应用创新 Tech Innovations是一家软件开发公司&#xff0c;致力于开发创新的移动应用程序。为了提升团队的知识共享和创新能力&…

力扣6~10题

题6&#xff08;中等&#xff09;&#xff1a; 思路&#xff1a; 这个相较于前面只能是简单&#xff0c;个人认为&#xff0c;会print打印菱形都能搞这个&#xff0c;直接设置一个2阶数组就好了&#xff0c;只要注意位置变化就好了 python代码&#xff1a; def convert(self,…

感知机及其实践

说明 感知机是SVM(support vector machine,支持向量机)的基础&#xff0c;更是机器学习的基础。本文的目的在于把感知机的相关概念捋清楚&#xff0c;并基于感知机做最基本的线性可分的二分类实践。 有关机器学习的一些基础概念&#xff0c;读者可以参考本专栏的第一篇博文[4]&…

Oracle创建用户报错-ORA-65096: invalid common user or role name

问题描述 ORA-65096: invalid common user or role name 原因分析 这可能是创建角色的容器为cdb导致&#xff0c;当然如果想继续执行&#xff0c;可以在角色名前加C##或者c##&#xff0c;但是这样会导致用户名多了c##&#xff0c;我们不要这样的用户名 解决步骤 用sysdba 登录&…

SCUC博客摘录「 储能参与电能市场联合出清:SCUC和SCED模型应用于辅助服务调频市场(IEEE39节点系统)」2024年10月6日

2.1 SCUC模型在本方法中&#xff0c;首先利用SCUC模型确定机组出力计划和储能充放电计划。SCUC模型是电力系统经济调度的重要工具&#xff0c;通过优化发电机组出力计划和调度&#xff0c;实现电力系统的经济性和可靠性。在考虑储能的情况下&#xff0c;SCUC模型需要考虑储能的…

vue3常用组件通信方法

title: vue3常用组件通信方法 date: 2024-10-06 15:00:54 tags: vue3 组件通信 一、父传子—defineProps 1.父亲 通过属性传值 2.儿子 通过defineProps接收相关的数据 二、子传父 1&#xff09;使用defineExposeref 1.子组件 在子组件中使用defineExpose先暴露出来 2.父…

基础算法之滑动窗口--Java实现(上)--LeetCode题解:长度最小的子数组-无重复字符的子串-最大连续1的个数III-将x减到0的最小操作数

这里是Thembefue 今天讲解算法中较为经典的一个算法 > 滑动窗口 本讲解主要通过题目来讲解以理解算法 讲解分为三部分&#xff1a;题目解析 > 算法讲解 > 编写代码 滑动窗口 在正式进入题目的讲解之前&#xff0c;得先了解一下什么是滑动窗口&#xff0c;以及应该在什…

一篇文章教会你DHT11读取温湿度,附STM32代码示例

目录 一、DHT11说明&#xff1a; 1.典型电路&#xff1a; 2.串行通信说明&#xff08;单线双向&#xff09;&#xff1a; 单总线说明&#xff1a; 单总线传送数据位定义&#xff1a; 校验位数据定义&#xff1a; 二、DHT11读取时为啥要切换模式&#xff1a; 1. 通信时序…

基于深度学习的手势控制模型

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…

理解递归和回溯

文章目录 什么是递归回溯 什么是递归 回溯 //使用递归回溯来给小球找路//说明//1. map 表示地图//2. i,j 表示从地图的哪个位置开始出发 (1,1)//3. 如果小球能到 map[6][5] 位置&#xff0c;则说明通路找到.//4. 约定&#xff1a; 当map[i][j] 为 0 表示该点没有走过 当为 1 表…