ICCV2023 | PTUnifier+:通过Soft Prompts(软提示)统一医学视觉语言预训练

论文标题:Towards Unifying Medical Vision-and-Language Pre-training via Soft Prompts
代码:https://github.com/zhjohnchan/ptunifier
Fusion-encoder type和Dual-encoder type。前者在多模态任务中具有优势,因为模态之间有充分的相互作用; 后者由于具有单模态编码能力,擅长单模态和跨模态任务。该论文PTUnifier统一这两种类型(这里的统一包括模型和输入模态)。
一、IDea
医学数据通常是多模态的,视觉数据(例如,放射照相、磁共振成像和计算机断层扫描)和文本数据(例如,放射学报告和医学文本)。在日常临床实践中成对收集的。医学视觉和语言预训练(MedVLP)旨在从大规模医学图像-文本对中学习通用表示,然后将其迁移到各种医疗任务中,有助于解决医疗领域的数据稀缺问题。

由于缺乏单模态编码,融合编码器不能有效地完成单模态任务和跨模态任务,而双编码器由于模态之间的交互不足,在多模态任务中表现不佳,如图1(a)所示。
二、Model(Bridging the Gap)
模型预训练可以表示为:

1、Unifying Inputs via Prompts
通过soft prompts 统一输入,以执行不同类型的任务。工作机制类似于DETR中的查询向量。
Compatibility using Soft Prompts

Scalability of Soft Prompts
构建了一个视觉/文本提示池,而不是 static prompts。prompt的选择取决于input embedding。定义一个视觉提示池V和一个文本提示池T。给定 visual embedding sequence Xv输入或 its textual embedding sequence Xl输入,进行池化操作(例如,平均/最大池化),得到现有模态的查询向量(记为qv或ql),即qv = pooling(Xv)和ql = pooling(Xl)。为了得到缺失模态的prompt,根据查询向量与缺失模态池中所有prompts的相似度得分来选择prompt:

Intuitive Explaination:将可视提示池视为一个查询库,其中存储了用于在缺少一个模态时提取单模态特征的query。
Unifying Multiple Pre-training Objectives
Masked Language Modeling (MLM)

Image-Text Matching (ITM)

Image-Text Contrast (ITC)

三、The Model Architecture
首先将视觉和文本标记映射到嵌入空间(Xv和Xl),这些带有或不带有prompts的token embedding将由相同的backbone Mθ共同处理。
1、Visual and Textual Embeddings
Visual:

Textual:

2、The Backbone Model
该模型可以是一个有效模型(包括单模态编码器和多模态融合模块),也可以是一个有效模型(即单个Transformer模型),特征提取后:

四、Experimental Settings
1、Pre-training Datasets
ROCO、MedICaT、MIMIC-CXR
2、Results
Main Results
现有的研究仅针对单一任务设计,而论文方法通常针对所有视觉和/或语言相关的任务,也就是说,没有针对特定任务进行任何量身定制的调整。

Ablation Study
融合编码器(即MLM和ITM)的目标模型(即ID 3和5)获得比没有它们的其他模型更强大的多模态表征。
双编码器的图像-文本对比学习有助于模型(即id4和id5)学习单模态图像表征和跨模态表征,并且使用ITC目标预训练的模型优于未使用ITC目标预训练的模型。
ITC目标并没有提高单模态文本分类任务的性能。
同时实现两类目标可以促进模型(即ID 5)在所有任务中获得最佳性能,从而证实了融合编码器和双编码器统一研究方向的可行性。

Effects of Soft Prompt
使用不同池大小(范围从0到2048)进行预训练。

