一键生成透明底图像!教你用开源 SD 插件实现素材自由!

AI 绘画自出现以来一直都在不断发展完善,实现了很多我们在实际应用中迫切需要的功能,比如生成正确的手指、指定的姿势、准确的文本内容等。上周,又一个重磅新功能在开源的 SD 生态内实现了——**直接通过文本直接生成透明底图像和图层!这将为 AI 绘画和设计领域带来了新的可能性,使图像形式更多样,也能给设计师带来更多便利。

今天我们就一起来了解实现这一新功能的技术 LayerDiffusion,以及如何在 SD WebUI Forge 和 ComfyUI 中利用 LayerDiffusion 生成透明底图片。

LayerDiffusion 简介

LayerDiffusion 是由 @ lllyasviel (没错就是那个开发出 Controlnet、Fooocus 和 SD WebUI Forge 的大神)最新推出的一种透明图像生成技术,它的核心所在是“潜在透明度”,即将 Alpha 通道整合到预训练模型的潜在结构中,使模型能够生成带有透明度的图。

官方给出的演示案例效果非常好,不仅可以生成一般物体,而且对于玻璃、发光这种透明/半透明的对象,以及头发丝这种精细的内容,生成的效果依旧完美。本文章封面图的卷发女生就是我直接用 LayerDiffusion 生成的,极大提升了出图效率,而且真正做到了“毫无抠图痕迹”,再也不用担心有白边了。

除了直接生成透明底图像,LayerDiffusion 还支持生成分层图像。包括根据一个透明底图像生成完美融合的背景,并将该背景提取为完整独立的图层;以及根据背景图像+提示词生成前景主体,并将该主体提取为透明底图层。

目前 SD WebUI Forge 和 ComfyUI 已经支持 LayerDiffusion 的透明底功能,并且在未来还将支持通过图像生成透明底图像,下面为大家介绍如何在这 2 款工具中实现对应的功能。

在 SD WebUI Forge 中使用 LayerDiffusion

由于是同一个作者开发的,所以 SD WebUI Forge 最先实现了对 LayerDiffusion 的支持,界面操作非常方便,生成速度也很快。具体操作如下:

① 安装 SD WebUI Forge

SD WebUI Forge 一键安装包: https://github.com/lllyasviel/stable-diffusion-webui-forge (点击文末阅读原文有云盘资源,但但是软件后期会更新,还是建议去原网址下载)

先下载 WebUI Forge 官方一键安装包,解压后安装到本地;然后进入根目录,点击 update.bat 更新程序**(必须点击)**,再点击 run.bat 启动 WebUI 界面。初次启动会下载很多配置文件,包括一个 1.99G 的 realisticVisionV51_v51VAE.safetensor 模型,所以时间会比较比较久,记得耐心等待,完成后会在浏览器中自动打开 UI 界面。

② 安装 LayerDiffusion 插件

Layerdiffusion 插件 Git 网址: https://github.com/layerdiffusion/sd-forge-layerdiffuse.git

安装方法与 SD WebUI 一样,即进入 Extensions 版块,选择从 git 网站安装,然后重启 WebUI。或者进入 WebUI Forge 根目录,在 webui\extensions 文件夹中通过 git clone 命令安装。安装成功后,就能在界面上看到 LayerDiffusion 的插件面板了

③ 安装模型

LayerDiffusion 处理模型: https://huggingface.co/LayerDiffusion/layerdiffusion-v1/tree/main (网盘有资源包)

LayerDiffusion 插件目前仅支持 SDXL 模型,官方推荐了 Juggernaut XL V6 和 anima_pencil-XL 1.0.0 这两款模型进行操作(附件网盘有资源包),下载后安装到根目录的 webui\models\Stable-diffusion 文件夹中。此外还需要下载 8 个 LayerDiffusion 处理模型,安装到根目录的 webui\models\layer_model 文件夹中。

WebUI Forge 的 LayerDiffusion 插件目前支持生成透明底图像、根据背景图像生成前景图像和根据透明底前景生成背景图像。下面分别介绍一下它们的操作方法:

① 直接生成透明底图像

首先启用 LayerDiffusion 插件,Method 选择 Only Generate Transparent Image (Attention Injection)。然后选择大模型、设置生成参数**(下方有参考数值)**。LayerDiffusion 会一次性生成 2 张图像,第一张是带棋盘背景的预览图,第二张则是透明背景的 PNG 图片,下载后可以直接做为素材使用。

  1. 大模型:juggernautXL_version6Rundiffusion;VAE:automatic

  2. 正向提示词:a red apple, high quality;

  3. 反向提示词:bad, ugly;

  4. 生成参数:Steps: 25, Sampler: DPM++ 2M SDE Karras, CFG scale: 5, Size: 1024x1024,

  5. layerdiffusion 插件:layerdiffusion_method: Only Generate Transparent Image (Attention Injection), layerdiffusion_weight: 1, layerdiffusion_ending_step: 1

