searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

万物分割模型SAM开启cv新方向

2023-04-26 07:16:17
281
0

1. 背景

     大型语言模型(Large Language Model, LLMs) 的成功,如 ChatGPT,证明了现代人工智能模型在与人类互动中的重要性,并提供了人工通用智能 (AGI) 的一种实现路径。在通往AGI的实现路径中,其中有三个技术因素是必不可少的:

  1. 海量的带丰富语义信息的数据:不局限于通过文本、图像的方式进行大模型训练与优化迭代,多模态数据(语音、文本、图像,甚至是其他传感器等),通过统一的编码器模型进行信息对齐与融合。
  2. 有潜力的模型架构:以Transformer编解码结构的大模型,仍未达到能力上限。
  3. 与人类交互和意图对齐的手段:通过与人类的交互反馈,实现人类知识的高效注入。

      在图像生成领域,一些最近的工作尝试将文本提示与其他类型,如草图或布局相结合,以更准确地捕捉用户意图,生成新的提示并支持多轮人工智能交互,cv领域同样期待能出现与nlp相媲美的通用大模型,但由于图像本身通常通过CCD光学传感器,从物理世界进行信号采集获取,本身的语义信息提取,相比于文本token方式更加困难,迁移性方面面临更大的挑战,此外与nlp天然具备的token不同,图像中的目标是多尺度的,甚至可以无限可分下去,给通用cv模型和基础cv模型带来巨大技术挑战,nlp的大模型范式难以直接泛化到cv领域,cv领域的通用大模型仍然在研究初期。

      在此研究热潮下,2023年4月5日,处在行业前沿的 MetaAI 推出了一个新模型 Segment Anything Model (SAM)[1],号称实现了解物体是什么的一般概念,能够一键从任意图像中剪切出任何物体SAM是以实例分割任务发起,构建了分割任务的基础模型,除了模型之外,它还针对图像分割任务提出了一种新型任务模式和大规模数据集。SAM一经推出,立刻引起业界的广泛关注,基于SAM基础视觉模型的衍生工作也活跃开展起来,取得了诸多惊艳的效果。与之前多模态、图像生成工作不同的是,SAM采用AI data centric的理念,以数据为中心,提出了新的数据飞轮+模型构建范式,正在开启CV领域新的探索方向,一些SAM衍生工作也快速展开,取得了惊艳的效果。

2. SAM工作解读

       下面结合论文,对SAM工作的技术亮点进行一些解读和总结:

亮点1-新一代数据引擎

       

     SAM这篇论文最突出的贡献在于标注了一个数据集SA-1B[2],其中包含10亿个masks,比已有的实例分割公开数据集大400倍,该论文提出了“数据引擎”的理念,更加关注数据本身的构建和迭代,侧重于提高数据的质量和数量。相比于传统的以模型为中心,数据为辅的开发方式,采用论文中数据引擎的方法在实际场景中会有更大的潜力,因为数据很大程度上决定了模型能力的上限。SAM工作中数据集的构建采用了如下三种方式:

  1. 人工监督式标注:首先,在公开数据集上训练一个初始的基线模型,得到推理mask结果后,让标注员手动修改预测出的mask。最后,用修正后的新标注的数据更新训练模型。该过程共重复了6次,最终得到了430万个mask标注。
  2. 半自动标注:聚焦于难样本,把人工审核和标注工作聚焦在置信度低的masks上面。做法是模型推理出的mask上进行目标检测二次检验,比如一张图里一共有10个可能的masks(也就是说可以分成10个候选检测区域),首先用当前的模型去做分割,但是这样大概率只能标注出其中一部分masks,有些masks也标注得不好,现在需要自动识别出哪些mask是好的(可信度高的)。这篇论文的实现方法是对预测出mask的结果再做一个目标检测看能否识别出图片中有物体。如果有物体,那我们认为对应的mask可信度高,归属于高质量的标注样本。假设这么做发现了8个置信度高的masks,那么标注者就要标注剩下的2个,这样就节省了人力,提升了标注效率和数据质量。以上过程重复了5次,最终又增加了590万个mask标注。
  3. 全自动标注:拿上一步训练好的模型去标注数据,进一步用一些策略去提高标注质量,包括(1)用预测的IoU值去过滤掉置信度低的masks;(2)只考虑稳定的masks,例如把检测阈值在5上下调,masks基本不变的话,那么这样的masks是稳定的。也就是说模型预测的值在边界两边区分度比较大。我个人认为这也是一种confidence。(3)进行去重操作。这一步又标注了11亿的masks(数量增加了大于100倍)。

 在此流程中,始终以构建海量数据和优质数据为中心进行优化迭代的,以数据为中心指导AI系统的构建,是本论文的最大亮点。

