位置: IT常识 - 正文

【AIGC】6、Segment Anything | Meta 推出超强悍可分割一切的模型 SAM

编辑:rootadmin
【AIGC】6、Segment Anything | Meta 推出超强悍可分割一切的模型 SAM

推荐整理分享【AIGC】6、Segment Anything | Meta 推出超强悍可分割一切的模型 SAM,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

文章目录一、Intruduction二、Segment Anything Task三、Segment Anything Model四、Segment Anything Data Engine五、Segment Anything Dataset六、Segment Anything RAI Analysis七、Zero-shot Transfer Experiments7.1 zero-shot single point valid mask evaluation7.2 zero-shot edge detection7.3 zero-shot object detection7.4 zero-shot instance segmentation7.5 zero-shot text-to-mask八、总结九、在线体验十、代码

论文:Segment Anything

官网:https://segment-anything.com/

代码:https://github.com/facebookresearch/segment-anything

出处:Meta、FAIR

时间:2023.04.05

贡献点:

首次提出基于提示的分割任务,并开源了可以分割一切的模型 SAM开源了一个包含 1100 万张图像(约包含 10 亿 masks)的数据集 SA-1B,是目前最大的分割数据集,数据集的标注经过三个阶段——手动标注、半自动标注、全自动标注,最终提供的 mask 都是全自动标注的 maskSAM 具有很强的零样本迁移能力,在未经训练过的数据集上的边缘检测、proposal 生成、instance segmentation 的效果都很强开源了三种不同大小的模型,模型大小分别为 375M、1.25G、2.56G,能够适合不同场景的使用一、Intruduction

1、背景:

前有经过预训练的大语言模型被证明有很强的 zero-shot 和 few-shot 泛化能力,这些基础模型能够泛化到其没有见过的任务和数据上去。

究其原因就在于 prompt engineering,提示机制能够根据的提示文本来提示模型来生成更好的反馈。

所以 prompt engineering 和基础模型(在大数据集上预训练)的风很快吹到了 CV 领域

如 CLIP[82] 和 ALIGN[55],使用对比学习来训练 text 和 image 的 encoder,让这两种模态对齐

一旦经过训练,text prompt 就能够零样本泛化到新的视觉概念和数据分布上

这样的 encoder 也可以很高效的和其他模型结合,来实现下游的任务,如图像生成

虽然在视觉和语言编码器方面已经取得了很大的进展,但计算机视觉中有超出这个范围的很多问题,比如不存在非常丰富的训练数据

所以,本文的目标是构建一个图像分割的基础模型,将 prompt 引入,且在非常丰富的数据集上进行预训练,让模型有更好的泛化能力,基于这个基础模型来更好的解决分割的下游问题。

2、什么是 zero-shot learning 零样本学习:

从原理上来说,zero-shot learning 就是让计算机具备人类的推理能力,来识别出一个从未见过的新事物。举个例子,我们告诉一个从没见过斑马的小朋友:“斑马是一种长得像马,身上有黑白色条纹的动物”,他就可以很轻松地在动物园里找出来哪个是斑马。可是,在传统的图像识别算法中,要想让机器认出“斑马”,往往需要给机器投喂足够规模的“斑马”样本才有可能。而且,利用“斑马”训练出来的分类器,就无法识别其他物种。但是 zero-shot learning 就可以做到,一次学习都没有,只凭特征描述就识别出新事物,这无疑离人类智力又近了一步。

zero-shot learning 是如何工作的:

利用高维语义特征代替样本的低维特征,使得训练出来的模型具有迁移性。

比如斑马的高维语义就是“马的外形,熊猫的颜色,老虎的斑纹”,尽管缺乏更多细节,但这些高维语义信息已经足够对“斑马”进行分类,从而让机器成功预测出来。

这就解决了图像识别长久以来的问题:如果一个事物从来没有在现有数据集中出现过,机器应该如何学习和识别它。

3、SA 模型简介:

本文提出的 Segment Anything(SA):

提出了一个新任务:基于提示的分割任务提出了一个新模型:SAM, 可以分割一切开源了一个新的用于图像分割的数据集(SA-1B,1 Billion masks,11M images),是当前最大的分割数据集,包含 1100 万张图像,约 10 亿标注 masks

