SAM图像分割大模型在遥感领域介绍(一) SAM模型介绍

  原创 ThinkGIS 数据可视化 AntV

  ChatGPT作为通用人工智能大模型,广为人知。它的出现普及了大模型的概念,并推动了大模型的发展及业务应用落地。然而,尽管ChatGPT是通用模型,但它并非万能的,在专业领域仍需要领域专用的大模型来解决相关问题。举例来说,交通领域需要交通大模型来优化出行体验,而未来各个行业也将会出现各自专用的大模型来应对相应的挑战。

  今天分享的是计算机视觉领域的大模型 SAM 。

  01

  SAM 简介

  Segment Anything Model (SAM) 是由 Meta 开源的图像分割大模型,在计算机视觉领域 (CV) 取得了的新突破。SAM 可以在不需要任何标注的情况下,对任何图像中的任何物体进行分割。SAM 的开源引起了业界的广泛反响,仅几天内就获得了上万的关注(Star),被称为计算机视觉领域的 GPT。

  SAM 的工作非常出色,其完成度极高,也非常贴心地开源了数据集、模型以及推理/部署代码。此外,他们还开发了一个网站演示,可以直观地展示这项工作给视觉基础模型领域和分割领域带来的巨大影响。

  在线体验:https://segment-anything.com/demo

  02

  SAM 特点

  1.SAM 提供多种 prompts 方式

  目前官方的 demo 支持交互式标注,可以通过画框、鼠标点击来获取分割的区域,此外还可以一键分割一切,轻轻点一下,将分割结果实时展示出来,对不太确定的类别提供了多个有效的区域。

  Hover & Click:在图像上用鼠标选择点,进行分割;

  Box:在图像上画一个框,对框中的物体进行分割;

  Everything:图像会自动生成一个均匀的 grid,然后对图中的所有物体进行分割。

  point 提示分割

  全量分割

  多结果输出

  2.SAM 的 prompts 可实现与其他系统的灵活集成

  AR/VR 交互 Promopts

  文本 Promopts

  3. SAM 支持输出方式扩展

  4.零样本泛化

  SAM已经学会了物体的一般概念——这种理解使得它能够对不熟悉的物体和图像进行零样本泛化,而无需进行额外的训练。

  03

  SAM 架构特性

  数据引擎

  为了训练 SAM,研究人员收集了一个目前最大的分割数据集 SA-1B,这个数据集也开源了。大概有 1000 个子压缩包,每个压缩包 10G,完整的数据集大约 10T 左右。数据集包含 1100万图像和 11亿个 mask。当然,这么大的数据集不可能是手动收集标注的。SA-1B的收集主要分成了三步:

  手动阶段:这个阶段主要是人工在公开数据集上进行标注的

  半自动阶段:用迭代的 SAM 进行标注,让标注员重点标剩余的(不太突出)的部分

  全自动阶段:在收集的数据上,用 SAM 标注

  模型架构

  图像编码器

  Image encoder 就是特征提取器,把人类认识的数据转换成计算机能理解的向量。

  用来对输入图像做 embedding,参数量比较大,但是对同一张输入图像只需要计算一次 embedding,对于不同的 prompt 可以重复使用 image embedding,从而降低推理压力。

  提示编码器

  Prompt类型:point, box, mask, 文本,目前官方并没有开放文本 输入的能力的

  掩模解码器

  decoder,要利用encoder得到的特征来输出结果,支持实时操作--Lightweight解码器

  根据前两步得到的 image embedding 和 prompt embedding 生成有效的多个 mask 和 每个 mask 对应的置信分数。Prompt encoder 和 Mask decoder 都是轻量级的结构,参数量较少,可以在 web 端快速推理。

  04

  SAM 对领域影响

  数据标注领域大大解放生产力

  数据标注可实现自动标注和和半自动标注。效率大大提升

  算法应用门槛降低、不需要算法团队也可以研发应用

  自动抠图软件、自动标注、证件照处理等应用的开发门槛降低,端侧开发工程师有更多的机会开发小的应用。

  一些产品技术的核心竞争力,成为业界标配

  提升 CV 界整体水位SAM给CV提供了很好的平台,将会让许多原先不太容易做的下游任务成为可能。SAM 做了图像分割的基础工作,推动更多应用层

  05

  SAM 应用领域

  SAM 模型可以用在数据标注及标注相关的衍生应用,也可以其他大模型的结合。

  图像分割任务

  SAM 与其他大模型的结合,图像处理相关。

  视频分割任务

  医学图像分割任务

  从医学影像中提取临床相关信息。例如,放射学家可以使用机器学习来增强分析,通过将图像分割成不同的器官、组织类型或疾病症状。这可以减少运行诊断测试所需的时间。

  图像修复任务

  3D任务

  图像生成任务

  遥感任务

  移动物体检测任务

  OCR任务

  更多应用案例:

  https://github.com/facebookresearch/segment-anything

  06

  SAM 前端使用

  ONNX

  ONNX代表Open Neural Network Exchange(开放式神经网络交换)。它是一种用于表示机器学习模型(特别是神经网络模型)的开放格式,旨在提供不同深度学习框架之间的互操作性。ONNX使得在流行的深度学习框架之间交换模型成为可能,例如TensorFlow、PyTorch等。

  ONNX Runtime

  ONNX Runtime是一个开源的运行时引擎,用于加载、优化和执行使用ONNX格式表示的机器学习模型。它旨在提供高性能、跨平台的推理(inference)支持,并支持在多种硬件加速器上进行部署。

  ONNX Runtime Web

  ONNX Runtime Web是ONNX Runtime的一个特殊版本,专门为在Web浏览器中执行ONNX模型而设计。它使开发人员能够在客户端环境中直接加载和运行使用ONNX格式表示的机器学习模型,而无需依赖于远程服务器或云服务。

  import { InferenceSession, Tensor } from 'onnxruntime-web';

  SAM 模型提供了 ONNX 格式模型导出能力,因此在前端侧可以模型推理分割,开发体验更好的图像应用。

  下篇文章将详细介绍 SAM 大模型在遥感领域的应用

  视频效果

  原标题:《SAM 图像分割大模型在遥感领域介绍(一) SAM 模型介绍》

  阅读原文