【CVPR24】One-Prompt to Segment All Medical Images

news/2024/12/5 18:33:32/

论文介绍

论文: One-Prompt to Segment All Medical Images

代码: https://github.com/KidsWithTokens/one-prompt

会议与年份:CVPR24f42356d44572ba9bc72684ebf48fc8d5.png

全文概述

本文介绍了一种新的医疗图像分割方法—One-Prompt Segmentation。传统的分割方法需要用户在推理阶段为每个样本提供提示或使用有标签的数据进行迁移学习,但这些方法都存在成本高、效果差等问题。而该方法将单个提示样本与多个任务相关联,通过一个前向传递就可以处理未见过的任务。作者在64个开源医学数据集上训练了单提示模型,并收集了超过3000个由临床医生标注的提示。实验结果表明,该方法在零样本分割方面表现优异,优于其他相关方法。代码和数据已在GitHub上发布。

全文贡献

  • 介绍了一种新颖的单提示分割方法,这是一种强大的但成本低的通用医学图像分割范式。

  • 提出了一种独特的One-Prompt Former模型来融合多个特征尺度上的提示模板特征和查询特征。

  • 设置了四种不同的提示类型以更好地引导特殊医疗目标,从而满足各种临床实践需求。

  • 收集了一个包含78个开源数据集的大规模集合用于训练和测试该模型,并且标注了超过3000个样本,其中包含了由医生提供的提示。

方法

One-Prompt Former主要由注意力块组成,其结构包含两个并行的分支:查询分支(处理查询图像特征)和模板分支(处理模板图像特征以及提示信息)。这两个分支协同工作,将提示信息有效地融入到查询图像的分割过程中。920ad482a9af73635ecb939a66a2c803.png

One-Prompt Former

One-Prompt Former块主要通过交叉注意力将查询分支和模版分支的特征进行融合。

对于查询分支,它接收来自编码器的多尺度查询图像特征作为查询(Query),并使用上一One-Prompt Former块的输出嵌入作为键(Key)和值(Value)。这个过程允许模型将查询图像的特征与之前处理过的特征进行对比,从而更好地理解和整合全局信息。

对于模版分支,则在开始加入了Promt-Parser模块,剩下的结构和查询分支一样。

Prompt-Parser

这一部分其实作者说的并不清晰,下图是Prompt-Parser代码中的的forward部分。下面说一下我的个人理解,如果有读者明白的话,可以评论区留言。前四行的意思大概是说,将讲过MLP后的模板图像、提示嵌入二者与查询图像相乘得到attention。第四行是说直接将查询图像与模板图像、提示嵌入相乘。第五行是说我这两个取个最大值。最后将最大值与模板图像、提示嵌入相乘得到要查询的区域。e7fc7e621d606442ebc385395942dfe0.png

实验分析

精度对比

edb8016929f83a1952e6a96af20b1422.png

可视化对比

7714cd7582aac4e9a610b8181e2d7ccd.jpeg

http://www.ppmy.cn/news/1551289.html

相关文章

Linux网络配置与管理

课程知识点 1、主机名的配置 2、网卡信息的配置 3、常用网络命令与网络故障排查 技术目标 掌握主机名与网卡信息的配置掌握常用网络命令的使用与网络故障排查的方法 课程内容 一、主机名的配置 1.1 配置文件 主机名保存在/etc/hostname文件中,可以通过查看…

【附录】Rust国内镜像设置

目录 前言 (1)设置环境变量 (2)安装Rust (3)设置crates镜像 前言 本节课来介绍下如何在国内高速下载安装Rust和Rust依赖,由于网络原因,我们在安装Rust和下载项目依赖时都很慢&am…

js-显示转换(强制转换)与隐式转换,==与===区别

1.显示转换(强制转换)与隐式转换 1.1显示转换 常见的JavaScript强制转换示例。 (1) 一元加号、一元减号- 值是布尔值,true将被转换为1,false将被转换为0。 let a "123"; let b a; // b的值为123,类型为Nu…

OpenAI 是怎么“压力测试”大型语言模型的?

OpenAI 再次稍微揭开了它的安全测试流程的面纱。上个月,他们分享了一项调查的结果,这项调查研究了 ChatGPT 在根据用户名字生成性别或种族偏见的几率。现在,他们又发布了两篇论文,详细描述了如何对大型语言模型进行“压力测试”&a…

Android 编译和使用libheif

项目中需要使用libheif,libde265,libyuv。一下是相应的cmakelist.txt。这里直接使用了静态库。 里面涉及到c包的链接,需要stdc。 ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/liblibde265.a这个路径由于操作过程中copy出现问题,多了一层路径&…

用户密码存储方式的发展史

文章目录 一、裸奔时代——纯文本存储二、远古时代:加密存储三、近代:单向哈希算法四、哈希加盐:穿上迷彩服两种加盐做法1. 随机生成盐并保存2. 固定算法生成盐并且不保存 五、21世纪:自适应单项函数未来趋势 一、裸奔时代——纯文…

嵌入式硬件设计:从概念到实现的全流程

嵌入式硬件设计是现代电子技术中一个至关重要的领域,涉及从硬件架构设计到硬件调试的各个方面。它为我们日常生活中的各类智能设备、家电、工业控制系统等提供了强大的支持。本文将介绍嵌入式硬件设计的基本流程、关键技术、常用工具以及常见的挑战和解决方案&#…

linux c串口应用编程,参照golang里面的json.Marshal/json.Unmarshal

protocol.h代码&#xff1a; rootiZwz99zhkxxl5h6ecbm2xwZ:~/serial-ipc# cat protocol.h #ifndef __PROTOCOL_H__ #define __PROTOCOL_H__#include <stdint.h> #include <stdbool.h>enum PACKAGE_TYPE {TYPE_HEART_BEAT 0x01,TYPE_SOMKE 0x02, };typedef stru…