Stable Diffusion - 扩展 SegmentAnything 和 GroundingDINO 实例分割算法 插件的配置与使用

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://blog.csdn.net/caroline_wendy/article/details/131918652

Paper and GitHub:

  • Segment Anything: SAM - Segment Anything
    • GitHub: https://github.com/facebookresearch/segment-anything
  • Grounding DINO: Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection
    • 定位 DINO: 结合DINO与基于语言的预训练用于开放集合的目标检测
    • GitHub: https://github.com/IDEA-Research/GroundingDINO

Segment Anything:

Segment Anything 是关于图像分割领域的研究,提出了一个新的任务、模型和数据集,能够根据输入的提示(如点或框)生成高质量的物体掩码,或者对于整张图像进行分割。这个模型被称为 Segment Anything Model (SAM),使用了一个高效的模型结构,结合卷积神经网络和 Transformer 架构。SAM在一个由 11M 张图像和 1.1B 个掩码组成的大规模数据集上进行了训练,这个数据集被称为 SA-1B。SAM 具有强大的零样本迁移能力,能够适应不同的图像分布和任务。在多个分割任务上评估 SAM 的性能,发现零样本表现令人印象深刻,甚至超过了之前的全监督结果。

SAM的主要贡献:

  • 提出了一个新的图像分割任务,即 Segment Anything (SA),要求模型根据输入的提示(如点或框)生成物体掩膜,或者对整张图像进行分割。
  • 设计并实现一个高效且强大的图像分割模型,即 Segment Anything Model (SAM),使用基于 ResNet-50 的卷积神经网络作为编码器,和基于 ViT-B/16 的 Transformer 作为解码器。
  • 利用 SAM 在一个数据收集循环中,构建目前最大的图像分割数据集(远远超过之前的数据集),即 SA-1B,包含了 11M 张经过许可和隐私保护的图像,以及 1.1B 个物体掩码。
  • 评估 SAM 在多个分割任务上的零样本迁移能力,包括 COCO、ADE20K、Cityscapes、Mapillary Vistas、Open Images V6等,发现在所有任务上都取得了优异的结果,甚至超过了之前的全监督方法。

SAM

Grounding DINO:

Grounding DINO 是开放集合的目标检测器,通过结合基于 Transformer 的检测器 DINO 和基于语言的预训练模型,可以检测出任意人工输入的类别名字或者相关表达的目标。

开放集合的目标检测是指在没有给定类别标签的情况下,根据人类的语言输入,识别出图像中的目标,并且给出其位置和类别信息。这是一个具有挑战性和实用性的任务,可以应用于多种场景,比如搜索引擎、智能助理、无人驾驶等。然而,现有的目标检测器通常是基于有限的类别集合进行训练和测试的,也就是说,只能检测出预先定义好的类别,而不能处理新颖或未知的类别。为了解决这个问题,Grounding DINO 有效融合语言和视觉模态,使得检测器可以根据语言输入来扩展其概念范围,并且可以处理多种形式的语言输入,比如类别名字、属性描述、指代表达等。

具体来说,Grounding DINO 采用 DINO 作为基础的目标检测器,DINO 是一种基于Transformer的端到端的目标检测器,不需要锚框或者预定义的特征金字塔,而是使用可学习的查询向量来表示目标,并且使用自注意力机制来捕捉图像中的全局上下文信息。为了使 DINO 能够处理开放集目标检测任务,Grounding DINO 提出 3 个关键的改进点:

  • 特征增强器(Feature Enhancer):这是一个基于 Transformer 的编码器,将图像特征和语言特征进行融合,并且输出一个增强后的图像特征表示。这样可以使得图像特征包含更多与语言输入相关的信息,从而提高检测器对新颖或未知类别的泛化能力。
  • 语言引导查询选择(Language-Guided Query Selection):这是一个基于 Transformer 的解码器,将增强后的图像特征和语言特征作为输入,并且输出一个查询向量集合。这个查询向量集合可以根据语言输入来动态地调整其数量和内容,从而更好地匹配图像中与语言输入相关的目标。
  • 跨模态解码器(Cross-Modality Decoder):这是一个基于 Transformer 的解码器,将查询向量集合和增强后的图像特征作为输入,并输出最终的检测结果。这个解码器可以利用自注意力机制来进行跨模态融合,并且可以使用多头注意力机制来进行多尺度特征融合。

