目录
- 总体介绍
- 总体流程
- 模块介绍
- 目标检测: grounding dino
- 目标分割:Segment Anything Model (SAM)
- 整体思路
- 模型结构:
- 数据引擎
- 图片绘制
- 集成
- 样例
- 其他问题
- 附录
总体介绍
总体流程
本方案用到了三个步骤,按顺序依次为:
- 基于语义的目标检测(使用grounding dino)
- 在检测到的范围内进行目标分割生成mask(使用segment anything)
- 图片绘制(使用stable diffusion)
模块介绍
目标检测: grounding dino
总体架构图
从图中可以看出,本算法本质上是对图像和文本进行多模态融合,将二者映射到同一个向量空间并使用attention的思路进行匹配从而得到文本对应的图像。
模型中使用Swin Transformer作为image backbone,BERT作为text backbone,使用cross-transformer进行多模态融合。
从上面流程可以更深入地理解attention中qkv含义,即可以将attention视为一种软寻址。在网上看到过一个简单易懂的解释:
attention 机制里主要有三个向量 - key, query 和 value,其实可以将 Attention 机制看作一种软寻址(Soft Addressing):Source 可以看作一个中药铺子的储物箱,储物箱里的药品由地址 Key(药品名)和值 Value(药品)组成,当前有个 Key=Query(药方)的查询,目的是取出储物箱里对应的 Value 值(药品),即 Attention 数值。通过 Query 和储物箱内元素 Key 的地址进行相似性比较来寻址,之所以说是软寻址,指的是我们不只从储物箱里面找出一中药物,而是可能从每个 Key 地址都会取出内容,取出内容的重要性(量的多少)根据 Query 和 Key 的相似性来决定,之后对 Value 进行加权求和,这样就可以取出最终的 Value 值(一副中药),也即 Attention 值。所以不少研究人员将 Attention 机制看作软寻址的一种特例
目标分割:Segment Anything Model (SAM)
整体思路
模型的目的是构建一个用于图像分割的基础模型,即寻求开发一个可提示的(promptable)模型并将其进行预训练,预训练的数据集通过一个有强大泛化能力的任务来生成。使用这个模型就可以寻求解决在使用prompt工程生成的新数据分布上的一系列下游分割问题。
本计划能否成功主要和三个部分相关:任务(task)、模型(model)、数据(data)。为了研究这些部分,需要解决以下三个问题:
- 什么样的任务可以零样本泛化?
定义一个可提示的分割任务,可以针对任何分割提示(prompt)返回有效的分割掩码。本任务有两个作用,一是作为预训练目标,二是通过prompt工程解决下游通用分割任务。
- 与之相应的模型架构是什么样的?
模型必须支持灵活的prompt,且可以实时输出掩码(mask)。
- 什么样的数据能支持这项任务和模型?
论文提出需要大规模多样化的数据集,为了得到这样的数据集,可以构造一个数据引擎,通过引擎可以半自动、全自动生成新数据完成模型迭代
模型结构:
数据引擎
互联网上目前没有适用于本任务数据量的数据集,所以必须构建一套引擎来生成数据。生成的训练数据集名为SA-1B,总共包括1100万张图像和11亿个掩码。数据生成收集包含三个阶段。
-
人工辅助阶段。专业标注员使用浏览器上的交互式标记工具,并结合 SAM 进行手动标注。SAM 首先使用公共数据集进行训练。随着数据量的逐渐增加,SAM 图像编码器的尺寸也随之增大(ViT-B扩展为ViT-H)。在这一阶段结束时,收集了 430 万个掩码和 12 万张图像。
-
半自动阶段。为了增加掩码的多样性并改善模型的性能,研究人员首先预先填充了掩码,标注人员需要在此基础上补充其他未标注的对象。为了检测掩码的可信度,使用第一阶段得到掩码的数据训练一个边界检测模型,用来进行高置信度预测。在此阶段结束时,一张图像平均可以提供 72 个掩码。
-
全自动阶段。本阶段可以实现全自动标注。实现此步骤主要由于亮点:一,在前面两个阶段已经收集了足够的掩码;二,引入了可以在有歧义情况下也可以判断的歧义感知模型。在这一阶段结束时,最终的 SA-1B 数据集包含 1100 万张图像和 1.1B 个掩码。
图片绘制
stable diffusion(网上说这部分的文章众多,暂略)
集成
样例
(目前跑的样例均涉及到公司内部信息,暂略,后期有时间会补充脱敏版)
其他问题
grouding-dino检测到的目标是一个范围,如果此范围内有多个物体且互相之间不好区分,则会全部覆盖。
例:原图如下,src为dog,dst为tiger
原图:
生成的mask:
结果图:
附录
GroundingDINO开源项目地址
GroundingDino论文地址
segment anything论文地址
segment anything github
segment anything官方demo
SAM论文解读
Segment Anything(SAM)论文杂谈
SAM综述
sam数据集
SA-1B数据集
手把手教程
当前图片编辑基础代码