SA model 的特性:

模型是使用 promptable 的模式训练的,故可以迁移 zero-shot 到新的数据和任务作者在多种不同的任务中进行了性能测试,发现其 zero-shot 性能很厉害,可以匹敌或超过一些监督训练的结果

本文的目标:

构建一个适用于图像分割的基础 promptable 模型有足够强的泛化能力能够使用 prompt 功能来实现对下游新数据的分割问题

要实现该目标就有三个重要的元素:

task:什么任务能够提高 zero-shot 的泛化能力model:使用什么样的模型data:什么样的数据能够支撑上面的 task 和 model

① Task:promptable segmentation task

在自然语言处理和最近的计算机视觉方法中,基础模型很火,它可以通过使用 “提示” 技术对新的数据集和任务进行 zero-shot 和 few-shot learning。

故此,本文提出了【可提示的分割任务】,其目的是在给定任何分割提示下返回一个有效的分割掩码,如图 1a 所示,可以根据使用者的提示(point、box、mask、text)来返回分割结果。

prompt 能够指定要在图像中分割的内容,如一些能够标识目标的空间信息或文本信息。

一个有效的 mask 输出就意味着,即使当一个 prompt 是模糊的或指向多个目标(比如一件衬衫上的像素点可能表示衬衫或穿它的人),mask 的输出应该是合理且可解释的,至少会包含一个所指向的目标

作者使用提示分割任务作为预训练的目标,并通过 prompt 过程来解决一般的下游分割任务

② Model:

基于提示的分割任务和现实中的可用性就给 model 施加了一些约束

model 必须支持足够灵活的提示model 必须能够支持实时交互使用model 必须是模糊感知的,可以对一个模糊 prompt 输出多个 masks,从而允许模型能够自然地处理模糊的目标,如 shirt 和 person

基于上述约束,作者发现了一个简单的结构能够同时满足上述三种约束:

一个强大的 image encoder,来计算 image embedding一个 prompt encoder 来编码 prompts一个能够将上面两个 embedding 结合起来的轻量级 mask decoder,预测分割 mask

Segment Anything Model,SAM,见图 1b,由三部分组成:

image encoder:图像特征提取prompt encoder:主要使用点、框、mask 、text 作为提示mask decoder:通过对上面两个编码结果进行一定的 cross-attention,得到 mask 结果

3、Data engine

为了实现在新数据集的强大的泛化能力,非常有必要在大量且丰富的 mask 上训练 SAM,而非使用现有的分割数据集来训练。

有一些基础模型方法[82] 使用在线获取数据,但 mask 并不丰富

本文作者建立了一种 ‘data engine’ (数据引擎)的方法, 如图 1c 所示,作者使用 model-in-the-loop 数据集标注和 SAM 模型来共同开发,有三个阶段:

assisted-manual:SAM 辅助标注工具来标注 masks,类似于传统的分割标注步骤semi-automatic:SAM 能够根据提示目标的位置来为一些目标生成 mask,标注工具会对其他剩余的目标进行标注fully automatic:用规则的前景网格点来提示 SAM,为每个 image 生成约 100 个高质量的 masks

4、Dataset

最终得到的 dataset 是 SA-1B,包括 1B mask(10亿),11M imgs(1100万),如图 2 所示:

SA-1B 使用的由 data engine 的最后一个阶段标注结果是现有的分割数据集 mask 数量的 400x 之多,且 mask 的质量都较高且更丰富

5、Responsible AI

作者研究且说明了在使用 SA-1B 和 SAM 时潜在的公平问题和偏差。

SA-1B的图像跨越了地理和经济上不同的国家,我们发现 SAM 表现在不同的人群中也是同样的。

6、Experiments

使用 23 个分割数据集,我们发现 SAM 从单个前景点产生高质量的掩模,通常只略低于手动标注的 gt其次,在使用提示引擎的 zeor-shot 时,各种下游任务的定量和定性都获得了较好的结果(包括边缘检测、目标建议生成、实例分割以及 text-to-mask 等)

图 2 展示了数据集中的一些标注样本,标注的 mask 都是最后一个阶段 SAM 自动标注的,每个图像中平均包含约 100 个 masks

