【SAM】Segment Anything网络结构详解

Segment Anything网络结构详解

论文链接:http://arxiv.org/abs/2304.02643

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

一、整体框架

在这里插入图片描述

在这里插入图片描述

二、图像编码器image encoder

  使用一个MAE预训练好的ViT模型(ViT-H/16 使用了 14 × 14 14 \times 14 14×14的窗口注意力和四个等步长的全局注意力模块),最后输出特征宽度为原图大小的1/16。

  使用 1024 × 1024 1024 \times 1024 1024×1024大小的图像作为输入,缩放图像和填充最短边到1024,得到的图像特征大小为 64 × 64 64 \times 64 64×64,为减少特征维度,使用一个 1 × 1 1 \times 1 1×1的卷积核将特征缩放到1024个通道,接着使用一个1024通道 3 × 3 3 \times 3 3×3的卷积核,每个卷积核后面都带有层归一化。同一张图片仅需一次推理。

输入:image
输出:image embedding

三、Prompt encoder

 Prompt encoder:将特征映射为256维的向量embedding。

 一个点代表点位置编码的总和,其中一个可学习的embedding表示前景还是背景。

 一个框有一对embedding表示,分别为左上角点的位置编码和右下角点的位置编码。

 对于文字,则使用CLIP的文字编码。

Dense prompts(例如mask)对应图像上空间位置,输入mask设置为原图像大小的1/4倍。使用两个 2 × 2 2 \times 2 2×2,步长为2的卷积,输出通道分别为4和16。最后加上一个 1 × 1 1 \times 1 1×1的卷积映射到256维特征。每层都使用GELU激活函数和层归一化操作。mask和图像embedding进行元素相加。如果没有mask。就设置为一个可学习的embedding。

输入:point、box point、text、mask
输出:prompt tokens (prompt token + dense prompts token)

四、轻量级的mask解码器lightweight mask decoder

  轻量级的mask解码器:将图像embedding和prompt embedding映射为一个mask输出。在输入前插入一个可学习的输出token embedding。
在这里插入图片描述

输入:image embedding(含位置编码)、output token(dense prompts token) + prompt token(含位置编码)
输出:mask和IOU置信度

每个解码器层执行4个步骤:
1)token之间的自注意力;
2)token(作为查询)到图像嵌入的交叉注意力token to image attn(更新token).;
3)点积MLP更新每个token;
4)图像嵌入(作为查询Q)到token的交叉注意力image to token attn.(更新image embedding)。这一步骤更新了图像embedding,包含了prompt信息。

  在交叉注意力过程中,图像嵌入被视为一组 6 4 2 64^{2} 642个256维的向量。每个自/交叉注意力和MLP都有残差连接 [49],层归一化,以及训练时丢失率为0.1的dropout [93]。下一解码器层将前一层更新的token和更新的图像嵌入作为输入。使用两层的解码器

 解码器中每当参与注意力层,位置编码都会被添加到图像嵌入中,同时还会将原始prompt tokens(包含它们的位置编码ouput token)重新添加到更新的token中。-> 增强prompt token的几何位置和类型有很强的依赖。

  将解码器后更新的图像嵌入使用两个转置卷积上采样4倍。然后将token再次嵌入到图像嵌入中,将更新后的输出token传递到一个小型3层MLP(多层感知器),该MLP输出一个与放大图像嵌入通道维度匹配的向量。最后通过上采样图像嵌入和MLP输出的空间点积预测一个掩码mask。再将更新后的输出token经过一个MLP输出IOU对应的置信度。

五、结构详细说明

  1) Transformer使用输出256维的嵌入维度,Transformer中的MLP中间层使用2048维,在交叉注意层中使用一个 64 × 64 64 \times 64 64×64的图像嵌入,并将查询Q、键K和值V的通道维度减半到128维,使用8个头的注意力层。

  2) 用于上采样输出图像嵌入的2层转置卷积是 2 × 2 2 \times 2 2×2,步长为2,输出通道维度分别是64和32,含有层归一化层和GELU激活函数,token经过3层MLP后,两者点乘获得最后的mask。

YOLOv5是一个用于目标检测深度学习模型,是YOLO(You Only Look Once)系列的最新版本。YOLOv5相比之前的版本有许多改进和优化,包括更高的准确率和更快的推理速度。 YOLOv5的网络结构可以分为主干网络和检测头两部分。 1. 主干网络:YOLOv5使用CSPDarknet53作为其主干网络。CSPDarknet53是一种深度残差网络结构,它具有更好的表示能力和更高的特征提取能力。CSP指的是Cross Stage Partial连接,通过将输入特征图分成两个路径,一部分进行卷积和残差操作,另一部分则直接与输出相连,以提高特征传播效果。 2. 检测头:YOLOv5的检测头负责对主干网络提取的特征进行目标检测。检测头由一系列卷积层和全连接层组成。它将主干网络输出的特征图进行多尺度特征融合,然后通过卷积操作进行目标分类和边界框回归。YOLOv5采用anchor-based方法进行目标检测,即通过预定义的一组锚点来预测目标的位置和大小。 YOLOv5还引入了一些改进来提高准确率和速度,包括:PANet(Path Aggregation Network)用于特征金字塔的融合、SAM(Spatial Attention Module)用于增强感受野、CBAM(Convolutional Block Attention Module)用于通道注意力等。 总结起来,YOLOv5的网络结构主要由CSPDarknet53主干网络和检测头组成,通过多尺度特征融合和anchor-based方法进行目标检测。它在准确率和速度方面都有较好的表现,因此在目标检测任务中得到了广泛应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IRevers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值