除了以上 3 个改进点之外,Grounding DINO 还使用了一种基于语言的预训练方法,叫做 Grounded Pre-Training(GPT),可以在大规模无标注数据上对模型进行预训练,从而提高模型对语言和视觉模态之间关系的理解能力。GPT 主要包括 2 个阶段:

  • 自监督预训练(Self-Supervised Pre-Training):这个阶段使用了一种基于对比学习的方法,叫做 MOCO,可以在无标注的图像上学习图像特征的表示。同时,这个阶段还使用了一种基于掩码语言模型的方法,叫做 BERT,可以在无标注的文本上学习语言特征的表示。这两种方法分别对应于图像编码器和语言编码器,可以分别提取图像和语言的低层特征,并且可以通过一个对齐损失函数来进行联合优化,从而使得图像和语言的特征在同一个空间中对齐。
  • 监督预训练(Supervised Pre-Training):这个阶段使用了一种基于多任务学习的方法,可以在有标注的数据上对模型进行微调,从而提高模型对语言和视觉模态之间关系的理解能力。这个阶段主要包括 3 个任务:
    • 目标检测(Object Detection):这个任务使用 COCO 数据集,是一个常用的目标检测数据集,包含了 80 个类别和超过 20 万张图像。这个任务可以使模型学习如何根据类别名字来检测出图像中的目标,并给出其位置和类别信息。
    • 属性检测(Attribute Detection):这个任务使用 LVIS 数据集,是一个新颖的目标检测数据集,包含了 1200 个类别和超过 100 万张图像。这个任务可以使模型学习如何根据属性描述来检测出图像中的目标,并给出其位置和属性信息。
    • 指代表达理解(Referring Expression Comprehension):这个任务使用 RefCOCO/+/g 数据集,是一个常用的指代表达理解数据集,包含了超过 14 万个指代表达和超过 5 万张图像。这个任务可以使模型学习如何根据指代表达来检测出图像中的目标,并且给出其位置和指代信息。

通过以上 2 个阶段的预训练,模型可以在不同的语言输入形式下,对不同的目标类别进行有效的检测。

Grounding DINO

SD的启动命令:

nohup python -u launch.py --listen --port 9301 --xformers --no-half-vae --enable-insecure-extension-access --theme dark --gradio-queue > nohup.62.out &

参数 --xformers 有效降低显存占用,提升出图速度。

示例图像,提示词来源于真实图像的导出:

1girl,bag,black hair,earrings,full body,glasses,handbag,jewelry,lipstick,looking at viewer,makeup,pantyhose,pencil skirt,polka dot,polka dot dress,sheer legwear,skirt,smile,solo,standing,sunglasses,wall,
a woman in a pink dress leaning against a wall with a white purse and a handbag on her hip,Carol Bove,feminine,a cubist painting,op art,
best quality,masterpiece,ultra high res,(photorealistic:1.4),
Negative prompt: (badhandv4:1.2),(ng_deepnegative_v1_75t, bad_prompt_version2-neg, EasyNegative:0.9),
(worst quality, low quality:1.3),(depth of field, blurry:1.2),(greyscale, monochrome:1.1),croped,lowres,text,jpeg artifacts,(logo,signature,watermark,username,artist name,title:1.3),
Steps: 30, Sampler: DPM++ 2M SDE Karras, CFG scale: 7, Seed: 3576157745, Size: 768x1024, Model hash: e4a30e4607, Model: 麦橘写实_MajicMIX_Realistic_v6, Denoising strength: 0.3, Clip skip: 2, ADetailer model: face_yolov8n.pt, ADetailer prompt: "detailed face, close-up, portrait,", ADetailer confidence: 0.3, ADetailer dilate/erode: 4, ADetailer mask blur: 4, ADetailer denoising strength: 0.4, ADetailer inpaint only masked: True, ADetailer inpaint padding: 32, ADetailer model 2nd: hand_yolov8s.pt, ADetailer prompt 2nd: "detailed hand, perfect hand,", ADetailer confidence 2nd: 0.3, ADetailer dilate/erode 2nd: 4, ADetailer mask blur 2nd: 4, ADetailer denoising strength 2nd: 0.4, ADetailer inpaint only masked 2nd: True, ADetailer inpaint padding 2nd: 32, ADetailer version: 23.7.6, Hires upscale: 2, Hires steps: 10, Hires upscaler: 8x_NMKD-Superscale_150000_G, Version: v1.4.0
Used embeddings: badhandv4 [dba1], ng_deepnegative_v1_75t [1a3e], bad_prompt_version2-neg [afea], EasyNegative [119b]