可以看出标注非常的细致,有边界区分的图像区域(尽管可能同属于一个 person 或者 car)都被进行了很细粒度的分割,每个土豆都被分割成了一个区域,这和我们通常意义上的实例分割或语义分割的标注 label 有很大的差异。

二、Segment Anything Task

1、Task

首先将 prompt 的概念从 NLP 转换到分割

prompt:

可以是一组前景/背景点,如图 3,绿色的点就是 point prompt,模型会给出这个点所在的目标的 mask一个粗糙的框或 mask自由形式的文本或者能够表示在图像中要分割的内容的任何形式

promptable segmentation task 的目标:

给定任何 prompt,返回有效的分割 mask(如图 3 所示,任何模糊的提示都要有一个有效的 mask),输出至少要是一个目标

2、Pre-training

可提示的分割任务提出了一种预训练方法,能够为每个训练样本模拟一系列提示(如 points、box、mask),并且和真实的 gt mask 做对比。

3、zero-shot transfer

pre-training 任务赋予了模型在推理时对任何提示做出适当反应的能力,因此下游任务可以通过设计合适的 prompt 方法来解决。

假设有一个猫的 box,可以通过提供检测器的 box 输出作为模型的 prompt,来获得猫的实例分割结果一般来说,实际的分割任务都可以被视为 prompting。除了自动数据集标记,第七章中探索了 5 个不同的示例任务。

4、related tasks

分割任务有很多子任务,例如:

interactive segmentation [57, 109]edge detection [3]super pixelization [85]object proposal generation [2]foreground segmentation [94]semantic segmentation [90]instance segmentation [66]panoptic segmentation [59]

提示性的分割模型能支持尽可能多的场景,但不是全部场景

5、discussion

提示和组合能够使单个模型能够以可扩展的方式使用,并有可能完成在模型设计时未知的任务。

这种方法类似如何使用其他基础模型,例如,CLIP [82] 是 图像生成系统 DALL·E[83] 的文本-图像对齐组件。

由 prompt 技术驱动的可组合的系统设计,将会比专门为一组固定的任务训练的应用更加广泛。

三、Segment Anything Model

SAM 有三个部分,如图 4 所示:

image encoder:

使用 MAE pre-trained Vision Transformer(ViT)来处理高分辨率的输入,image encoder 会对每张图像都运行一次,且可以在使用提示之前应用。

image encoder 的输出是经过 16x 下采样的结果,输入大小为 1024x1024,所以经过 image embedding 后的结果是 64x64 大小,为了降低通道数量,使用了 1x1 卷积将通道降为 256。

flexible prompt encoder:有两种 prompts

sparse(points、boxes、text):通过位置编码来表示 points 和 box,通过 CLIP 的 off-the-shelf text encoder 来表示 text。sparse prompts 都是 256-d 的向量。point 表示位置编码和该点是前景还是背景;box 表示左上角学习到的编码和右下角学习到的编码。text 是从 CLIP 中得到的编码。dense(masks):使用卷积来进行编码,并对编码结果进行 element-wise 求和。mask 是将图像下采样 4x 后输入的,然后是 1x1 卷积将通道变为 256,然后将 image embedding 和 mask 进行逐点相加,如果没有 mask prompt,则不加即可

fast/lightweight mask decoder

decoder 能够高效地对 image embedding 和 prompt embedding 进行映射,得到输出的 mask,如图 14 所示。共有两层 decoder layer,通过 cross-attention 来更新 image embedding 和 prompt token

每个 decoder layer 有 4 个步骤:

首先,对 prompt token 上进行 self-attention然后,对 token(as queries)到 image embedding 进行 cross-attention接着,使用逐点的 MLP 来更新每个 token最后,对 image embedding(as queries)到 token 进行 cross-attention,使用 prompt 信息更新 image embedding

这里的 token 是什么:

我们知道在图像分类 ViT 中,在 49 个 patch embedding 后面又添加了一个 cls token,变成了 50 维的特征输入到了 Transformer 中进行特征提取,最后使用 cls token 经过 MLP 后得到类别,这里的 cls token 就是最终用于分类的特征所以在本文中,在 prompt embedding 中也添加了一个 token,在 decoder 的输出中会用到

