AI抠图使用指南:Stable Diffusion WebUI Rembg实用技巧

 

抠图是图像处理工具的一项必备能力,可以用在重绘、重组、更换背景等场景。最近我一直在探索 Stable Diffusion WebUI 的各项能力,那么 SD WebUI 的抠图能力表现如何呢?这篇文章就给大家分享一下。

安装插件

作为一个生成式AI,SD本身并没有精细的抠图控制能力,它需要借助插件来实现。

这里我们使用 stable-diffusion-webui-rembg 这个插件,插件安装成功后,会出现在“高清化”这个页面的底部。

安装方法一

适合网络访问各种资源比较畅通的同学。

插件地址:GitHub - AUTOMATIC1111/stable-diffusion-webui-rembg: Removes backgrounds from pictures. Extension for webui.

直接在 Stable Diffusion WebUI 中通过网址安装,操作步骤如下图所示:

第5点指示插件已经安装成功,只需要在“已安装”页面中重启SD WebUI就可以了。

实际抠图时,插件还会根据选择的抠图算法自动下载相关的模型,第一次使用某个算法抠图时等待的时间会长一点。

安装方法二

适合访问外网不怎么方便的同学。

先通过别的工具,比如迅雷下载到本地,然后再部署到相应的目录。

插件地址:GitHub - AUTOMATIC1111/stable-diffusion-webui-rembg: Removes backgrounds from pictures. Extension for webui.

算法模型地址:GitHub - danielgatis/rembg: Rembg is a tool to remove images background

或者下载我已经打包好的文件,关注公众号:萤火遛AI,发消息:抠图,即可获取相关文件。

stable-diffusion-webui-rembg.zip 是插件程序,解压后放到 stable-diffusion-webui/extensions 目录。

u2net.zip 是算法模型文件,解压后放到当前用户的临时目录:

  • Windows是:C:\Users\{你登录的Windows用户名}\.u2net
  • Linux是:/root/.u2net/

如果部署在云服务器,需要先上传zip压缩文件,再解压到指定的目录。参考解压指令:

unzip -o /root/autodl-tmp/stable-diffusion-webui-rembg.zip -d /root/stable-diffusion-webui/extensions/stable-diffusion-webui-rembg/
unzip -o /root/autodl-tmp/u2net.zip -d /root/.u2net/

安装完毕之后,记得重启SD。

使用rembg

基本使用

点击“高清化”页签,上传要抠图的照片,“Remove background”这里选择抠图算法,最后点击“生成”。

看看默认的抠图效果:头发这里还有些底色没去掉,这部分和背景有些交错,算法不能很好的识别。

注意人像周围黑色的部分实际上都是透明的,我们把这张图片放到白色的背景中人像周围就是白色了。

我们把这个“Alpha matting”勾上,然后会出来几个选项,把“Erode size”的值改为“15”,它可以优化前景图边缘的分割。

重新生成,看看这次的结果,头发这块基本上看不出来之前的底色了,但是衣领这里有些模糊了。我尝试了不同的参数,也没能达到完美。或许把图片放到PS中再处理下是个正确的方法,以结果为导向,不能死抱着AI不放,有兴趣的可以试试。

参数介绍

上面做了一个基本的演示,但是这些参数我们如何配置才能发挥最好的效果呢?这一小节就来看看这些参数的定义。

先看看这几个算法模型:

  • u2net:通用的的预训练模型,通常用这个就行。
  • u2netp:u2net的轻量级版本。
  • u2net_human_seg:专门针对人像分割的预训练模型,只是分割人像时建议使用。
  • u2net_cloth_seg:专门从人像上抠衣服的预训练模型,它会把衣服分成三部分:上半身、下半身和全身。
  • silueta:和u2net相同,但是大小减少到43Mb,方便在小内存机器上使用。
  • isnet-general-use :一个新的通用的预训练模型。
  • isnet-anime:专门针对动画人物的高精度分割。

再看看它的两个选项:

  • Alpha matting:Alpha遮罩,这是一个比较专业的图像处理术语。在图像处理中,有一个东西用来表示图像中每个像素点的透明度,这个东西称为Alpha通道;然后Alpha遮罩利用Alpha通道来控制图像的透明度,从而达到隐藏或显示某些部分的目的;在抠图这里就是努力让前景部分都显示出来,让背景部分都变透明。这个选项有三个参数,用来控制抠图的效果,我们看下:
    • Erode size:Alpha抠图腐蚀尺寸,通过在图像中构建一个长宽为这个值的矩形进行腐蚀。太小了前景和背景分离不彻底,边缘有交叉;太大了前景和背景会腐蚀的太多,边缘缺损明显。
    • Foreground threshold:前景图像的阈值,值过小背景可能被识别为前景,值过大前景可能被识别为背景。
    • Background threshold:背景图像的阈值,值小了前景可能被识别为背景,值大了背景可能识别为前景。

使用Alpha遮罩时可以初始用这几个经验值:(15, 220, 100),具体参数值再根据实际情况进行调整。

  • Return mask:返回抠图的蒙版图,下面马上就会介绍它的用法和用途。

