XrayGLM - 医学大模型

文章目录

    • 关于 XrayGLM
    • 研究背景
    • VisualGLM-6B


关于 XrayGLM

XrayGLM: 首个会看胸部X光片的中文多模态医学大模型 | The first Chinese Medical Multimodal Model that Chest Radiographs Summarization.
基于VisualGLM-6B 微调

  • github : https://github.com/WangRongsheng/XrayGLM

研究背景

MiniGPT-4 [1] 在500万全英文数据集(LAION+CC3M+CC12M+SBU)上预训练,并在3200多张高质量图像数 据描述上进行微调。

希望有一个原生支持中文预训练的多 模态模型来支持我们的一些工作

通用领域的多模态大模型风声水起,如MiniGPT-4,然而,此类多模态大模型却很少出现在医学领域的研 究中,阻碍了相关研究发展。

MedCLIP 提出了 X-ray 和配对报告的公开数据集。XrayGPT 基于 MiniGPT-4 的思路训练了一个X-ray的医学多模态模型。

OpenI 一份是来自印第安纳大学医院的胸部 X 光图 像数据集,包含 6,459 张图像和 3,955 份报告。


VisualGLM-6B

VisualGLM-6B [1] 是一个开源的,支持图像、中文和英文的多模态对话语言模型,语言模型基 于 ChatGLM-6B,具有 62 亿参数;

图像部分通 过训练 BLIP2-Qformer 构建起视觉模型与语言 模型的桥梁,整体模型共78亿参数。

VisualGLM-6B 依靠来自于 CogView 数据集的 30M高质量中文图文对,与300M经过筛选的 英文图文对进行预训练,中英文权重相同。该 训练方式较好地将视觉信息对齐到ChatGLM的 语义空间;之后的微调阶段,模型在长视觉问 答数据上训练,以生成符合人类偏好的答案。

XrayGLM基于VisualGLM-6B进行微调训练而来。借助ChatGPT构建了一个可用于支持中文训练的X-ray影像- 诊疗报告对。


XrayGLM微调实践

1、克隆XrayGLM repo:

git clone https://github.com/WangRongsheng/XrayGLM.git 

2、 安装依赖:

pip install -r requirements.txt
# 国内换源安装依赖
pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt

3、准备数据集:

./data/Xray/ 
├── 1000_1.png 
├── 1000_2.png 
├── ...
└── openi-zh.json

4、配置训练文件finetune_XrayGLM.sh
5、开启微调训练:

# 报错:CUDA out of memory. Tried to allocate 20.00 MiB (GPU 4; 3.82 GiB total capacity; 2.94 GiB already allocated; 6.62 MiB free; 3.06 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF# 设置CUDA变量,解决直接训练而出现无法正确加载到显卡问题 export CUDA_VISIBLE_DEVICES=0,1,2,3# 开始训练
bash finetune_XrayGLM.sh# 训练过程很快,四卡A100训练2-3个小时就可以完成!

6、CLI测试:

python cli_demo.py \
--from_pretrained checkpoints/$fintune_weights$ \ --prompt_zh '详细描述这张胸部X光片的诊断结果'
  • max_length: 总序列的最大长度
  • top_p
  • top_k
  • temperature:采样温度

7、WebUI测试:

python web_demo.py \
--from_pretrained checkpoints/$fintune_weights$

1、不同的prompt构建对于整个模型的回答是否有影响?