如何进行 cross-attention:

将 image embedding 看做一系列 64x64x256 的向量每个 self、cross-attention、MLP 在训练中都有残差链接、layer norm、dropout作者使用两层 decoder,下一个 decoder layer 的输入是上一层更新后的 token 和更新后的 image embedding

decoder 运行完之后,使用两个反卷积将特征扩大 4x,相比于原图是 4x 下采样大小

token 再次被用到 image embedding 上,并且将更新后的输出 token embedding 经过一个小的 3 层 MLP,输出的通道和上面经过反卷积的 image embedding 保持一致。最后使用 MLP 的输出和反卷积后的 image embedding 进行逐点相乘来预测 mask

如何解决 prompt 的模糊性:

如果给出一个模糊的提示,则模型一般会平均多个有效的 mask 来得到一个输出为了解决这个问题,作者修改了模型,如果只给了一个 prompt,也会输出多个匹配到的 masks(如图 3)作者发现 3 个 mask 输出通常能够解决大多数常见的情况(嵌套 mask 通常最多有三个深度:整体、部分、子部分)

如何训练:

在训练过程中,仅仅回传 mask 中最小的 loss模型会给每个 mask 预测一个 confidence score (estimated IoU)来进行排序

高效性:

prompt encoder 和 mask decoder 都运行在 web browser 上,在 CPU 上大概为 50ms

Loss:

使用 focal loss 和 dice loss 的线性组合来监督 mask prediction,且 focal loss 和 dice loss 的权重比为 20:1此外,作者证明在每个 decoder layer 后面使用辅助 loss 也有效果,所有使用 MSE loss 来监督 IoU head

Training:

使用混合 geometric promps 来训练 promptable segmentation task对每个 mask 都会进行 11 轮随机采样 prompt 来模拟交互,允许 SAM 和 data engine 无缝衔接四、Segment Anything Data Engine

由于现有大分割数据集并不丰富,所以作者搭建了一个数据引擎来持续收集数据

数据引擎分为三个阶段:

模型辅助手动标注阶段包含自动预测 mask 和模型辅助标注的半自动阶段全自动阶段,模型生成 mask 且没有标注器

1、手动标注阶段

类似于传统的交互式分割,标注人员使用标注工具进行 mask 的标注

没有对标记对象施加语义约束,标注人员可以自由的标注 ‘stuff’ 和 ‘things’

作者会建议标注人员标注其自己认为可以命名或描述的对象,但并不需要类别来对这些被 mask 的对象进行描述

标注人员会按图像中物体的突出程度来按顺序标注物体

在这个阶段,SAM 使用常见的公共分割数据集进行训练,在进行足够的数据标注后,只使用新的标注 mask 来重新训练。

【AIGC】6、Segment Anything | Meta 推出超强悍可分割一切的模型 SAM

随着标注 mask 的增多,image encoder 从 ViT-B 扩展到 ViT-H,其他结构不变

共进行了 6 次训练

随着模型效果的提升,每个 mask 的平均标注时间从 34s 降到了 14s

14s 比 COCO 的 mask annotation 快 6.5x,比 box annotation 慢 2x

随着 SAM 的提升,每个图像中的 mask 的平均数量从 20 提升到了 44

在这个阶段从 120k 数据中得到了 4.3M masks

2、半自动标注阶段

在这个阶段,目标是增加 mask 的多样性,以提高模型分割任何东西的能力

为了将标注器集中到不太突出的目标上,首先,自动检测到很有信心的 mask,然后对这些 mask 的地方进行填充,然后让标注器去关注其他未标注的地方。

如何得到有信心的 mask:

为了检测有信息的 masks,训练了一个 bbox 检测器[84] ,使用的是通用的 ‘object’ category。

在这个阶段,在 180k 数据中得到了 5.9M masks(和前面的一共 10.2M mask)

通过进行 5 次训练,每个 mask 的标注时间又变成了 34s,因为这些 mask 的标注比较难,每个图像中的 mask 从 44 扩充到了 72 个

3、全自动标注阶段

在最后一个阶段,是进行全自动的标注,这也是可行的