使用蒙版

这一小节以更换图片背景为例,演示蒙版的用法。具体想法是生成一张马斯克登陆火星遭遇外星人的照片。

生成蒙版

只要在生成时勾选上“Return mask”,最终输出图片就会变成蒙版图。

如下图所示,可以看到人物变成了白色的蒙版,我们把这个蒙版图片先保存到本机,后面马上要用。

更换背景

在“图生图”中打开“局部绘制(上传蒙版)”。这里需要上传两张照片,一张原图,一张人物的蒙版图。

图生图的具体参数如下:

提示词:(the desert), ((night)), dim sun, (stargate), a man in a suit and white shirt smiling for a picture, a alien standing in the distance, digital painting, stargatejackal,surrealistic, hdri, smooth, sharp focus, illustration, fantasy, intricate, elegant, highly detailed, 8k <lora:sgasgard_v1:1>

反向提示词:EasyNegative, moon

缩放模式:填充,因为我想调整下图片的宽高比到 16:9,原图没这么宽,所以需要填充新扩展的空间。

蒙版模式:绘制非蒙版内容,在“局部绘制(上传蒙版)”中白色的区域是蒙版,因为我们要重绘背景,所以这里选择的是“绘制非蒙版内容”。

采样器:DPM++ 2M SDE Karras,这是最近新加的一个采样器,建议体验下。当然也可以用别的采样器。

采样步数:配合采样器设置。

宽度、高度:根据 16:9的比例设置。

看看出图的效果:


以上就是本文的主要内容了,感兴趣的同学赶紧去试试吧。

如果你刚开始学习AI绘画,建议先看这两篇 Stable Diffusion WebUI 安装指南:

手把手教你在本机安装Stable Diffusion秋叶整合包

手把手教你在云环境炼丹(部署Stable Diffusion WebUI)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文学透设计模式——抽象工厂模式

创建者模式 抽象工厂模式 概念 抽象工厂模式是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 这是很多地方对于抽象工厂模式的描述&#xff0c;说实话感觉不是特别好懂。…

架构训练营学习笔记:5-2 负载均衡架构

多级负载架构 设计关键点 性能需求、维护复杂度之间做取舍。 一可以去掉F5、LVS &#xff1a; F5 是成本较高&#xff0c;LVS 是复杂&#xff0c;对于性能没那么高需求&#xff0c;可以去掉。 二 去掉ng: 服务网关服务 适应于初创公司快速验证&#xff0c;内部的 小系统…

Typescript+React入门

初识Typescript 出现背景 Typescript&#xff08;以下简称TS&#xff09;实际上就是JavaScriptType&#xff0c;用数据类型的方式来约束了JS的变量定义 在JS的基础上增加了类型支持 在JS中大多数错误都是因为数据类型造成的&#xff0c;所以TS为了规避这个问题加入了类型限制…

C语言案例 按序输出三个整数-02

题目&#xff1a;输入三个整数a,b,c,按从小到大的顺序输出 步骤一&#xff1a;定义程序的目标 编写一个C程序&#xff0c;随机输入三个整数&#xff0c;按照从小到大的顺序输出。 步骤二&#xff1a;程序设计 整个程序由三个模块组成&#xff0c;第一个为scanf输入函数模块&a…

OA会议管理系统之会议通知(送审成功可查看人员是否参与会议)

一、前言 1.导读 在上一次的博文中我们实现了会议审批&#xff0c;会议通过审批后&#xff0c;状态就会由原来的待审核变为待开&#xff0c;这时候我们就可以在我的会议下的反馈详情查看人员是否参与会议的反馈情况。这篇博客就是来了解&#xff0c;人员是怎么接收会议通知并反…

MyBatis 查询数据库之二(增、删、改、查操作)

目录 1. 配置打印 MyBatis 执行的SQL 2. 查询操作 2.1 通过用户 ID 查询用户信息、查询所有用户信息 (1) Mapper 接口 (2)UserMapper.xml 查询所有用户的具体实现 SQL (3)进行单元测试 3. 增加操作 3.1 在 mapper&#xff08;interface&#xff09;里面添加增加方法的声…

unity如何手动更改脚本执行顺序

在Unity中&#xff0c;脚本的执行顺序是由脚本的执行顺序属性决定的。默认情况下&#xff0c;Unity根据脚本在项目中的加载顺序来确定它们的执行顺序。然而&#xff0c;你可以手动更改脚本的执行顺序&#xff0c;以下是一种方法&#xff1a; 在Unity编辑器中&#xff0c;选择你…

剑指Offer05.替换空格

剑指Offer05.替换空格 目录 剑指Offer05.替换空格题目描述解法一&#xff1a;遍历添加解法二&#xff1a;原地修改 题目描述 请实现一个函数&#xff0c;把字符串s中的每个空格都替换成“%20”。 解法一&#xff1a;遍历添加 由于每次替换都要把一个空格字符变成三个字符&a…

