LISA(推理分割)笔记

多模态

发布于

LISA(推理分割)笔记

简介

这篇论文题目中文翻译是 基于大型语言模型的语义分割, 提出了一个新任务-推理分割。大概就是给一张图和一段话,模型使用大语言模型分割出目标。作者给了一个例子,从图片中分割出富含维生素C的物品。

作者说这篇论文有三个贡献,提出了推理分割的任务,建立了一个推理分割基准,ReasonSeg, 还有训练了一个模型。

项目主页GitHub

LISA可以完成四种任务

  1. complex reasoning;
  2. world knowledge;
  3. explanatory answers;
  4. multi-turn conversation

模型架构

生成mask

这里作者提出了一些问题,就是大部分llm是不具备视觉能力,有视觉能力的泛化型不好还不好训练。相比之下,训练 LISA-7B 在 8 个 NVIDIA 24G 3090 GPU 上只需要 10,000 个训练步骤。(嗯8块3090)

image.png 模型结构就是上面这张图,右下角标了火花的就说明是需要训练或者微调的。首先扩充词表,加入<SEG> ,接下来给出一张图片ximgx_{img}和一段文本xtxtx_{txt}, 将他们送入大语言模型F\mathcal{F} ,写成公式就是y^txt=F(ximg,xtxt).\hat{\boldsymbol{y}}_{txt}=\mathcal{F}(x_{img},\boldsymbol{x}_{txt}). 当LLM倾向于生成二进制分割掩码时,输出y^txt\hat{\boldsymbol{y}}_{txt}应该包含一个<SEG>令牌。所以提取最后一层嵌入h^seg\hat{h}_{seg} (因为他和<SEG> token 是相关的), 并用一个MLP γ\gamma 将其投影到hsegh_{seg}

同时,视觉编码器Fenc\mathcal{F_{enc}} 会从图片中提取出视觉特征f\text{f}

最后hsegh_{seg}f\text{f} 会被送入一个和SAM有相同架构的解码器,获得最后的mask.

整个过程表示出来就是hseg=γ(h^seg),f=Fenc(ximg),M^=Fdec(hseg,f).\begin{gathered}\boldsymbol{h}_{seg}=\gamma(\hat{\boldsymbol{h}}_{seg}),\quad\boldsymbol{f}=\mathcal{F}_{enc}(\boldsymbol{x}_{img}),\\\hat{\boldsymbol{M}}=\mathcal{F}_{dec}(\boldsymbol{h}_{seg},\boldsymbol{f}).\end{gathered}

训练目标

训练目标是文本生成损失 Ltxt\mathcal{L}_{txt} 和分割掩码损失 Lmask\mathcal{L}_{mask} 进行端到端训练。总体目标 LL 是这些损失的加权和,由 λtxt\lambda_{txt}λmask\lambda_{mask} 确定L=λtxtLtxt+λmaskLmask.\mathcal{L}=\lambda_{txt}\mathcal{L}_{txt}+\lambda_{mask}\mathcal{L}_{mask}.

训练

数据集

训练数据由三部分组成,都是开源数据集

  1. Semantic Segmentation Dataset
  2. Vanilla Referring Segmentation Dataset
  3. Visual Question Answering Dataset

值得注意的是,LISA具有zero-shot能力,因为训练集不包含任何推理分割的内容。

需要训练的参数

为了保持llm的泛化能力作者用了lora,解码器可以被微调,llm的词嵌入和投影最后一层潜入的mlp也可以微调