其一,因为在这个阶段的开始,已经收集到了足够的 mask,包括前两个阶段收集到的多种多样的 mask其二,在这个阶段,开发了感知模糊模型,运行对模糊的 prompt 进行输出

具体方法:

使用 32x32 的网格 point prompt 模型,为每个 point 预测一系列可能对应于有效目标的 mask对于感知模糊模型,如果一个 point 位于一个 part 或 subpart 上,则模型会返回该 part、shupart、whole 的目标使用 IoU 预测模块来选择 confident mask此外,作者只选择 stable masks选择到 confident 和 stable 的 mask 后,使用 NMS 进行过滤为了进一步提升小 mask 的质量,还使用了多种重叠的 zoom-in 的方式

经过最后一阶段的全自动标注,共在 11M 图像上得到了 1.1B 的高质量 mask

五、Segment Anything Dataset

1、Images

这些 11M 图像都是经过授权的,都是高分辨率图像(平均 3300x4950 pixels),该量级的数据大小对访问和存储都是挑战。

因此,作者发布了最短边长为 1500 px 的降采样图像,这样也高于一些常用的图像(如 COCO 大约为 480x640 px 左右)

2、Masks

共包含 1.1B 个 mask,其中 99.1% 都是自动生成的,因此 mask 的质量至关重要

作者会将生成的 mask 和专业标注的结果进行比较,并且在第 7 章证明了本文的数据集标注 mask 是高质量的

3、Mask quality

为了估计 mask 的质量,作者随机抽取了 500 张图像,约 50k masks,并要求标注人员提高这些 mask 的质量。

这样一来就能产生成对的预测 mask 和矫正后的 mask

通过计算 IoU 发现:

有 94% 的 mask pair 的 IoU > 90%有 97% 的 mask pair 的 IoU > 75%

4、Mask properties

如图 5,绘制了 SA-1B 的所有 mask center(mask 中心店)和现有流行分割数据集的 mask center 的空间分布对比

在所有的数据集中,都存在摄影师偏差

SA-1B 相比于 LVIS v1 和 ADE20K,具有更大的 mask 覆盖范围,即 mask center 的分布很广泛,没有明显的集中到图像中心的位置,mask 的位置的分布较为均衡

COCO 和 Open Images V5 有更突出的中心偏差。可以明显的看出 COCO 中心点颜色很深,说明 coco 的很大部分的 mask 的中心点集中在图像的中心点

在图 6 中,按大小对比了这些数据集

SA-1B 比第二大开放图像数据集多 11x 图像 和 400x mask,平均每幅图像比开放图像多 36x mask

如图 6 中间,SA-1B 的每个图中有更多的 mask,故包含了更多中小目标

六、Segment Anything RAI Analysis

这里将台湾和香港被列为 Country,有严重的问题,已经有网友给作者发邮件敦促修改,这里静等结果!

七、Zero-shot Transfer Experiments

本节主要介绍使用 SAM 进行 zero-shot transfer 实验,包括了 5 个任务:

实验测试的是 SAM 在没见过的数据集和任务上的效果(和 CLIP 的使用类似)数据集中包括新的数据分布,如水下或俯视图(如图8)

实验的核心目标:

测试是否能够从任何提示中生成一个有效的 mask

使用一系列从低到中再到高水平的图像理解来证明效果:

边缘检测分割所有内容,即生成 object proposal对检测到的目标进行分割,即实例分割作为一个概念,从 free-form text 的提示中来分割对象。

实验设置:

SAM 使用基于 MAE 预训练的 ViT-H[33] 作为 image encoderSAM 在 SA-1B 上训练,该数据集的标注 mask 只有自动标注的结果

图 8 展示了作者使用的 23 个测试开源数据集

7.1 zero-shot single point valid mask evaluation

1、Task

作者测试了从单个前景 point 出发来进行一个目标的分割

2、Datasets

作者使用由不同的 23 个数据集组成的数据,如图 8 展示了 dataset 并且展示了每个数据集的样本(表 7 更详细)

使用 mIoU 作为评估标准:

对于 human study:使用如图 9b 的 subset

3、Results

如图 9a,SAM 和 RITM 对比了每个数据集的结果

