Schwertlilien
As a recoder: notes and ideas.

2025-9-25

很重要的一个问题就是现在转向SS,但是SS的标注实在是消耗太多。

能不能找到一种方法,可以不需要那么庞大的精细标注?使用大量的未标注图片,然后为每一张图片写一段话,作为文本标注。然后就扔进去训练,然后模型的输出是分割的mask,以及不同的mask对应的文本?但是mask是对像素分类的话,是不是需要提前指定这是什么类别?也就是说类别数需要提前确定。

那么应该如何进行开放词汇语义分割呢?

上述的问题是基于CLIP进行扩展的:

  1. 文本描述没有位置信息 → 模型不知道“鸡蛋”在哪个像素。
  2. mask 和文本的对应关系 → 没有直接 supervision,需要借助 CLIP 风格的图文对齐来学习。
  3. 类别是否固定:传统 SS 需要类别数固定;但如果用开放词汇方法,可以动态扩展。

对于固定的类别数的处理方法:动态输入文本query。

  1. 共享 embedding 空间:像素特征与文本 embedding 在同一个空间。
  2. 动态类别:类别不是预先固定的,而是来自输入文本。
  3. mask proposal:需要一个候选 mask 生成器(SAM, Mask2Former, DETR-based)。
  4. mask-text 对齐:通过 CLIP-style 相似度匹配,给 mask 分配语义。

我建议你走一个 “先能跑 → 再改造 → 再专门设计损失/结构” 的路线。具体步骤:

第一阶段:先能跑通开放词汇分割

  1. 下载现成的开放词汇模型(推荐:MaskCLIP, CLIPSeg, OpenSeg, SEEM)。
  2. 在你的菜品数据上 zero-shot 测试:输入 query = "rice", "chicken", "green pepper", 看输出 mask 的效果。
    👉 目标:验证基线效果,明确问题点(比如边界不清、混合菜分不开)。

第二阶段:小规模适配 (domain adaptation)

  1. 收集/制作 少量标注(可以是边界框 / 涂鸦 / 分割标注的一小部分),用来微调 segmentation head。
    👉 不需要全量标注,只需让模型知道“餐盘中的不同区域确实是不同菜”。
  2. 在训练时,结合 captions(“a plate with scrambled eggs and tomatoes”)对齐文本 embedding,提升对食物类的识别。

第三阶段:针对性改造

  1. 改进损失函数
    • 加强边界区分(比如 boundary loss, contrastive loss)。
    • 对混合菜场景,尝试 instance-level separation loss,鼓励相似区域被不同 mask 分开。
  2. 增强 mask proposal
    • SAM 或 Mask2Former 做更精细的候选 mask,再结合 CLIP 去分配语义。
    • 对餐盘这种特殊结构,可以做 prior:先分出盘子区域,再在盘子内细分菜品。

第四阶段:最终方案

  1. 打造你自己的方法:
    • backbone: CLIP (预训练 frozen/半冻结)。
    • mask proposal: SAM/Mask2Former。
    • alignment: text ↔ mask embedding。
    • 额外:设计 针对菜品混合的 loss(比如“mask compactness loss”,防止不同菜粘在一起)。

5. 一句话总结

  • caption 是比 class label 更丰富的弱标注,天然适合和 CLIP 这类 VLP 模型结合。
  • 你可以先拿现成开放词汇分割模型跑跑看,再在其上改造。
  • 真正要解决菜品分不开的问题,需要:
    1. 少量领域标注来适配,
    2. 边界/实例分离的 loss,
    3. 更强的 mask proposal 机制。
搜索
匹配结果数:
未搜索到匹配的文章。