中文多模态医学大模型智能分析X光片,实现影像诊断,完成医生问诊多轮对话
1.背景介绍介绍
最近,通用领域的大语言模型 (LLM),例如 ChatGPT,在遵循指令和产生类似人类响应方面取得了显著的成功,这种成功间接促进了多模态大模型的研究和发展,如通用领域的多模态大模型MiniGPT-4、mPLUG-Owl、Multimodal-GPT和LLaVA ,然而,此类多模态大模型却很少出现在医学领域的研究中,阻碍了相关研究发展。visual-med-alpaca虽然在医学多模态大模型方面做出了一些很有成效的工作,然而其数据为英文诊断报告,不利于促进中文领域医学多模态大模型的研究发展。为此,我们开发了XrayGLM
以解决上述问题。XrayGLM
在医学影像诊断和多轮交互对话上显示出了非凡的潜力。
- 借助ChatGPT以及公开的数据集,我们构造了一个
X光影像-诊断报告
对的医学多模态数据集; - 我们将构建的中文胸部X光片诊断数据集在VisualGLM-6B进行微调训练,并开放了部分训练权重用于学术研究;
2.数据集
- MIMIC-CXR是一个公开可用的胸部X光片数据集,包括377,110张图像和227,827个相关报告。
- OpenI是一个来自印第安纳大学医院的胸部X光片数据集,包括6,459张图像和3,955个报告。
在上述工作中,报告信息都为非结构化的,不利于科学研究。为了生成合理的医学报告,我们对两个数据集进行了预处理,并最终得到了可以用于训练的英文报告。除此之外,为了更好的支持中文社区发展,借助ChatGPT的能力,我们将英文报告进行了中文翻译,并最终形成了可用于训练的数据集。
数据集 | 数量 | 下载链接 | 质量 |
---|---|---|---|
MIMIC-CXR-zh | - | - | - |
OpenI-zh | 6,423 | 诊疗报告(英文)、诊疗报告(中文) 、X光影像 | 低 |
OpenI-zh-plus | 6,423 | - | 高 |
3.项目快速时间
3.1.安装环境
#安装依赖
pip install -r requirements.txt
#国内换源安装依赖
pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt
此时默认会安装deepspeed
库(支持sat
库训练),此库对于模型推理并非必要,同时部分Windows
环境安装此库时会遇到问题。 如果想绕过deepspeed
安装,我们可以将命令改为:
#安装依赖
pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements_wo_ds.txt
#安装SwissArmyTransformer
pip install -i https://mirrors.aliyun.com/pypi/simple/ --no-deps "SwissArmyTransformer>=0.3.6"
3.2.模型推理
模型权重 | 下载链接 | 质量 | 微调方法 |
---|---|---|---|
checkpoints-XrayGLM-300 | https: //huggingface.co/wangrongsheng/XrayGLM-300 | 低 | LoRA |
checkpoints-XrayGLM-3000 | https: //huggingface.co/wangrongsheng/XrayGLM-3000 | 低 | LoRA |
checkpoints-XrayGLM-xxx-plus | - | 高 | - |
3.2.1 CLI推理
python cli_demo.py --from_pretrained checkpoints/checkpoints-XrayGLM-3000 --prompt_zh '详细描述这张胸部X光片的诊断结果'
更多参数
如果您是Google Colab Pro会员,请可以直接在Colab中运行XrayGLM:https://colab.research.google.com/drive/1aR8SSaseyprsxnor-gDyMo96V9jD7iGP?usp=sharing
3.2.2 WebUI运行
python web_demo.py --from_pretrained checkpoints/checkpoints-XrayGLM-3000
此时访问http://127.0.0.1:7860
即可
3.3模型训练(复现XrayGLM)
硬件资源
实验在A100 (4X, 80GB)上进行
- (1)准备诊疗报告(中文)和X光影像在
data/Xray
文件夹下; - (2)开始训练:
- (1)准备诊疗报告(中文)和X光影像在
#设置CUDA变量,主要是为了解决有时候直接训练而出现无法正确加载到显卡问题
export CUDA_VISIBLE_DEVICES=0,1,2,3
#开始训练
bash finetune_XrayGLM.sh
这里的复现过程非常简单,主要是很多过程我们都为大家准备好了,大家可以随时复现一个自己的XrayGLM
。
3.4.模型训练(通用)
4. 效果展示
- 以下效果来自于低质量的数据训练和权重
4.1 影像诊断:
X光影像 | 诊疗报告(医生) | XrayGLM |
---|---|---|
根据X射线图像,心脏大小正常,肺部看起来很清晰。已经排除了肺炎、积液、水肿、气胸、腺病、结节或肿块的存在。该发现表明一切正常。换句话说,总体印象是胸部正常。 | X光片显示,心脏大小正常。肺部没有气胸或胸腔积液的证据。骨骼结构看起来没有任何异常。总的来说,X光片表明没有发现急性心肺疾病的迹象。 | |
X光图片显示没有扭曲的区域、可疑的骨质不透明度或胸腺积液。心脏大小轻微增大,但非常稳定。此外,没有气胸的证据,肺野也正常。总体来说,X光片显示没有急性心脏异常,但要注意轻微的心脏扩大。 | X光片显示,心脏大小正常。肺部和纵隔轮廓清晰,没有气胸或胸腔积液的证据。骨骼结构完整,没有任何急性异常。 | |
心影形态在正常范围内。没有急性骨质异常。有可能出现没有明显的吸水或肺实质状况的线索。没有大面积积液或气胸。有可能怀疑其有误吸或肺实质问题。为了确诊和治疗,可能需要进行适当的影像学随访。 | 心脏大小正常,肺部和纵隔轮廓清晰。没有急性异常或活动受限的证据。没有任何明显的气胸、胸腔积液或肺不张的迹象。此外,也没有发现任何局灶性骨质异常或其他急性疾病。 |
4.2 多轮对话:
X光影像 | 诊疗报告(医生) |
---|---|
右侧主动脉突出观察到。心脏大小正常。胸部未发现明显的肺气肿、胸膜积液或可疑的肺部病变。报告指出已知右侧主动脉情况正常。 |
>> X光影像路径:./data/Xray/861_1.png
>> 用户:这是一张什么图?
>> XrayGLM:这张图片显示的是一张肺部检查的X光片。
>> 用户:请描述这张胸部X光片的诊断结果
>> XrayGLM:心脏大小正常,肺部清晰。没有急性心肺疾病的证据。
>> 用户:是否存在肺气肿?
>> XrayGLM:没有肺气肿。心脏大小正常,肺部清晰。没有发现急性心肺疾病的证据。
>> 用户:平时饮食该注意什么?
>> XrayGLM:饮食应该健康,均衡。建议增加蛋白质的摄入量,因为蛋白质有助于维持肌肉和骨骼的健康。多食用蔬菜、水果、全谷物以及健康的脂肪来源如橄榄油、鱼类等可以帮助获得足够的维生素和矿物质。此外,避免过度饮酒或吸烟,这些习惯可能会对心脏健康产生负面影响。
5.总结
- 模型的能力更多来源于数据的支持,
OpenI-zh
作为微调数据集,其数据量足以支持研究,在更广泛的任务和性能表现上,我们认为在大规模数据集上预训练并在高质量少量数据集上微调是一种可行的方案; - 普遍意义的理解上,视觉多模态模型=视觉模型+语言模型。除了需要关注视觉模型信息与语言模型输出的搭配外,还需要额外关注到语言模型的加强,在人机的对话中,尤其是医疗语言模型的问答上,除了专业的医疗问题回答,带有人文情怀的有温度的回答更应该是我们追寻的目标。
- 高精度的模型永远打不过大参数的模型,如果在6B模型和13B模型上选择微调,请在资源充足情况下选择13B的大参数模型;
项目致谢
- VisualGLM-6B为我们提供了基础的代码参考和实现;
- MiniGPT-4为我们这个项目提供了研发思路;
- ChatGPT生成了高质量的中文版X光检查报告以支持XrayGLM训练;
- gpt_academic为文档翻译提供了多线程加速;
- MedCLIP 、BLIP2、XrayGPT 等工作也有重大的
项目码源见文末
更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。