亮点2-新颖的提示方式

     

     SAM中引入了新的提示工程用法进行实例分割,提示方式既包括图像本身的候选框、提示关键点等,也融入了nlp中的文本提示词和语句,具体包括:

  1. 视觉提示语(Visual Prompt)可以是图像/视频上用户选择的某一个点、框、随机绘制的涂鸦、mask、另一张图像的某个引用区域。
  2. 文本提示语(Text Prompt)可以是用户需要分割的类型(class)或者某个表示任务的语句(sentence)。

     换言之,对于输入的一张图像或者一个视频,用户可以用手绘的形式点一个点、画一个框、随便涂几下就可以完成对应物体的分割。此外,也可以用本文的形式告诉模型要分割的物体名称或者用一句话描述,同样能够完成一键分割。SAM提示方式可视为一种对用户友好的交互接口,使用者可以采用多种方式进行提示和交互,和SAM共同完成可关注物体的按需分割,该过程是可以反复交互的,在cv领域完成了开创性的工作,带给视觉开发者和使用者广阔的想象空间。

亮点3-基础视觉模型

     

    论文中提出了一个新的视觉基础模型,命名为SAM,它包括一个强大的图像编码器、一个prompt编码器和一个轻量级的掩模解码器。这个模型支持promptable segmentation任务,可以通过prompt engineering实现零样本迁移,并且能够在实时计算掩模的同时支持灵活的提示。SAM模型是论文中提出的主要贡献之一,它为图像分割领域提供了一种新的方法和工具,SAM模型的主要模块及特点如下:

  • Image encoder:使用Facebook自研的MAE算法,采用自监督方式训练的ViT模型,对图片提取embedding特征。
  • Prompt encoder:对输入的Prompt进行编码。分为稀疏Prompt和稠密Prompt两种,稠密Prompt(如mask)使用CNN来提取embedding特征;稀疏Prompt,如points, boxes使用位置编码器来提取embedding特征;对于稀疏文本Prompt,直接使用现成的CLIP中的文本编码器来提取embedding特征。
  • Mask decoder:基于transformer decoder block,在prompt-to-image和image-to-promp计算 self-attention and cross-attention,更新所有的embeddings,后面再接一个MLP计算所有点为前景的概率。
  • Resolving ambiguity:对每一个prompt预测三个mask,选择与loss最小的mask,做反向传播。同时模型会对每一个mask预测一个置信度分数。
  • Efficiency:Image encoder只会计算一次,后续的计算就比较轻量级了。只需要50ms,即可对一个prompt预测一个mask。
  • Losses and training:loss使用focal loss 和 dice loss的线性组合。使用混合的几何(点、bbox)prompt做训练。对每一个mask随机采样11轮prompt用做训练。

该模型架构清晰,接口简洁,具有良好的扩展性,有望作为cv基础模型,为多项cv任务和多模态任务进行赋能。

3. 衍生工作

      目前SAM的数据集、源代码和预训练模型均已开源,基于SAM快速衍生出一些优秀的开源项目,下面对其中一些典型代表工作进行简介:

工作1-Grounded-Segment-Anything

      粤港澳大湾区数字经济研究院(IDEA-Research)开源发布的 Grounded-Segment-Anything[3],将SAM与带文本提示的SOTA目标检测器Grounding DINO,图像理解模型BLIP,文本-图像生成模型Stable-Diffusion,对话模型ChatGPT,语音模型Whisper 等进行了整合,实现了多模态数据生产线全家桶。

     该工作的主要实现功能包括:

  • 根据文本提示,进行实例检测+分割,进一步交互提升实现目标编辑
  • 根据文本需求描述,实现目标自动标注
  • 基于语音对话,实现图像编辑
  • 3D化人体提示抠图

     目前基于该项工作,在web端和手机APP端均实现了多种SAM用户交互功能,实现图像检测、编辑、自动标注等功能,取得了惊艳的效果。