(i)虽然池大小的扩大导致参数数量的增加,但与总参数(350M)相比,引入的参数并不太多(少于0.5%);
(ii)所有有Soft Prompt Pools的模型都比没有Soft Prompt Pools(即池大小为0)的模型收敛性更好(收敛损失更小),证明了引入提示池的有效性;
(iii)发现设置合适的池大小很重要,当池大小设置为1024时,模型收敛效果最好。这可能是由于池大小控制了在预训练过程中存储的查询信息的数量,而具有大容量的大池可能会“吸收”预训练语料库中的太多噪声。
论文中有意思的是竟然做ITC预训练任务时,把两个模态拆开,分别在soft prompts pools里面找其对应的模态(visual->textual, textual->visual),这样在缺失一个模态的输入的时候,直接在pools中找即可。但是应该有个问题存在,pools中的向量就能准确代表缺失的模态吗?其实在小领域还好,但是在通用领域会不会受限(当然可以通过调节pools size来缓解)?是不是可以像VQ-VAE中使用向量字典的方式来组成缺失的目标对象,而不是直接计算相似度?
相关文章:
ICCV2023 | PTUnifier+:通过Soft Prompts(软提示)统一医学视觉语言预训练
论文标题:Towards Unifying Medical Vision-and-Language Pre-training via Soft Prompts 代码:https://github.com/zhjohnchan/ptunifier Fusion-encoder type和Dual-encoder type。前者在多模态任务中具有优势,因为模态之间有充分的相互…...
代码随想录 Leetcode459. 重复的子字符串(KMP算法)
题目: 代码(首刷看解析 KMP算法 2024年1月18日): class Solution { public:void getNext(string& s,vector<int>& next) {int j 0;next[0] j;for (int i 1; i < s.size(); i) {while (j > 0 && s…...
Rust之构建命令行程序(三):重构改进模块化和错误处理
开发环境 Windows 10Rust 1.74.1 VS Code 1.85.1 项目工程 这次创建了新的工程minigrep. 重构改进模块化和错误处理 为了改进我们的程序,我们将修复与程序结构及其处理潜在错误的方式有关的四个问题。首先,我们的main函数现在执行两项任务:解析参数和…...
广和通AI解决方案“智”赋室外机器人迈向新天地!
大模型趋势下,行业机器人将具备更完善的交互与自主能力,逐步迈向AI 2.0时代,成为人工智能技术全面爆发的重要基础。随着行业智能化,更多机器人应用将从“室内”走向“室外”,承担更多高风险、高智能工作。复杂的室外环…...
C++I/O流——(4)格式化输入/输出(第二节)
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言📝 含泪播种的人一定能含笑收获ÿ…...
九、K8S-label和label Selector
label和label selector 标签和标签选择器 1、label 标签: 一个label就是一个key/value对 label 特性: label可以被附加到各种资源对象上一个资源对象可以定义任意数量的label同一个label可以被添加到任意数量的资源上 2、label selector 标签选择器 L…...
【.NET Core】 多线程之(Thread)详解
【.NET Core】 多线程之(Thread)详解 文章目录 【.NET Core】 多线程之(Thread)详解一、概述二、线程的创建和使用2.1 ThreadStart用于无返回值,无参数的方法2.2 ParameterizedThreadStart:用于带参数的方法 三、线程的…...
苹果笔记本 macbook 在 office word 中使用 mathtype 的方法
前言 想在 MacBook 中使用 mathtype,去搜索,去 Apple Store 下载也发现没有 解决方法 打开 office Word 的「插入」中的「获取加载项」、「我的加载项」。 在应用商店中下载,需要登录自己的微软账号。 加载成功后就可以使用了。 注意 和…...
课表排课小程序怎么制作?多少钱?
在当今的数字化时代,无论是购物、支付、点餐,还是工作、学习,都离不开各种各样的微信小程序。其中,课表排课小程序就是许多教育机构和学校必不可少的工具。那么课表排课小程序怎么制作呢?又需要多少钱呢? …...
C语言总结十三:程序环境和预处理详细总结
了解程序的运行环境可以让我们更加清楚的程序的底层运行的每一个步骤和过程,做到心中有数,预处理阶段是在预编译阶段完成,掌握常用的预处理命令语法,可以让我们正确的使用预处理命令,从而提高代码的开发能力和阅读别人…...
tinyxml2
使用tinyxml2,得知道一些xml基础 xml tutorial--菜鸟 tinyxml2类对象 链接 结构 XMLNode 什么是节点 节点:元素、声明、文本、注释等。 XMLDocument xml文档(文件)对象。 作用: 加载xml文件, tinyxml2作用 先定义两个宏 …...
What is `@Controller` does?
Controller 是SpringMVC注解,标记一个类作为Web控制器(Controller),负责处理HTTP请求并返回响应结果 在SpringMVC中,控制器类的主要职责是: 1、接收来自客户端的HTTP请求 2、调用服务层或其他业务逻辑组件…...
新版AndroidStudio dependencyResolutionManagement出错
在新版AndroidStudio中想像使用4.2版本或者4.3版本的AndroidStudio来构造项目?那下面这些坑我们就需要来避免了,否则会出各种各样的问题。 一.我们先来看看新旧两个版本的不同。 1.jdk版本的不同 新版默认是jdk17 旧版默认是jdk8 所以在新版AndroidSt…...
第三天业务题
3-1 你们的项目是如何进行参数校验的 在我们的项目中,通常使用以下2种方式进行参数校验: 1.手动校验:在方法内部,我们可以手动编写代码来对参数进行校验。例如,使用条件判断语句(if-else)来检…...
nestjs 装饰器
1、装饰器定义 装饰器是一种特殊的类型声明,它可以附加在类、方法、属性、参数上边 需开启tsconfig.json中 "experimentalDecorators":true 生成tsconfig.json文件 tsc -init 2、类装饰器 // 类装饰器 主要是通过符号添加装饰器 // 装饰器会自动把cl…...
一款开源且不限制大小可以设置过期时间的支持分享的的开源文件共享系统picoshare 部署教程
1.拉取镜像 2.部署 创建目录 mkdir -p /opt/picoshare/data 部署 其中:"somesecretpass"是密码 docker run \--env "PORT4001" \--env "PS_SHARED_SECRETsomesecretpass" \--publish 10005:4001/tcp \--volume "/opt/picoshare/data:…...
eBPF运行时安全
引言 eBPF作为当前linux系统上最为炙手可热的技术,通常被用于网络流量过滤和分析、系统调用跟踪、性能优化、安全监控,当下比较知名的项目有Cilium、Falco等。 Cilium 是一个开源的容器网络和安全性项目,致力于提供高效的容器通信和强大的安…...
Linux 系统中常见的命令,它们用于执行各种任务,包括文件和目录管理、系统信息查看、用户管理等
以下是一些在 Linux 系统中常见的命令,它们用于执行各种任务,包括文件和目录管理、系统信息查看、用户管理等。这里列举了一些基础的命令: 文件和目录管理: ls: 列出目录内容。 ls cd: 切换当前目录。 cd /path/to/directory …...
AutoEventWireup详解
AutoEventWireup详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,让我们深入探讨.NET开发中一个神奇而强大的特性——AutoEventWireupÿ…...
SAP ABAP 自定义流水号 编号范围
前言 在开发中经常会遇到生成编号的需求(如接口报文ID,自建表数据主键等);为此,SAP提供了自动编号工具,能根用户需求设定并自动生成一组唯一的编号。 编号范围对象的创建 1.进入事务代码SNRO,创建一个编号范围对象。…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
