MSA【1】:Segment Anything Model for Medical Image Analysis: an Experimental Study

文章目录

  • 前言
  • 1. Abstraction & Introduction
    • 1.1. Abstraction
    • 1.2. Introduction
      • 1.2.1. What is SAM?
      • 1.2.2. How to segment medical images with SAM?
  • 2. Methodology
    • 2.1. SAM is used in the process of segmentation of medical images
      • 2.1.1. Semi-automated annotation
      • 2.1.2. SAM assisting other segmentation models
      • 2.1.3. New medical image foundation segmentation models
    • 2.2. Experiments
      • 2.2.1. Settings
      • 2.2.2. Prompt Point Generation Scheme
  • 总结


前言

本文主要介绍了 Segment Anything Model 在自然图像分割领域取得显著成就后,较早的将 SAM 在医学图像领域做评测的工作。

原论文链接:Segment Anything Model for Medical Image Analysis: an Experimental Study


1. Abstraction & Introduction

1.1. Abstraction

Segment Anything Model (SAM) 是一个在超过 10 亿个注释(主要是自然图像)上训练的基础模型,旨在以交互方式分割用户定义的感兴趣对象。尽管该模型在自然图像上的表现令人印象深刻,但目前尚不清楚该模型在转向医学图像领域时会受到怎样的影响。

本文对 SAM 分割医学图像的能力进行了广泛的评估,评估对象包括来自不同模式和解剖学的 11 个医学影像数据集。研究表明,SAM 的性能因任务和数据集而异,某些数据集的性能令人印象深刻,但其他数据集的性能则差至中等。

1.2. Introduction

为新的医学成像数据和任务开发和训练分割模型实际上具有挑战性,这是因为收集和整理医学图像既昂贵又耗时,而且还需要经验丰富的医生为图像提供仔细的掩膜注释。基础模型和零点学习可以通过使用在大量数据上训练的神经网络来显著减少这些困难,而无需使用传统的监督训练标签。

1.2.1. What is SAM?

Segment Anything Model 是一种分割模型,其目的是在给出提示时分割用户定义的感兴趣对象。提示的形式可以是一个点、一组点(包括整个掩膜)、一个边界框或文本。即使在提示不明确的情况下,也要求模型返回有效的分割掩膜。

有关 Segment Anything Model 的介绍可以参考我的另一篇 blog:SAM【1】:Segment Anything

1.2.2. How to segment medical images with SAM?

从技术上讲,SAM 可以在没有提示的情况下运行,但预计它在医学成像中不会有用。这是因为医学图像通常具有图像中许多感兴趣的特定物体,并且需要对模型进行训练才能识别这些物体。


2. Methodology

2.1. SAM is used in the process of segmentation of medical images

2.1.1. Semi-automated annotation

人工标注医学图像是该领域开发分割模型的主要挑战之一,因为这通常需要医生花费宝贵的时间。在这种情况下,SAM 可作为一种工具用于加快标注速度。

在最简单的情况下,人类用户为 SAM 提供提示,SAM 会生成一个掩膜供用户批准或修改;另一种方法是,SAM 在整个图像中以网格形式给出提示,并为多个对象生成遮罩,然后由用户命名、选择或修改。

2.1.2. SAM assisting other segmentation models

SAM 与另一种算法一起自动分割图像,以弥补 SAM 无法理解分割物体的语义信息的不足。例如,SAM 根据分布在图像上的点提示,可以生成多个对象掩码,然后由一个单独的分类模型将其归类为特定对象。同样,独立的检测模型可以生成图像的对象边界框,作为 SAM 生成精确分割掩码的提示。

此外,在训练语义分割模型的过程中,可以将 SAM 与语义分割模型循环使用。例如,在训练过程中,分割模型在未标记图像上生成的掩码可用作 SAM 的提示,以便为这些图像生成更精确的掩码,这些掩码可用作正在训练的模型的迭代改进监督训练示例。