图像:

Img

SAM 插件:segment-anything

GroundingDINO的Huggingface工程:Huggingface - GroundingDINO

1. SAM 模型

安装插件,搜索segment anything,下载 SAM 模型,即:

cd stable_diffusion_webui_docker/extensions/sd-webui-segment-anything/models/sam

bypy downfile /stable_diffusion/extensions/segment_anything/sam_vit_h_4b8939.pth sam_vit_h_4b8939.pth

启用 Segment Anything (分离图像元素) 脚本,点击 人物的裙子,出现黑点,即:

Select

再点击 预览分割结果,即出现全部的分割项,物体从小到大,预览有些形变,真实图像正常,即:

Segment

即将所需的裙子部分全部分割出来。

2. GroundingDINO 模型

进入 segment anything 的配置页面,启用本地 Groudingdino 功能,这样就可以直接使用 Huggingface 的工程:

Config

下载 HuggingfaceGroundingDINO 组件:

cd stable_diffusion_webui_docker/extensions/sd-webui-segment-anything/models/

bypy downdir /huggingface/GroundingDINO grounding-dino

在使用时,还需下载 bert-base-uncasedtokenizer.json,大约 440 M。

启用 GroundingDINO

  • 选择所使用的模型,主要用于目标检测。
  • 选择提示词,用于标识所要分割物体。

即:

GroundingDINO

即 GroundingDINO 通过提示词,进行目标检测,再结合 Segment Anything 的实例分割,可以取得更好的性能。

Bug: 遇到 [Errno 39] Directory not empty: '/stable_diffusion_webui_docker/venv/lib/python3.8/site-packages/~IL'

关闭 SD 服务,删除 ~IL 文件夹,再重新启动,即可。

3. 局部重绘

保持之前的图像与 Mask,原图与模版的效果如下:

Img

使用 图生图上传重绘模版 功能,上传原图与Mask,设置如下:

  • 缩放模式仅调整大小
  • 蒙版模式重绘蒙版内容
  • 蒙版区域内容处理填充(fill)
  • 重绘区域整张图片 ,边缘更加和谐
  • 同时开启 ControlNet软边缘(SoftEdge) 模式,强化纹理效果。

即:

Configs

提示词:

yellow pencil skirt,polka dot dress,skirt,

yellow pencil skirt,polka dot dress,skirt,
best quality,masterpiece,ultra high res,(photorealistic:1.4),

负向提示词:

(ng_deepnegative_v1_75t, bad_prompt_version2-neg, EasyNegative:0.9),
(worst quality, low quality:1.3),(depth of field, blurry:1.2),(greyscale, monochrome:1.1),lowres,jpeg artifacts,

增加 局部重绘 (Inpaint) 功能,同时,控制模式 选择 更偏向提示词

裙子颜色的依次效果如下:

Dress

袜子提示词,修改颜色属性,注意不同随机种子差别较大:

