【学习周报】SAM和CAT学习

上周组会提到了SAM,一个可提示的图像分割基础模型,从github上的star数就可以看出这项工作的意义和价值非凡,在阅读了这篇论文后也开始思考如何与video caption任务进行结合,在这个过程中又发现了五月初CVPR上的一篇文章“Caption Anything”,作者基于 Segment Anything, BLIP/BLIP-2, ChatGPT, Visual ChatGPT, GiT等多个大模型,设计出一个处理图像字母的基础模型,旨在生成可控的图像字幕。

学习内容:

  1. Segment Anything
  2. Caption Anything

学习时间:

  • 5.22 ~ 5.27

学习笔记:

一、Segment Anything

在这里插入图片描述

论文地址:https://arxiv.org/pdf/2304.02643.pdf
demo链接:https://segment-anything.com/demo

引言

这项工作目标是开发一个可提示的图像分割的基础模型,在一个广泛的数据集上预训练,解决新数据分布上的一系列下游分割问题。

项目关键三部分:任务模型数据

在这里插入图片描述

1.1 任务(Task)

在NLP和CV领域,foundation model通过使用promt技术对数据集和任务执行zero shot或few shot实现迁移。受此启发作者提出了提示分割任务,其目的是在分割提示下返回一个有效的分割掩码。

1.2 模型(Model)

在这里插入图片描述

  • prompt encoder:使用了一个MAE预训练的Vision Transformer(ViT),最小化地适应处理高分辨率输入。
  • image encoder:考虑两组提示:稀疏(点,框,文本)和密集(掩码)。通过位置编码来表示点和框,这些编码与每种提示类型的学习嵌入相加,并且使用CLIP的现成文本编码器来表示文本;密集提示(即掩码)使用卷积嵌入,并与图像嵌入元素相加。
  • lightweight mask decoder:通过有效地将image embedding图像嵌入,prompt embeddings提示嵌入和输出token映射到掩码来实现。

1.3 数据(Data)

1.3.1 数据引擎(Data engine)

问题背景:为了实现对新数据分布的强泛化,需要在大量和不同的掩码集上训练SAM,而目前网络上缺少这样的数据集。

解决方案:与model-in-the-loop数据集标注共同开发模型,分为三个阶段:

  1. assisted-manual辅助手动:SAM协助注释器对掩码进行注释,类似于经典的交互式分割设置。
  2. semi-automatic半自动:SAM可以通过提示可能的对象位置来为对象子集自动生成掩码,注释器专注于对其余对象的注释,帮助增加掩码的多样性。
  3. fully automatic完全自动:用一个规则的前景点网格提示SAM,平均每张图像产生100个高质量的mask。
1.3.2 数据集(Dataset)

最终数据集 “SA-1B” 包含来自1100万张许可和隐私保护图像的超过10亿个掩码。如下图所示:
在这里插入图片描述

二、Caption Anything

在这里插入图片描述
论文地址:https://arxiv.org/pdf/2305.02677.pdf
代码地址:https://github.com/ttengwang/Caption-Anything

引言

Controllable Image Captioning (CIC,可控图像字幕)的研究内容是使模型输出的图像字幕符合用户的需要。现有的CIC模型要么依赖人工注释,受数据集规模的限制影响了模型理解控制信号的能力;要么仅支持预定义的单个或多个控制信号,限制了模型组合不同的控制信号的灵活性以及引入新的控制维度。

因此作者提出了Caption AnyThing (CAT),基于预训练基础模型的可控图像字幕框架。CAT将预训练的图像字幕与SAM和调整过的LLM结合在一起,图像和视觉控制由SAM处理生成用户所选区域的像素级mask,从而促使模型感知用户感兴趣的对象。

1.Caption Anything