2.1.3. New medical image foundation segmentation models

新的医学图像基础分割模型的开发过程可以由 SAM 的开发过程来指导;或者,在各种医学影像领域的医学图像和掩膜上对 SAM 进行微调,而不是从头开始训练,因为这可能需要更少的图像。

2.2. Experiments

2.2.1. Settings

评估是通过为每个对象创建一个或多个提示并评估 SAM 生成的掩码相对于给定数据集和任务的真实掩码注释的准确性来完成的。同时,本文始终使用SAM为给定提示生成的置信度最高的掩码。

选择 mIoU 作为评估指标。然而,经验研究表明,SAM 的性能在同一图像的不同类别中会有很大差异。因此,本文将 N 个类别的多类预测问题转换为 N 个二元分类问题,因此使用 IoU 作为最终评价指标就足够了。

在这里插入图片描述

2.2.2. Prompt Point Generation Scheme

本文使用了一种通用的、直观的策略来模拟现实点提示的生成,该策略反映了用户如何以交互方式生成提示,实现的细节如下图所示:

在这里插入图片描述

生成逻辑:

  • 主要模拟了人在选点时候的思维:在选点的时候,用户通常会从明显最错误或者明显最正确的地方的中心选点,理论上这样可以尽可能地涵盖用户需要的部分
  • 将第一个提示点 p 1 p1 p1 初始化为掩膜前景中距背景最远的点
    • 即第一个提示点 p 1 p1 p1 是一个 positive prompt
    • 需要注意的是,SAM 需要一个 positive prompt 以确定分割的对象,所以传入 SAM 的第一个 point prompt 必须为 positive prompt
  • 由公式 P = a r g m a x ( i , j ) ( d [ ( i , j ) , ( k , l ) ] ) \mathcal{P} = argmax_{(i, j)} (d[(i, j), (k, l)]) P=argmax(i,j)(d[(i,j),(k,l)]) 得到一组符合上述条件的点
  • 从上述符合条件的点集中选择随机选择一个符合条件的点,作为第一个输入
  • 将 point prompt 的坐标输入 SAM 得到预测分数最高的一个 mask Y 1 Y_1 Y1
  • 获得预测错误的区域: E 1 = Y 1 ∪ M − Y 1 ∩ M E_1 = Y_1 \cup M - Y_1 \cap M E1=Y1MY1M
    • Y 1 ∪ M Y_1 \cup M Y1M:预测的 mask 在原掩膜中覆盖的面积与前景点集的并集
    • Y 1 ∩ M Y_1 \cap M Y1M:预测的 mask 在原掩膜中覆盖的面积与前景点集的交集
    • E 1 E_1 E1:预测的 mask 和前景点集中没有被正确预测的部分,即预测错误区域
  • 随后的 point prompt 是距离迭代更新误差区域 E n E_n En 边界最远的点
    • SAM 一次性只能接受一个 point prompt,并返回一个预测 mask,即多个 point prompt 是在每次 SAM 输出的预测 mask 的基础上迭代输入的过程
    • 每次迭代得到一个误差区域 E n E_n En 边界最远的点集
    • 从点集中随机选取一个点作为输入
    • 获得 SAM 的预测输出
    • 更新预测误差区域
  • 得到最后的预测结果

总结

本文主要是在 SAM 提出的基础上,对 SAM 能否在医学图像分割中应用做了一次评测,具体的数据集和结果可以参考原论文中的结果图。

这篇笔记侧重对 SAM 之后在医学图像分割中的应用以及微调的学习与理解,同时分析了本文提出的具有较高效率、比较模拟用户选点习惯的 point prompt 生成算法做了讨论与记录。

但同时,本文并没有研究 3D 的数据集,但 3D 数据在医学图像领域中十分常见,这也将会是之后研究的一个重点方向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/38216.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【golang中的切片的相关知识点】[ ] slice

