论文阅读:Segment Anything之阅读笔记

引言

  • 论文:Segment Anything是Meta出的图像语义分割的算法。这个算法因其强大的zero-shot泛化能力让人惊艳,这不抽空拿来学习了一下。
  • 该算法的代码写得很清楚、简洁和规范,读来让人赏心悦目。推荐去看源码,很有意思。
  • 本篇文章,将以问答形式来解读阅读过程中遇到的困惑,想来这种方式效率更高一些。
  • PDF | Code

整体结构介绍

在这里插入图片描述

  • 整体分为三大部分:image encoder、prompt encoder和mask decoder。下图看的更加清楚一些,也是来自论文。
    在这里插入图片描述

论文问答

代码仓库中,模型哪部分转换为了ONNX格式?以及如何转的?
  • mask_decoder部分做了转onnx格式

  • 直接采用torch.onnx.export函数接口转的。因为没有采用transformer函数库,因为转换较为简单。

    • 先基于torch构建整个部分模型,构建模型输入。

    • 调用torch.onnx.export函数来转换

Mask decoder部分 Transformer decoder block?
  • 该部分采用的动态mask预测头。

  • 在两个方向上(prompt-to-image embedding 和相反的)使用了prompt self-attention和cross-attention来达到更新所有embedding的目的。

如何整合image_embedding,image_pe, sparse_prompt_embedding和dense_prompt_embedding的?
  • 通过mask decoder这一部分来做的。采用的是修改过的Transformer decoder block.
points, boxes, text和masks四种类型prompt如何嵌入到网络中?
  • points, boxes, text在论文中称为sparse prompt。masks类型被称为dense prompt

  • points和boxes 是以positional encodings(位置编码)和每个提示类型的学习嵌入来表示的。

  • text是来自CLIP的text encoder表示的。从demo中并没有看到text输入的prompt, 从issue #93中验证了这点

  • mask是使用卷积嵌入,并与图像embedding逐元素求和

什么样的任务具有zero-shot泛化能力?
  • 模型以promptable的方式训练得到,因此具备zero-shot的泛化能力
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值