CAT的整体框架如下图所示:
在这里插入图片描述
首先,segmenter将visual prompt转换为mask prompt,然后captioner预测由mask描述区域的图像字幕,为了使生成的字幕更符合用户想要关注的对象,在captioner中应用了一个简单的Visual Chain-of-Thought(视觉推理链)进行一步一步的推理。最后text prompt和raw caption被送到Text Refiner中根据用户期望生成字幕。

1.1 Segmenter

SAM能够根据视觉控制分割图像并且具有强大的zero-shot迁移能力,在可提示的预训练过程和SA-1B数据集(最大的分割数据集,在11M图像上具有1billion个mask)的帮助下,SAM能够通过与用户交互提示(点、框)实现交互式分割,最后返回用户所需的分割掩码。进而就很容易根据原始图像和掩码生成所需的字幕。

1.2 Captioner

作者使用BILP2作为Captioner,它能够在querying transformer的帮助下直接结合使用预训练的image encoder和LLMs来弥合模态之间的差距,实现优秀的zero-shot。

1.3 Text Refiner

作者引入ChatGPT作为API来生成更丰富和更容易受用户控制的字幕描述。除了ChatGPT,LLaMA,OPT-IML,BLOOM也可以作为API。

1.4 Visual Chain-of-Thought

受NLP中推理链CoT(Chain-of-Thought)的启发,作者设计captioner逐步生成文本来确保生成的描述符合用户关注的区域。

1.5 Extension to Object-Centric Chatting

给定一个对象的分割掩码和用户查询,作者使用现成的视觉问答模型作为API使ChatGPT能通过提问来理解详细的视觉信息,具体来说,将生成的字幕包含在初始提示中,然后使用LangChain作为控制中心预测API的调用链。

1.6 Extension to Paragraph Captioning

为了使框架适应图像段落字幕任务,作者使用ChatGPT总结密集字幕和场景文本成一个段落。具体来说,首先使用SAM分割图像中的所有对象,然后使用CAT管道为每个对象添加字幕从而生成密集字幕。为了将场景文本合并到段落中,利用附加的OCR工具(例如EasyOCR)识别图像中存在的文本。密集的字幕和场景信息随后被合并到预定义的提示模板中,最后使用该模板来引导ChatGPT将文本信息总结为一段精炼的字幕。

2. Experiments

2.1 Visual Controls

在这里插入图片描述
如图4所示,通过点击图像中的不同位置,CAT能够准确地识别和描述相应的对象。
在这里插入图片描述
如图5所示,CAT的视觉控制也可以基于trajectory或box。

2.2 Language Controls

在这里插入图片描述
如图6所示,CAT可以生成具有多种语言风格的字幕

2.3 Object-Centric Chatting

在这里插入图片描述
如图7所示,CAT能够围绕选定的对象执行视觉问答。

2.4 Visual Chain-of-Thought

在这里插入图片描述
如图8所示,直接对图像进行推理往往会受到背景内容的影响,从而妨碍captioner集中注意力在用户感兴趣的对象上。而通过结合步进式的思考链,不仅生成的字幕更具有针对性,而且有利于获取与目标对象相关的更多细节信息。

2.5 Caption Everything in a Paragraph

在这里插入图片描述
如图9所示,最终所得段落字幕包含了图片中的大多数对象以及文本信息,甚至会出现一些推理信息。

三、总结

起初SAM作为分割模型出现时,就考虑到将SAM结合到video caption任务中帮助模型更关注视频主体对象的特征和动作信息,而后CAT的出现直接在SAM基础上实现了图像字幕生成,而图像字幕与视频字幕的关联之一就在于,视频字幕任务往往会通过将视频划分为若干帧(可以是中心帧、关键帧)来代表整个视频,然后分别对每个视频帧进行处理获取静态信息,对不同帧之间的关系进行处理获取动态信息,最后组成视频字幕,基于上述分析可以将CAT应用在视频字幕任务中,关键在于对视频中的那些帧(图像)进行处理,以及如何推理帧与帧之间的关系。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值