② 根据背景图像生成透明底前景

首先在启用 LayerDiffusion 插件,并选择 From background to Blending 模式并上传一张背景图像,然后选择大模型、设置生成参数(下方有参考数值)。

  1. 大模型:JuggernautXL_version6Rundiffusion;VAE:automatic;Clip Skip: 1

  2. 正向提示词:a man sitting, high quality;

  3. 反向提示词:bad, ugly;

  4. 生成参数:Steps: 25, Sampler: DPM++ 2M SDE Karras, CFG scale: 7, Size:768x1024,

  5. layerdiffusion 插件:layerdiffusion_method: From background to Blending, layerdiffusion_weight: 1, layerdiffusion_ending_step: 1, layerdiffusion_resize_mode: Crop and Resize

图像生成后,先更改 LayerDiffusion 的模式为 From Background and Blending to Foreground,然后将右侧的图像直接拖入空白的 blending 图像区,并将采样器更改为 Euler A 或 UniPC (否则会出现一些颜色误差,这一点作者正在研究改进);再次点击生成,就能得到前景人物的透明底图像。

③ 根据前景生成背景

先使用 LayerDiffusion 生成一张透明底的物体,比如一个玻璃杯或者一只小猫,然后保存图像。将 LayerDiffusion 模式修改为 From Foreground to Blending,上传刚刚生成的透明底图像,然后加上提示词以及生成参数(下方有参考数值),点击生成。

  1. 大模型:JuggernautXL_version6Rundiffusion;VAE:automatic;Clip Skip: 1

  2. 正向提示词:a dog sitting on the grass, in a spring park, high quality;

  3. 反向提示词:bad, ugly;

  4. 生成参数:Steps: 25, Sampler: DPM++ 2M SDE Karras, CFG scale: 7, Size:896*1152,

  5. layerdiffusion 插件:layerdiffusion_method: From Foreground to Blending, layerdiffusion_weight: 1, layerdiffusion_ending_step: 1, layerdiffusion_resize_mode: Crop and Resize

然后将 LayerDiffusion 模式修改为 From Foreground and Blending to Background,将生成的图像拖入 Blending 区域,然后将 stop_at 参数调整为 0.5、采样器更改为 Euler A 或者 UniPC,并将提示词修改为 “a spring park,grass, high quality”,点击生成,就能得到一张完整的背景图像了。

在 ComfyUI 中使用 LayerDiffusion

① 安装插件

ComfyUI-layerdiffuse 插件 git 网址: https://github.com/huchenlei/ComfyUI-layerdiffuse.git

首先将 ComfyUI 更新到最新版本。然后安装 layerdiffuse 插件,可以用过 manager 安装,也可以进入根目录的 custom_nodes 文件夹中,通过 git clone 命令安装;安装成功后,进入 ComfyUI-layerdiffuse 根目录,打开终端命令,运行 pip install -r requirements.txt 命令,安装 python 依赖项。

② 安装模型

LayerDiffusion 处理模型: https://huggingface.co/LayerDiffusion/layerdiffusion-v1/tree/main (网盘有资源包)

ComfyUI-layerdiffuse 插件目前仅支持 SDXL 模型,选择大模型时需要注意;此外还需要下载 LayerDiffusion 处理模型,安装到根目录的 models\layer_model 文件夹中。

③ 加载工作流

插件官方提供了 7 种工作流,全部存放在 custom_nodes\ComfyUI-layerdiffuse\examples 文件夹中,可以实现生成透明底图像、通过背景图像生成透明底前景、通过透明底前景生成完整背景等操作;我也进一步整理了这些文件,打包资源在文末网盘内。启动 ComfyUI 界面后,可以用 workspace 插件一次性将整个工作流文件夹导入 ComfyUI 中。

④ 直接生成透明底图像

layer_diffusion_fg_example_rgba 和 layer_diffusion_fg_example 两个工作流都可以生成透明底图像,且第二个工作流可以额外生成一个 Alpha 通道蒙版。

⑤ 生成前景&生成背景

layer_diffusion_cond_example 工作流可以同时实现 “根据透明底前景生成背景” 和 “根据背景透明底前景” ,使用时注意在 Layer Diffuse Cond Apply 节点中对应地将 layer_type 调节成 foreground 或者 background。

⑥ 提取完整背景

在根据一个透明底图像生成背景后,可以通过 layer_diffusion_diff_bg 工作流提取一个完整的背景图层。主体在提示词中完整描述背景内容,采样器需要选择 Euler A 或者 Uni_pc。

⑦ 提取前景图层