(black color wrap hip pantyhose:1.3),thights,stockings,high heels,
best quality,masterpiece,ultra high res,(photorealistic:1.4),

采样模式:DDIM,随机种子:3474825489,ControlNet控制模型:更偏向提示词,提升重绘幅度至:0.8

颜色:image、black、pink、blue、yellow,袜子颜色的依次效果如下:

pantyhose

具体信息:

(black color wrap hip pantyhose:1.3),thights,stockings,high heels,
best quality,masterpiece,ultra high res,(photorealistic:1.4),
Negative prompt: (ng_deepnegative_v1_75t, bad_prompt_version2-neg, EasyNegative:0.9),
(worst quality, low quality:1.3),(depth of field, blurry:1.2),(greyscale, monochrome:1.1),lowres,jpeg artifacts,
Steps: 20, Sampler: DDIM, CFG scale: 7, Seed: 3474825489, Size: 1536x2048, Model hash: e4a30e4607, Model: 麦橘写实_MajicMIX_Realistic_v6, Denoising strength: 0.8, Clip skip: 2, Mask blur: 4, ControlNet 0: “preprocessor: none, model: control_v11p_sd15_softedge [a8575a2a], weight: 1, starting/ending: (0, 1), resize mode: Just Resize, pixel perfect: True, control mode: My prompt is more important, preprocessor params: (512, -1, -1)”, Version: v1.4.0

即通过 Segment Anything + Grounding DINO + ControlNet + Inpaint 实现局部重绘。

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

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

相关文章

蓝桥杯专题-真题版含答案-【牌型种数】【煤球数目】【寒假作业】【奖券数目】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

MySQL 数据库约束

目录 一、数据库约束 1、约束类型 二、NULL 约束 三、unique 约束 四、default 约束 五、primary key 约束 自增主键 六、foreign key 外键约束 七、check 约束 一、数据库约束 我们使用数据库来存储数据,一般是希望这里存储的数据是靠谱的,…

There has been an error.Error running C:\WINDOWS\System32\icacls

目前网上有两种有效的解决方案: windows用户名含中文的创建一个新用户,链接 安装其他版本的PostgreSQL(可优先考虑,我使用该方法解决的问题),链接

java项目之人才公寓管理系统(ssm+mysql+jsp)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的人才公寓管理系统。技术交流和部署相关看文章末尾! 开发环境: 后端: 开发语言:Java 框架&…

【产品实习评审】对于高校跑腿的任务模型和价格模型设计比较到位

大家好,本篇文章分享【校招VIP】商业在线实习项目“跑个腿”第一期需求发布模块产品同学的脑图周最佳作品,该同学来自江苏师范大学社会学专业。 本项目亮点: 1 跑腿需求发布模块—构建项目数据模型,包括时效、常用地址和联系 2…

卤味行业数据分析报告

在一个炎热的夏日午后,热气蒸腾的城市街头弥漫着一股令人垂涎欲滴的香气。这股香气源自一家招牌醒目的卤味小吃摊位,摊主技巧娴熟地将各式美味的食材浸泡在独特的卤汁中。这里没有花哨的招牌,却吸引了无数食客的目光和嘴巴。 卤制食品在中国烹…

Rust vs Go:常用语法对比(四)

