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,创建一个编号范围对象。…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