【LeetCode】516. 最长回文子序列

文章目录 1. 思路讲解1.1 创建dp表1.2 状态转移方程1.3 不需考虑边界问题 2. 整体代码 1. 思路讲解 1.1 创建dp表 此题采用动态规划的方法&#xff0c;创建一个二维dp表&#xff0c;dp[i][j]表示s[i, j]中最大回文子序列的长度。且我们人为规定 i 是一定小于等于 j 的。 1.2…

OpenAI 已为 GPT-5 申请商标,GPT-4 发布不到半年,GPT-5 就要来了吗?

据美国专利商标局&#xff08;USPTO&#xff09;信息显示&#xff0c;OpenAI已经在7月18日申请注册了“GPT-5”商标。 在这份新商标申请中&#xff0c;OpenAI将“GPT-5”描述为一种“用于使用语言模型的可下载计算机软件”。 继GPT-4发布之后&#xff0c;它预计将成为OpenAI下一…

vue响应数据为二维码如何渲染到页面

在postman测试请求后发现响应数据为一个二维码图片,不是链接,如何解决? 然后如果在vue中使用请求还会报Uncaught (in promise) SyntaxError: Unexpected token o in JSON at position 1的错误。这个就是使用了JSON.parse导致的响应格式不对)&#xff0c;使用JSON.stringify解决…

骑砍二 ATC MOD 使用教程与应用案例解析

骑砍二 ATC MOD 使用教程与应用案例解析 作者&#xff1a;blibli-财不外漏 / NEXUSMODS-PuepleKarmen 案例MOD依赖&#xff1a;ATC - Adonnay’s Troop Changer & AEW - Adonnay’s Exotic Weaponry & New Armor 文本编辑工具&#xff1a;VS Code&#xff08;推荐使用&…

Typescript - 索引签名

目录 1&#xff0c;什么是索引签名1&#xff0c;js 中使用对象的属性2&#xff0c;ts 中的索引签名3&#xff0c;扩展索引签名定义的类型 2&#xff0c;与 Record 对比3&#xff0c;遇到的问题1&#xff0c;索引 key 的类型问题&#xff0c;keyof2&#xff0c;索引 key 的类型问…

Zebec APP:构建全面、广泛的流支付应用体系

目前&#xff0c;流支付协议 Zebec Protocol 基本明确了生态的整体轮廓&#xff0c;它包括由其社区推动的模块化 Layer3 构架的公链 Nautilus Chain、流支付应用 Zebec APP 以及 流支付薪酬工具 Zebec payroll 。其中&#xff0c;Zebec APP 是原有 Zebec Protocol 的主要部分&a…

无向图-已知根节点求高度

深搜板子题&#xff0c;无向图&#xff0c;加边加两个&#xff0c;dfs输入两个参数变量&#xff0c;一个是当前深搜节点&#xff0c;另一个是父节点&#xff08;避免重复搜索父节点&#xff09;&#xff0c;恢复现场 ///首先完成数组模拟邻接表#include<iostream> #incl…

re学习(27)攻防世界toddler_regs(字符串函数总结+交叉引用)

找不到main&#xff08;&#xff09;函数&#xff0c;查找字符串&#xff0c;发现特殊字符串 定位字符串出现的位置&#xff0c;反汇编出代码&#xff0c;进行分析“ flag{Xp0int_1s_n1c3_but_Xp0intJNU_is_we1rd} 总结 一.CP&#xff1a;shiftF12 展示所有的字符串; ctrlx查…

python高阶技巧

目录 设计模式 单例模式 具体用法 工厂模式 优点 闭包 案例 修改闭包外部变量 闭包优缺点 装饰器 装饰器原理 装饰器写法 递归 递归的调用过程 递归的优缺点 用递归计算阶乘 设计模式 含义&#xff1a;设计模式是一种编程套路&#xff0c;通过这种编程套路可…

Linux-centos花生壳实现内网穿透

Linux-centos花生壳实现内网穿透 官网教程 1.安装花生壳 下载网址 点击复制就可以复制下载命令了 wget "https://dl.oray.com/hsk/linux/phddns_5.2.0_amd64.rpm" -O phddns_5.2.0_amd64.rpm# 下载完成之后会多一个rpm文件 [rootlocalhost HuaSheng]# ls phddns_…

Java8 list多属性去重

大家好&#xff0c;我是三叔&#xff0c;很高兴这期又和大家见面了&#xff0c;一个奋斗在互联网的打工人。 在 Java 开发中&#xff0c;我们经常会面临对 List 中的对象属性去重的需求。然而&#xff0c;当需要根据多个属性来进行去重时&#xff0c;情况会稍微复杂一些。本篇…

nodejs+vue鲜花商城销售系统 uniapp网上花店 多商家 微信小程序67m8n

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括鲜花销售微信小程序的网络应用&#xff0c;在外国各式各样的小程序已经是很普遍的方式&#xff0c;不过国内可能还处于起步阶段。鲜花销售微信小程序具有鲜花销售信息管理功能…