golang-切片 切片的定义和初始化切片的内存分析切片的操作获取长度和容量追加元素复制切片 切片的遍历切片的特性总结 Golang中的切片是一种灵活且强大的数据结构,它可以动态地增长和缩小。切片是基于数组的抽象,它提供了更方便的操作和更灵活的内存管理…

前端实现 DIV 高度只有100px,宽度只有100px ,我要在这个DIV放一个宽度200的DIV,左右拉动滚动条显示

<!DOCTYPE html> <html> <head><title>点击监听两组span标签</title><style>.outer-div {width: 100px;height: 100px;overflow-x: scroll;background-color: #abc1ee;}.inner-div {width: 200px;}/* 自定义滚动条样式 */.outer-div::-web…

MYSQL多表查询

创建学生表和分数表并插入相应数据 mysql> INSERT INTO student VALUES( 901,张老大, 男,1985,计算机系, 北京市海淀区); mysql> INSERT INTO student VALUES( 902,张老二, 男,1986,中文系, 北京市昌平区); mysql> INSERT INTO student VALUES( 903,张三, 女,1990,中…

我是怎么把win11一步一步变成Mac的

目录 【三指拖动】 【空格预览】 【切换Ctrl和Alt】 【使用Linux命令】 【其它】 之前很长一段时间在MacBook上面开发习惯了&#xff0c;然后因为一些原因现在换到了windows上面&#xff0c;不管是使用上还是系统上都很不习惯&#xff0c;因此做了一些改造&#xff0c;…

C++-把字符串转换成整数

题目来源&#xff1a;牛客网 题目描述&#xff1a; 将一个字符串转换成一个整数&#xff0c;要求不能使用字符串转换整数的库函数。 数值为 0 或者字符串不是一个合法的数值则返回 0 数据范围&#xff1a;字符串长度满足 0≤n≤100 进阶&#xff1a;空间复杂度 O(1) O(1) &…

APP外包开发原生和H5的对比

在开发APP的技术中&#xff0c;除了原生开发外也可以使用H5框架来开发。原生开发的特点是质量高&#xff0c;用户体验更好&#xff0c;但成本高&#xff0c;适用于对质量要求高的APP项目。H5框架的特点是通用性较强&#xff0c;对开发人员的要求相对较低&#xff0c;成本也低&a…

Spring Boot中的@EnableWebSocketMessageBroker注解是什么,原理,以及如何使用

Spring Boot中的EnableWebSocketMessageBroker注解是什么&#xff0c;原理&#xff0c;以及如何使用 WebSocket是一种在Web浏览器和Web服务器之间进行双向通信的技术。在传统的HTTP通信中&#xff0c;客户端向服务器发送请求&#xff0c;服务器响应请求&#xff0c;然后关闭连…

ABAP调用阿里云接口-短信服务-HTTP协议及签名(abap版本)<转载>

原文链接&#xff1a;https://blog.csdn.net/xiefireworks/article/details/113037650 阿里云接口文档请参考官网地址 https://help.aliyun.com/document_detail/59210.html?spm5176.8195934.J_5834642020.5.11ba4378DLVi4O 此处仅介绍使用ABAP完成阿里云短信服务签名请求的…

感知网络安全态势是什么?感知网络安全态势如何实施

网络安全是当今社会中一个非常重要的话题。随着互联网的普及和信息技术的发展&#xff0c;网络安全问题日益突出。为了有效应对各种网络威胁和攻击&#xff0c;网络安全态势感知成为了一种关键的技术手段。 网络安全态势感知的定义 网络安全态势感知是指通过对网络环境中的各种…

如何升级iOS17/iPadOS17公测版?iOS17公测版升级教程

苹果官方发布了iOS 17/iPadOS 17系统首个公测版更新&#xff0c;其版本号及更新内容与iOS 17 beta 3一致&#xff0c;版本号为21A5277j。 对于想升级iOS 17/iPadOS 17 公测版的用户&#xff0c;可以参考本教程进行操作。 升级注意事项&#xff1a; 1. 为防止意外情况&#xf…

MySql数据库的学习

MySQL 是最流行的关系型数据库管理系统&#xff0c;在 WEB 应用方面 MySQL 是最好的 RDBMS&#xff08;Relational Database Management System&#xff1a;关系数据库管理系统&#xff09;应用软件之一。 参考博客&#xff1a;MySQL 教程 | 菜鸟教程 (runoob.com) 一、什么是…

Latex合并多个公式且居中

要求&#xff1a;1&#xff1a;多个公式居中对齐 2&#xff1a;多个公式组合只有一个编号。 结果类似于这一种&#xff1a; 代码&#xff1a;使用gathered可以。 \begin{equation}\begin{gathered}\vspace{0.6em}{E} {A(I)}\\\vspace{0.6em}{F} Conv(\sum_{i1}^3{M_i}) \\{…

微软开源了一个 助力开发LLM 加持的应用的 工具包 semantic-kernel

在首席执行官萨蒂亚纳德拉&#xff08;Satya Nadella&#xff09;的支持下&#xff0c;微软似乎正在迅速转变为一家以人工智能为中心的公司。最近微软的众多产品线都采用GPT-4加持&#xff0c;从Microsoft 365等商业产品到“新必应”搜索引擎&#xff0c;再到低代码/无代码Powe…

【RocketMQ】005-Docker 部署 RocketMQ

【RocketMQ】005-Docker 部署 RocketMQ 文章目录 【RocketMQ】005-Docker 部署 RocketMQ一、部署1、拉取镜像MQ 镜像可视化平台镜像 2、创建挂载目录创建 nameserver 挂载目录创建 broker 目录创建 broker 配置文件目录 3、编辑配置文件4、启动服务启动 nameserver启动 broker启…

Electron + vue 搭建桌面客户端

下载Electron 压缩包&#xff0c;放到本地 Electron 压缩包下载地址 cd ~/Library/Caches/electron

9.Ceph部署

文章目录 Ceph部署前期环境准备实验部署软件安装部署Ceph集群部署mon节点部署OSD存储节点部署mgr节点开启监控模块管理pool Ceph部署 前期环境准备 主机名public网络cluster网络角色admin192.168.242.69admin(管理节点)node01192.168.242.66192.168.242.100.11mon、mgr、osdn…

【uniapp开发小程序】设置全屏的开屏广告、长按识别图片、点击跳转通话 拨打电话

设置全屏的开屏广告需求实现 效果图&#xff1a; 点击跳转其他小程序&#xff1a; uni.navigateToMiniProgram() 官方文档&#xff1a;uni.navigateToMiniProgram(OBJECT) | uni-app官网 // 示例代码 uni.navigateToMiniProgram({appId: ,path: pages/index/index?id123,ext…

Kafka第二课-代码实战、参数配置详解、设计原理详解

一、代码实战 一、普通java程序实战 引入依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.4.1</version></dependency><dependency>&l…

基于 jmeter 和 shell 的接口性能自动化

目录 前言&#xff1a; 1. 总体需求 2. 实现流程 3.准备工作 4.具体实现 4.1 用例执行 主流程脚本 4.2 服务器监控 监控脚本&#xff1a; 服务器监控脚本 4.3 生成 html 报告 html 样式表 发邮件脚本 前言&#xff1a; 基于JMeter和Shell的接口性能自动化是一种有…

一起学SF框架系列5.7-模块Beans-BeanDefinition使用

SF如何使用BeanDefinition达成其目标IoC&#xff0c;我们通过跟踪BeanDefinition使用来了解。 使用起点 跟踪SF初始化过程&#xff0c;第一个点在&#xff1a;DefaultListableBeanFactory.preInstantiateSingletons。如下图&#xff1a; RootBeanDefinition是运行时Spring B…