SAM 取得了 16 个数据集的更好的结果此外,还展示了 oracle 结果,抽出 SAM 的 3 个 mask 和 gt 对比,而非使用所有的 confident mask,SAM 在所有数据集上都超越了 RITM

human study 的结果见图 9b

7.2 zero-shot edge detection

作者在 BSDS500 数据集上测试了 SAM 边缘检测的效果

使用 16x16 的规则前景点 grid 作为 prompt,得到 768 个预测 mask(每个点预测 3 个),多余的 mask 使用 NMS 剔除掉

然后使用 sobel 滤波和后处理,得到最终的边缘 maps

结果:

如图 10 (图 15 更多)所示:

定性来看,尽管 SAM 没有训练过边缘检测的任务,但也能得到理想的边缘检测结果和 gt 相比,SAM 预测了更多的边缘,包括 BSDS500 中没有标注的一些边缘

7.3 zero-shot object detection

作者在 object proposal generation 任务上也测试了 SAM 的性能

这项任务在目标检测任务上很重要

作者将 mask 自动生成的 pipeline 进行了一些修改,用于生成 proposal,输出的 mask 作为 proposals

average recall (AR) 作为评判标准

表 4 展示了结果

7.4 zero-shot instance segmentation

作者也使用了 instance segmentation 来评判了 SAM 的效果

首先运行一个目标检测网络将检测结果作为 SAM 的 prompt

结果:

7.5 zero-shot text-to-mask

作者在根据 free-form text 来进行目标分割的任务上也进行了实验

对每个面积大于 102100^21002 像素的 mask,都抽取 CLIP image embedding在训练阶段,使用 CLIP image embedding 作为 SAM 的 prompt,在推理阶段,使用 text embedding 就可以了。因为 CLIP 的 image embedding 是和 text embedding 对齐的所以,在推理阶段,通过 CLIP 的文本编码器对文本编码,然后将生成的文本编码作为提示符提供给 SAM

结果:

如图 12 所示,SAM 可以在给定文本提示符的情况下来分割对应的目标

八、总结

SAM 能够实现非常细粒度的图像分割,分割粒度之细让人望而生畏,突破了以前实例分割和语义分割的标注上限。能达到这样的细粒度标注的一个关键原因就在于没有给标注过程设置 “类别” 的界限,只要标注人员(第一阶段)认为这个区域是能够抽象描述的,就可以将这个区域 mask 出来,而无需给定一个类别描述或语言描述。

如上所述,SAM 分割的结果是不含类别信息的(因为训练数据的 label 也是没有类别信息的,只有像素是否是否属于一个 mask 的信息),使用 text 作为 prompt 的时候可以输入类别信息,如 ‘cat’,就可以输出一张图中的所有 cat,这个 cat 是基于图文编码匹配的,而分割的结果中原本是没有任何类别信息的。

SAM 作为首个图像分割的大基础模型,为未来 CV 方向提供了更多的可能,为自动标注也提供了很好的范本。

九、在线体验

体验地址

点击右上角的 demo 即可体验,可以使用网站上的图,也可以点击 Upload an image 上传自己的图

点击左侧 Everything 即可对图中所有目标进行分割:

点击 Box 就可以使用 box prompt 来提示模型输出 box 内的分割 mask:

点击 Hover&Click 就可以在页面上点击,会输出该点所在的 mask 的结果:

十、代码

代码路径

只能做推理

1、环境安装

conda create -n seg_any python=3.8 pytorch=1.10 torchvision cudatoolkit=11.7 -c pytorch -c conda-forgegit clone https://github.com/facebookresearch/segment-anything.gitcd segment-anythingpip install -e .pip install opencv-python pycocotools matplotlib onnxruntime onnx -i http://pypi.douban.com/simple/

2、模型下载

在 github 项目中有模型下载地址:

3、简单使用