{"img": "fewshot-data/pig.png", "prompt": "这张图片的背景里有什么内容?", "label": "这张图片的背景是是虚化的。"},
{"img": "fewshot-data/meme.png", "prompt": "这张图片的背景里有什么内容?", "label": "这张图片的背景是蓝色的木质地板。"},{"img": "./data/Xray/162_1.png", "prompt": "通过这张胸部光照片,可以诊断出什么?", "label": "根据X射线图像,心脏大小正常,胃部看起来很清晰。已经排除了胃炎、积液、水肿、气胸、腰病、结节或胃块的存在。该发现表明一切正常。

2、大模型训练中,训练的精度(int4,int8,float16…)不是特别重要,模型的参数(6B、13B…) 很影响模型的性能。
3、如果数据多的话可以考虑增加训练的参数,目前的训练脚本只训练了2层lora:

https://github.com/THUDM/VisualGLM-6B/issues/61#issuecomment-1562856845


未来展望

  1. 模型的能力更多来源于数据的支持,OpenI-zh作为微调数据集,其数据量足以支持研究,在更广泛的 任务和性能表现上,我们认为在大规模数据集上预训练并在高质量少量数据集上微调是一种可行的方案;
  2. 普遍意义的理解上,视觉多模态模型=视觉模型+语言模型。除了需要关注视觉模型信息与语言模型输 出的搭配外,还需要额外关注到语言模型的加强,在人机的对话中,尤其是医疗语言模型的问答上,除 了专业的医疗问题回答,带有人文情怀的有温度的回答更应该是我们追寻的目标;

2023-10-03

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux基本指令(上)——“Linux”

各位CSDN的uu们好呀,今天,小雅兰的内容是Linux啦!!!主要是Linux的一些基本指令和Linux相关的基本概念(系统层面),下面,让我们进入Linux的世界吧!!…

微服务技术栈-Ribbon负载均衡和Nacos注册中心

文章目录 前言一、Ribbon负载均衡1.LoadBalancerInterceptor(负载均衡拦截器)2.负载均衡策略IRule 二、Nacos注册中心1.Nacos简介2.搭建Nacos注册中心3.服务分级存储模型4.环境隔离5.Nacos与Eureka的区别 总结 前言 在上面那个文章中介绍了微服务架构的…

在Windows电脑上使用多开器玩手机游戏的方法

在Windows电脑上使用多开器玩手机游戏已经成为了许多玩家的一种习惯。这种方式可以给玩家带来更好的游戏体验,以及更好的操作和掌控。下面是这种方式的详细方法。 第一步:安装多开器软件 首先,玩家需要在Windows电脑上安装一款多开器软件&a…

金融机构操作风险与内控合规的介绍

目录 一.前言 术语 二.功能设计 三.部分功能简介 流程管理 流程清单 流程详情 流程重检 流程重检反馈 风险与控制自我评估(RCSA) 评估计划管理 评估结果管理 关键风险指标(KRI) 指标库管理 基础数据项录入 指标监测…

EasyHttp - 网络请求,如斯优雅

官网 项目地址:Github博客地址:网络请求,如斯优雅 OkHttp 另外对 OkHttp 原理感兴趣的同学推荐你看以下源码分析文章 OkHttp 精讲:拦截器执行原理OkHttp 精讲:RetryAndFollowUpInterceptorOkHttp 精讲:…

Android Gilde获取网络图片显示保存路径并转化为bitmap

为某个按钮或者图片添加点击事件,然后:strImg为图片url地址 ,loadDialog只是个提示信息,可以不要这个参数。使用Glide的onResourceReady方法获取到bitmap对象: LoadDialog loadDialognew LoadDialog(); loadDialog.initShow(cont…

使用晶体管做布尔逻辑和逻辑门

目录 二进制,三进制,五进制 true,false表示0,1 早期计算机采用进制 布尔逻辑 三个基本操作:NOT,AND,OR 基础“真值表” NOT 如何实现? AND如何实现? OR如何实现? 图标表示…

Collagen

\ collagen XV/XVIII, Endostatin- angiogenesis inhibitor; c-type lectin 结构; TSP ( 含有 Laminin-G)

BIT.8_Linux 多线程

lesson35: 一、 1.OS调度的基本单位(0:13:5) 2.进程XXXX(0:14:15) a.进程的内核数据结构包含哪几个部分?(n个)(0:15&a…

程序员命令行 · 脚本 cheatsheet

1. 定时关机 每次晚上steam下游戏都想睡觉,steam有没有下载完成自动关机的选项。 我就根据剩余下载时间再cmd里输入命令: shutdown -s -t 600注意 “-s”是代表关闭计算机的意思,“-t 600”是代表设置在600秒后关闭计算机。 600 s 即 10 mi…

openGauss学习笔记-88 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用将磁盘表转换为MOT

文章目录 openGauss学习笔记-88 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用将磁盘表转换为MOT88.1 前置条件检查88.2 转换88.3 转换示例 openGauss学习笔记-88 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用将磁盘表转换为MOT …

MQTT 服务器搭建(基于mosquitto)

1、前言 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,…

Vue项目搭建图文详解教程

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 预备工作 请在本地创建文件夹用于存放Vue项目,例如:创建HelloWorld文件夹存放即将创建的Vue新项目。 创建Vue项目 首先,请在DOS中将目录…

八大排序源码(含优化)

文章目录 1、直接插入排序2、希尔排序3、选择排序4、冒泡排序5、堆排序6、快速排序快速排序递归实现霍尔法挖坑法前后指针法快速排序小区间优化 快速排序非递归实现 7、归并排序归并排序递归实现归并排序非递归 8、计数排序 大家好,我是纪宁,这篇文章是关…

多个线程启动 ,等待全部执行完毕再搜集数据

前几天在公司的项目上有个同事使用了多线程统计数据,当时出现了一个用户一直使用服务器首次登录信息作为查询信息。找了半天才发现,线程池资源同步了。后面手动将数据set进去的。 等待线程全部执行完毕,这里使用的是减法计数器,也…

[Machine Learning] Learning with Noisy Data

文章目录 Probabilistic Perspective of NoiseBias and VarianceRobustness among Surrogate Loss FunctionsNMF Probabilistic Perspective of Noise 假设数据来源于一个确定的函数,叠加了高斯噪声。我们有: y h ( x ) ϵ y h(x) \epsilon yh(x)ϵ…

[Realtek sdk-3.4.14b]RTL8197FH-VG 2.4G to WAN吞吐量低于60%的问题分析及解决方案

问题描述 RTL8197FH-VG 2.4G wifi to WAN吞吐量低于65%的标准,正常2T2R的wifi 300Mbps x 65% = 195Mbps,但是实际只能跑到160Mbps,这个时候CPU的idl已经为0,sirq占用率达到98%左右 网络拓扑 一台PC通过2.4G WiFi连接到RTL8197FH-VG,另外一台PC直接通过WAN口连接到RTL8197…

【pwn入门】用gdb实现第1个pwn

声明 本文是B站你想有多PWN学习的笔记&#xff0c;包含一些视频外的扩展知识。 有问题的源码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> char sh[]"/bin/sh"; int func(char *cmd){system(cmd);return 0; }int main(){char …

Spring boot接收zip包并获取其中excel文件的方法

1、问题 工作中遇到一个需求&#xff0c;接收一个zip包&#xff0c;读取其中的excel文件并处理&#xff0c;减少用户多次选择目录和文件的痛点&#xff0c;该zip包包含多级目录 2、依赖 需要用到apache的Workbook类来操作Excel&#xff0c;引入以下依赖 <dependency>&l…

C++中的四种强制类型转换符详解

前 言 C 既支持 C 风格的类型转换&#xff0c;又有自己风格的类型转换。C 风格的转换格式很简单&#xff0c;但是有不少缺点&#xff1a; 转换太过随意&#xff0c;可以在任意类型之间转换。你可以把一个指向 const 对象的指针转换成指向非 const 对象的指针&#xff0c;把一…