题图来自 Go vs. Rust performance comparison: The basics 61. Get current date 获取当前时间 package mainimport ( "fmt" "time")func main() { d : time.Now() fmt.Println("Now is", d) // The Playground has a special sandbox, so you …

上手 SpringBoot

简介 SpringBoot设计的目的是简化 Spring应用的初始搭建以及 开发过程。 SpringBoot概述 parent 继承父pom文件,方便管理依赖的版本。此处涉及maven的使用 作用: 继承parent的形式可以采用引入依赖的形式实现效果 starter(原理是依赖传递) 包含了若…

Mac电脑文件夹无权限问题

sudo cp 16.5.zip /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport 走到之前的folder ,右键选择get info更改權限, 再應用到所有子文件夹 右下解鎖再加自己Read & Write, -右邊拉下應該可以應用到所有子文件 这样就可以…

【N32L40X】学习笔记10-外部触发方式计数

定时器采用外部触发方式计数 也就是外部时钟源模式2 此模式由 TIMx_SMCTRL .EXCEN 选择等于 1。计数器可以在外部触发输入 ETR 的每个上升沿或下降沿 计数。 极性选择分频选择过滤选择选择外部时钟ETR模式 bsp_time_counter_ETR.h #ifndef _BSP_TIME_COUNTER_ETR_H_ #defi…

nfs服务器的描述,搭建和使用

前言 这是我在这个网站整理的笔记,关注我,接下来还会持续更新。 作者:RodmaChen nfs服务器的描述,搭建和使用 NFS概述工作原理优缺点 nfs服务器搭建服务端客户端 NFS概述 NFS(Network File System)是一种基…

Bug管理规范

目录 1.目的 2.角色和职责 3.缺陷等级定义 4.缺陷提交原则 5.缺陷流转流程 5.1创建缺陷 5.2缺陷分拣/分配 5.3研发认领缺陷 5.4.研发解决缺陷 5.5关闭缺陷 5.6缺陷激活 1.目的 项目过程中对缺陷管理的规则,明确提单规范、用例优先级的选择规则、走单流程、…

软件工程学术顶会——ICSE 2023 议题(网络安全方向)清单与摘要

按语:IEEE/ACM ICSE全称International Conference on Software Engineering,是软件工程领域公认的旗舰学术会议,中国计算机学会推荐的A类国际学术会议,Core Conference Ranking A*类会议,H5指数74,Impact s…

【NLP】如何使用Hugging-Face-Pipelines?

一、说明 随着最近开发的库,执行深度学习分析变得更加容易。其中一个库是拥抱脸。Hugging Face 是一个平台,可为 NLP 任务(如文本分类、情感分析等)提供预先训练的语言模型。 本博客将引导您了解如何使用拥抱面部管道执行 NLP 任务…

华为eNSP:isis的配置

一、拓扑图 二、路由器的配置 配置接口IP AR1&#xff1a; <Huawei>system-view [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 1.1.1.1 24 [Huawei-GigabitEthernet0/0/0]qu AR2: <Huawei>system-view [Huawei]int g0/0/0 [Huawei-GigabitEthe…

测等保2.0——安全区域边界

一、前言 今天我们来说说安全区域边界&#xff0c;顾名思义&#xff0c;安全区域边界就是保障网络边界处&#xff0c;包括网络对外界的边界和内部划分不同区域的交界处&#xff0c;我们的重点就是查看这些边界处是否部署必要的安全设备&#xff0c;包括防火墙、网闸、网关等安…

Linux新手小程序——进度条

前言 目录 前言 需要先了解 1.\r和\n 2.缓冲区 一.理解字符的含义&#xff1a; 学习c语言时&#xff0c;我们可以粗略把字符分为可显字符和控制字符. 在按回车换到下一行开始的操作时&#xff0c;实际上是进行了两个操作&#xff1a;1.让光标跳到下一行&#xff08;只…

Android 之 动画合集之帧动画

本节引言&#xff1a; 从本节开始我们来探究Android中的动画&#xff0c;毕竟在APP中添加上一些动画&#xff0c;会让我们的应用变得 很炫&#xff0c;比如最简单的关开Activity&#xff0c;当然自定义控件动画肯定必不可少啦~而Android中的动画 分为三大类&#xff0c;逐帧动画…

mac电脑强大的解压缩软件BetterZip 5.3.4 for Mac中文版及betterzip怎么压缩

BetterZip 5.3.4 for Mac 是Mac系统平台上一款功能强大的文件解压缩软件&#xff0c;不必解压就能快速地检查压缩文档。它能执行文件之间的合并并提供密码。使用它&#xff0c;用户可以更快捷的向压缩文件中添加和删除文件。它支持包括zip、gz、bz、bz2、tar、tgz、tbz、rar、7…