# 根据 prompt 生成 maskfrom segment_anything import SamPredictor, sam_model_registrysam = sam_model_registry["<model_type>"](checkpoint="<path/to/checkpoint>")predictor = SamPredictor(sam)predictor.set_image(<your_image>)masks, _, _ = predictor.predict(<input_prompts>)# 获取图中所有的 maskfrom segment_anything import SamAutomaticMaskGenerator, sam_model_registrysam = sam_model_registry["<model_type>"](checkpoint="<path/to/checkpoint>") # model type: ['default', 'vit_l', 'vit_b']mask_generator = SamAutomaticMaskGenerator(sam)masks = mask_generator.generate(<your_image>)# 也可以使用单行命令实现python scripts/amg.py --checkpoint <path/to/checkpoint> --model-type <model_type> --input <image_or_folder> --output <path/to/output>

4、image encoder

输入:1024x1024x3第一步:patch embedding:patch 大小为 16x16(使用 16x16,步长为 16 的二维卷积实现),得到 16x16x768 维的特征,输出为 [N, 16, 16, 768]第二步:给图像编码加上位置编码第三步:输入 Transformer Encoder 中,进行多级 MHSA 和 MLP,ViT 深度为 12,多头自注意力的 head 数为 12第四步:经过 Neck(1x1 conv + LN + 3x3 conv + LN)输出:64x64x256 大小

5、prompt encoder

对 points 编码对 box 编码对 mask 编码

6、mask decoder

对 image encoder 和 prompt encoder 的结果做 cross-attention
本文链接地址:https://www.jiuchutong.com/zhishi/297524.html 转载请保留说明!

上一篇:手把手教你如何对接支付宝支付接口(奶爸级别)(手把手教你如何从一无所有到财务自由)