在一个背景图中生成一个新的主体后,可以再通过 layer_diffusion_diff_fg 工作流将主体提取为透明底图层。注意修改提示词,采样器依旧选择 Euler A 或者 Uni_pc。

以上就是本期为大家介绍的 AI 绘画插件 layerdiffusion,安装后可以在 SD WebUI Forge 和 ComfyUI 中通过文本生成透明底图像及分层图像。文内提到的模型及工作流文件都在原文的云盘链接内,有需要的有需要的小伙伴可以记得点击文末阅读原文下载~

如果你还不了解 Stable Diffusion 的用法,可以看看我最新制作的《零基础 AI 绘画入门完全指南》(http://mp.weixin.qq.com/s__biz=MzA5NTU0NTU5Ng==&mid=2247535703&idx=1&sn=aabc1262c3a7a476906193ef7d6a34d3&chksm=90bfbdc4a7c834d2a03d179f93dce9adb3ad444bd448a999ecccb22fa825c756eae16f1c2fa9&scene=21#wechat_redirect),这是一门面向 AI 绘画零基础人群的系统课程,有全面细致的用法教学,并提供配套资源,能帮你快速掌握这款目前最热门的 AI 绘画工具~

写在最后

AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

感兴趣的小伙伴,赠送全套AIGC学习资料和安装工具,包含AI绘画、AI人工智能等前沿科技教程,模型插件,具体看下方。

一、AIGC所有方向的学习路线

AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

在这里插入图片描述

二、AIGC必备工具

工具都帮大家整理好了,安装就可直接上手!
在这里插入图片描述

三、最新AIGC学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述
在这里插入图片描述

四、AIGC视频教程合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

若有侵权,请联系删除
  • 14
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用OpenCV在Python中将图片背景变成白色并使其透明。代码如下: ```python import cv2 # 读取图片 img = cv2.imread("image.png") # 转换为灰度图 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 对图片进行二值化 _, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY) # 找到轮廓 contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 获取最大轮廓 cnt = max(contours, key=cv2.contourArea) # 创建遮罩 mask = np.zeros(img.shape[:2], np.uint8) # 在遮罩上绘制轮廓 cv2.drawContours(mask, [cnt], 0, (255, 255, 255), -1) # 应用遮罩 result = cv2.bitwise_and(img, img, mask=mask) # 将白色背景设置为透明 result[np.where((result == [255,255,255]).all(axis = 2))] = [255,255,255,0] # 保存图片 cv2.imwrite("transparent_image.png", result) ``` 请注意,上面代码假定您要将背景变成白色,并且将其设置为完全透明。如果您需要其他颜色或不透明度,则需要进行修改。 ### 回答2: 要使用Python代码实现OpenCV生成透明图,可以按照以下步骤进行: 1. 导入必要的库和模块: ```python import cv2 import numpy as np ``` 2. 创建一个空白的图像: ```python width, height = 500, 500 # 设置图像的宽度和高度 image = np.zeros((height, width, 4), dtype=np.uint8) # 创建一个宽高为500x500像素,4个通道的空白图像 ``` 3. 填充图像的每个像素为白色,并将透明通道设置为完全不透明: ```python image[:, :, 0:3] = 255 # 将图像的RGB通道设置为255,即白色 image[:, :, 3] = 255 # 将图像透明通道设置为完全不透明 ``` 4. 保存图像: ```python cv2.imwrite("transparent_image.png", image) # 将图像保存为透明图 ``` 这样,我们就成功使用Python代码实现OpenCV生成了一个白透明图。生成图像大小为500x500像素,拥有四个通道,RGB通道设置为白色(255, 255, 255),透明通道设置为完全不透明(255)。 ### 回答3: 要实现Python代码生成透明图,需要使用OpenCV库和Python的图像处理技巧。 1. 首先,导入必要的库: ```python import cv2 import numpy as np ``` 2. 创建一个白色图,大小为500x500像素,像素值为255(即白色): ```python width, height = 500, 500 image = np.ones((height, width, 3), np.uint8) * 255 ``` 3. 将图的通道设置为透明,即Alpha通道全为0: ```python image[:, :, 3] = 0 ``` 4. 显示和保存生成的白透明图: ```python cv2.imshow('Transparent Image', image) cv2.imwrite('transparent_image.png', image) cv2.waitKey(0) ``` 完整的代码如下: ```python import cv2 import numpy as np # 创建白透明图 width, height = 500, 500 image = np.ones((height, width, 3), np.uint8) * 255 image[:, :, 3] = 0 # 显示和保存透明图 cv2.imshow('Transparent Image', image) cv2.imwrite('transparent_image.png', image) cv2.waitKey(0) ``` 运行代码后,将会生成一个500x500像素的白色图,并且图是透明的。你可以通过显示窗口和保存为PNG格式的文件来查看生成的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值