【论文阅读笔记】(SAM部分)

发布时间 2023-10-18 11:36:50作者: PanSTARRS

写这个系列的文章主要是因为作者的zotero配额不够用了,为了避免电脑突然死机之类的意外情况导致zotero笔记全部没掉,特地将每篇论文的笔记都粘贴在这里留作备份。


Segment Anything in High Quality

读论文时思考的问题

  1. 论文试图解决什么问题?

    • SAM割出来的mask在某些情况下质量很差(粗粒度、错误预测等等)。

    • 如何高效地提高SAM割出来的mask的质量,且不影响SAM的原有模型设计、效率和zero-shot的性能等

  2. 文章提出了什么样的解决方法?

    • 往SAM中加入一个HQ Output Token,负责高质量mask的分割

    • token跟新得到的特征图做点乘,新得到的特征图通过feature fusion的方式得到,包括 local, global 和 mask features

    • 建立了一个高质量的分割数据集用于模型训练

  3. 这个解决方法的局限性在哪里?有没有更好的解决方法?

  4. 文章是通过设计什么样的实验来支撑其解决方法的有效性的?(你说有效就有效吗,我不信)这些实验你觉得有效吗?

问题:

  1. 为什么SAM的mask在一些情况下质量会比较低?

  2. 如何解决?从什么地方获取的灵感

  3. 明明COCO的mask质量就不好,还要在COCO上评估,不是有点打脸吗

关注点

  • high-quality

  • zero-shot capability

要点

  1. 不对SAM进行大幅度修改,而是使用  learnable HQ-Output Token,输入到SAM的 mask decoder 中;这个是在一个  refined feature set 上操作的

Personalize Segment Anything Model with One Shot

读论文时思考的问题

  1. 论文试图解决什么问题?

    • SAM只能割东西,因此对于某些特殊场景,需要先给SAM一个人工标注的Prompt才能较好地进行分割

    • 能否通过一些修改,让SAM分割出某些user-designed visual concepts【一般是以图片的方式来呈现,如果只有一张图片就不可能训练出一个较好的detector再来进行分割了】

    • 如何在不提供人工的prompt的前提下仍然能较好地进行使用SAM(较好地挖掘其能力)

  2. 文章提出了什么样的解决方法?

    • 提出了两个模型,PerSAM 和 PerSAM-F,实现通过 one-shot data 来进行SAM分割
  3. 你觉得该方法的关键之处在哪?

  4. 这个解决方法的局限性在哪里?有没有更好的解决方法?

  5. 文章是通过设计什么样的实验来支撑其解决方法的有效性的?(你说有效就有效吗,我不信)这些实验你觉得有效吗?

问题

  1. 这种 specific visual concepts 是语义层面的还是实例(instance)层面的?

  2. specific visual concept 究竟指的是什么?

  3. 第5页的local feature是只有物体的前景部分吗?  是的!

  4. 选取 location prior 的时候,如果根据topk选取多几个点会不会更好?


Matcher: Segment Anything with One Shot Using All-Purpose Feature Matching

读论文时思考的问题

  1. 论文试图解决什么问题?

    • 如何更好地建立视觉方面的 fundation model

    • 如何建立一个模型,使得其在 没有人类输入信号的情况下(这里主要是 one-shot image)能更好地挖掘SAM的能力,实现相同的语义元素(好像不一定要求是一个实例)的分割(并提取割出来的物体的语义信息?)

    • 简单地将不同的 fundation models 连接起来不能解决该问题

  2. 文章提出了什么样的解决方法?

    • 通过计算对应矩阵和匹配的方式,实现从参考图片到target图片的无需训练的 one-shot 分割(可以割出 whole-level 以及 instance level)

    • 通过image encoder 提取出两张图像的特征,再计算相似度矩阵,通过Hungarian matching可以得到粗粒度的碎片化的mask

    • 根据双向匈牙利匹配,选取出合适的目标图片中的patch(保证patch反向映射后仍然在原图的mask里面)

    • 将这些patch进行kmeans聚类,可以得到part-level prompt 以及 (one or multiple) instance-level prompt

    • 用 SAM 通过这些prompt输出对应的mask

    • 通过原来的mask到预测mask的推土机距离以及纯净度指标,进一步选取出SAM割出的合适的topk个mask,最后做merging

  3. 你觉得解决方法的关键之处在哪里?

  4. 这个解决方法的局限性在哪里?有没有更好的解决方法?

    • 似乎还是需要一张 reference 图片?那怎么做VOS?(噢!用上一帧的mask来做reference!)

    • 比如做VOS的时候,能不能用(可能可以通过学习的方式来选取)前几帧的结果来做一个聚合呢?又能不能用后面几帧的结果来反向进行调整?(但这样就做不到实时了)

  5. 文章是通过设计什么样的实验来支撑其解决方法的有效性的?(你说有效就有效吗,我不信)这些实验你觉得有效吗?

问题

  1. patch-wise similarity 的 patch 有多大?

  2. 怎么得到 coarse mask 的?  通过矩阵做匈牙利匹配,可以将原有的mask对应的patch给映射到目标的图片上

  3. 如果多次迭代地进行正逆向 matching,情况会有改观吗    不会,没有任何区别

    这个点或许可以跟iccv23那篇用correspodance matrix 做文本识别相结合

  4. 那语义信息咋获得呀?目前似乎还没任何线索

  5. 是怎么做VOS的? 已解决,用上一帧的mask

  6. 不同的mask是怎么merge的?

理解

  1. kmeans 聚类:隐藏了一个默认前提——物体相同的部分会被mapping到相近的地方