下一篇:Vue3中操作dom的四种方式,建议收藏!!!(vue3 ref dom)

  • vue router跳转(vuerouter跳转新页面)

    vue router跳转(vuerouter跳转新页面)

  • 电风扇不转是什么原因嗡嗡响(电风扇不转是什么原因)(电风扇不转是什么原因?怎么解决)

    电风扇不转是什么原因嗡嗡响(电风扇不转是什么原因)(电风扇不转是什么原因?怎么解决)

  • 小米主题在哪个文件夹(小米主题在哪个软件下载)

    小米主题在哪个文件夹(小米主题在哪个软件下载)

  • 华为p40像素是多少(华为p40像素是多少pro)

    华为p40像素是多少(华为p40像素是多少pro)

  • iPhone12如何隐藏应用(iphone12如何隐藏电池使用时间)

    iPhone12如何隐藏应用(iphone12如何隐藏电池使用时间)

  • 不需要验证码怎样关联qq号(不需要验证码怎么登录QQ)

    不需要验证码怎样关联qq号(不需要验证码怎么登录QQ)

  • lumix是什么牌子的相机(lumix是什么牌子的相机FUjiTSU)

    lumix是什么牌子的相机(lumix是什么牌子的相机FUjiTSU)

  • 微信朋友圈位置怎么显示(微信朋友圈位置怎么只显示城市)

    微信朋友圈位置怎么显示(微信朋友圈位置怎么只显示城市)

  • 12306电子客票可以换取车票吗(12306电子客票可以取票吗)

    12306电子客票可以换取车票吗(12306电子客票可以取票吗)

  • 抖音收藏突然不见了是什么原因(抖音为啥收藏的内容看不到)

    抖音收藏突然不见了是什么原因(抖音为啥收藏的内容看不到)

  • pppoe拨号是什么(pppoe拨号模式)

    pppoe拨号是什么(pppoe拨号模式)

  • 手机屏幕乱跳或自动操作,是怎么回事(手机屏幕乱跳或自动操作能修吗)

    手机屏幕乱跳或自动操作,是怎么回事(手机屏幕乱跳或自动操作能修吗)

  • 台式机要不要固态硬盘

    台式机要不要固态硬盘

  • 10mbps是几兆(10Mbps是几兆宽带)

    10mbps是几兆(10Mbps是几兆宽带)

  • 苹果左边喇叭是干嘛的(iphone手机左边喇叭有什么用)

    苹果左边喇叭是干嘛的(iphone手机左边喇叭有什么用)

  • 微信可以切换几个账号(微信切换几次会频繁)

    微信可以切换几个账号(微信切换几次会频繁)

  • 浏览器打印页面设置(浏览器打印页面加载不出来)

    浏览器打印页面设置(浏览器打印页面加载不出来)

  • 苹果11的home键在哪(苹果11的home键在哪里)

    苹果11的home键在哪(苹果11的home键在哪里)

  • 符号怎么用键盘打出来(符号怎么用键盘打)

    符号怎么用键盘打出来(符号怎么用键盘打)

  • 怎么生成wsdl文件(如何生成word文档)

    怎么生成wsdl文件(如何生成word文档)

  • 苹果有单独显示器吗(苹果单独显示器在哪买)

    苹果有单独显示器吗(苹果单独显示器在哪买)

  • qq手机在线是什么意思(qq手机在线是什么状态和4g在线区别)

    qq手机在线是什么意思(qq手机在线是什么状态和4g在线区别)

  • 抖音极速版怎么发视频(抖音极速版怎么提现到微信)

    抖音极速版怎么发视频(抖音极速版怎么提现到微信)

  • 如何更改文件的打开方式(如何更改文件的创建时间)

    如何更改文件的打开方式(如何更改文件的创建时间)

  • 湖南税务申报期限2023年1月
  • 增值税进项发票当月未开,怎么办
  • 个人私活 要交个人所得税吗
  • 税务局如何认定虚开
  • 无租房合同可以取住房公积金吗
  • 外币实收资本入账汇率
  • 车辆备注栏备注怎么填
  • 固定资产无法使用不能带来经济利益是否需计提租金
  • 现金流量怎么影响股票价值
  • 单位为个人负担工资、薪金所得的个税,怎么征收个税
  • 企业所得税的税率
  • 工程材料增值税税率2023年
  • 房地产企业承担的债务
  • 售后回租产生的费用
  • 公司为员工异地调岗
  • 收到高新企业补助款分录
  • 二手设备进口海关
  • 长期股权投资减值准备借贷方向
  • 朋友抵押贷款通过我公司名义会怎样
  • 合伙企业需要交企业所得税吗?
  • 假设公司为增值税一般纳税人
  • 搞金融的企业
  • 暂估商品入库跨年收到发票怎么做账?
  • 生产企业出口退税全部流程
  • 所有者权益合计是负数是什么意思
  • 季报中现金流量表报的是当季的还是本年累计数
  • 房产交易差价
  • 保险保障基金的管理单位是
  • 免税企业进项怎么处理
  • 华为折叠手机mateXs
  • 怎么利用腾讯手机号找人
  • 什么是应付工资金额
  • 餐饮企业原材料的核算,新城饭店为增值税一般纳税人
  • 拍卖公司财务
  • 应交税金年末
  • 公司吸收合并股权
  • 发票真伪查询的金额填多少
  • PHP:disk_total_space()的用法_Filesystem函数
  • 房地产公司土地在资产负债表列入
  • 普通发票和增值税发票都能报销吗
  • 建信信托介绍
  • vue的一些面试题
  • 域名续费多久生效
  • hostnamectl命令
  • 简易征收的进项税怎么处理
  • 织梦cms要钱吗
  • 预算收入支出
  • mysql优化命令
  • 库存现金的使用限额规定
  • 借应付职工薪酬贷财政拨款收入
  • 劳务分包预缴税款计算公式
  • 年终奖金个人所得
  • 一般纳税人普通发票要交增值税吗
  • 资产减值损失和资产处置损益区别
  • 合伙企业所得税率
  • 新成立的公司哪个地方能查到
  • 投资其他公司做什么科目
  • 已开具发票验旧
  • 货币资金核算制度是什么
  • sql分页查询怎么实现
  • mysql内网访问
  • 在linux系统中
  • 电脑显示配置windows
  • 菜鸟flask
  • macbookair如何恢复系统
  • window怎么操作
  • 32位/64位Win10系统开机后桌面图标自动排列的解决办法
  • windows7一键还原在哪
  • windows8.1安装windows7
  • 显示某两个字符的函数
  • javascript中的函数包括内置函数和自定义函数
  • python怎么用
  • jQuery 3.0 的 setter和getter 模式详解
  • cocos creator android
  • jquery field
  • 核定征收的适用税率
  • 江之都财税服务集团有限公司地址
  • 纳税申报的期限是多久
  • 餐饮财务分析表怎么写的啊
  • 税收筹划六种方法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设