工作2-playground

    上海人工智能实验室OpenMMLab社区基于SAM发布了Playground项目[4],提供了和 MMDet 相关的结合 SAM 的应用。具体特性包括:

  • 支持 MMDet 中包括的所有检测模型 (Closed-Set),典型的如 Faster R-CNN 和 DINO 等串联 SAM 模型进行自动检测和实例分割标注
  • 支持 Open-Vocabulary 检测模型,典型的如 Detic 串联 SAM 模型进行自动检测和实例分割标注
  • 支持 Grounding Object Detection 模型,典型的如 Grounding DINO 和 GLIP 串联 SAM 模型进行自动检测和实例分割标注
  • 所有模型均支持分布式检测和分割评估和自动 COCO JSON 导出,方便用户对自定义数据进行评估

   

    一些亮点能力展示包括:

  • 旋转目标检测和数据标注:探索结合旋转框检测相关模型和 SAM,运用弱监督水平框检测技术实现旋转框检测,摆脱繁琐的旋转框标注
  • 开放目标检测+跟踪:借助开放世界检测模型,并结合kalman滤波器进行多目标跟踪,在此基础上,结合SAM实现多目标跟踪和分割
  • 文本检测 + 文本擦除 + 文本编辑:通过 MMOCR 已有的文字检测器和文字识别器,实现了端到端的文字识别,在此基础上,结合 SAM 实现字符分割,并结合 Stable Diffusion 支持文字擦除和文字编辑的下游任务

工作3-PaddleSeg

      百度于2023年4月份新发布的PaddleSeg 2.8 版本[5],内置了开源飞桨版本视觉大模型 Segment Anything Model (SAM) 和演示Demo。由 META AI 发表的 SAM 具有强大的 zero-shot 能力,可以分割任意物体和图像,也可以使用提示输入分割特定目标。

     

      飞桨版本 SAM 中提供了 ViT-B、ViT-L、ViT-H 三种 Backbone 的 SAM 模型,SAM 模型可以和其它模型配合,做一些有意思的应用,比如任意一个目标检测模型+ SAM =实例分割模型。飞桨版本 中 SAM 与 CLIP 算法进行了结合,提供了基于飞桨 CLIP 算法的 ViT-B 模型权重文件,通过 CLIP 计算文本提示与 SAM 分割结果的匹配得分,从而具有通过本文提示对特定目标进行分割的能力。在接下来的工作中,PaddleSeg 将逐步补全 SAM 模型的微调能力,并进行部署侧的优化,进行更多的应用落地探索。

4. 总结展望

     SAM是今年cv领域具有里程碑意义的开拓工作,它提供了以数据为中心的新的基础模型及优质数据生产范式,SAM的成功,引发了业界关于数据引擎来标注数据,用自监督方式构建通用视觉模型的可能性思考。笔者任务SAM在今后可以进行以下方面的探索工作:

  1. 提高SAM模型的性能:虽然SAM模型在多个数据集上表现出了很好的性能,但是仍有一些情况下它的表现不如其他图像分割方法。因此,如何进一步优化SAM模型,根据特定场景需求和场景数据微调SAM模型,提高其性能和鲁棒性,是非常有意义的工作。
  2. 探索更广泛的应用场景:虽然SAM模型已经在多个任务中得到了验证,但是仍有很多应用场景没有被探索。因此,可以进一步探索SAM模型在更广泛的应用场景中的表现和效果,与以往cv算法的构建方式不同的是,SAM提供了多种提示工程的实现手段,基于用户友好的提示工程接口,如何将场景化的先验信息和场景约束条件,与提示工程相结合,从另外一条路径来改善SAM的推理性能,也是非常值得探索的工作。
  3. 研究prompt engineering方法:prompt engineering是实现零样本迁移的关键方法之一。因此,可以进一步研究prompt engineering方法,并探索如何设计更有效的提示来提高模型性能。
  4. 开发更多的数据集:虽然SA-1B数据集已经包含了10亿个掩模,但是仍有很多情况下需要更大规模、更丰富、更具挑战性的数据集来评估和验证SAM模型。因此,可以开发更多适用于图像分割任务的数据集,尤其是人工方式难以标注和构建的场景化数据,如医疗诊断数据等。

参考文献

[1]. https://arxiv.org/abs/2304.02643

[2]. https://ai.facebook.com/datasets/segment-anything/

[3]. https://github.com/IDEA-Research/Grounded-Segment-Anything

[4]. https://github.com/open-mmlab/playground

[5]. https://github.com/PaddlePaddle/PaddleSeg

 

 

 

 

 

0条评论
0 / 1000