多模态——基于XrayGLM的X光片诊断的多模态大模型

0.引言

近年来,通用领域的大型语言模型(LLM),如ChatGPT,已在遵循指令和生成类似人类的响应方面取得了显著成就。这些成就不仅推动了多模态大模型研究的热潮,也催生了如MiniGPT-4、mPLUG-Owl、Multimodal-GPT和LLaVA等多模态大模型的诞生。然而,在医学领域,尤其是针对中文医学数据的研究,多模态大模型的发展相对滞后,这在一定程度上限制了该领域研究的深度和广度。

尽管模型如visual-med-alpaca在医学多模态大模型方面取得了一定的进展,但其使用的英文诊断报告数据限制了其在中文医学领域的应用和推广。为了解决这一问题,我们开发了XrayGLM,旨在填补中文医学多模态大模型研究的空白,并推动相关技术的发展。

XrayGLM在医学影像诊断和多轮交互对话方面展现出了巨大的潜力。通过利用先进的深度学习技术和大量的中文医学影像数据,XrayGLM不仅能够准确解读医学影像,还能与用户进行有效的多轮对话,提供更加个性化和精准的医疗建议。这一创新不仅有助于提高医疗服务的效率和质量,也为医学研究和实践开辟了新的可能性。

XrayGLM的开发是医学人工智能领域的重要一步,它标志着我们向实现智能化、个性化医疗服务的目标又迈进了一步。随着技术的不断进步和数据集的日益丰富,我们有理由相信,XrayGLM将在未来发挥更加重要的作用,为医学领域带来更多的创新和价值。

1.XrayGLM

1.1 XrayGLM的潜力

XrayGLM作为一个专门分析X光片的多模态大模型,其核心价值在于能够快速、准确地辅助医生进行诊断。通过上传X光片,模型能够自动解读并给出诊断结果,这无疑将极大提高诊断效率,减轻医生的工作负担,同时让病人不必长时间等待诊断结果。

1.2 当前的限制

尽管XrayGLM的演示效果令人印象深刻,但它目前还只是一个演示(Demo),不能直接用于实际诊断。主要问题在于:

  1. 过拟合:模型在训练时使用的测试数据集和训练数据集是同一套数据,这导致模型可能在训练集上表现良好,但在新的、未见过的数据上表现不佳。
  2. 缺乏专业评估:模型的诊断结果尚未经过专业医生的评估和验证,因此其准确性和可靠性还有待进一步确认。

1.3 未来展望

尽管存在上述限制,但XrayGLM的设计理念是非常前瞻的。未来,随着技术的不断进步和数据集的不断扩大,这类模型有望成为医生的得力助手,提高诊断的效率和准确性。

2.环境安装

2.1 GPU环境

要本地部署AnomalyGPT 需要用到GPU加速,GPU的显存要大于等于8G,我这里部署的环境是系统是win10,GPU是3090ti 24G显存,cuda版本是11.8,cudnn版本是8.9。
在这里插入图片描述
在这里插入图片描述

2.2 创建环境

# 创建并配置环境依赖
conda create -n agpt python=3.10
conda activate xglm

2.3 下载源码

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

2.4 安装依赖

2.4.1 pytorch

这里pytorch建议单独安装,可以找到cuda对应的版本进行安装:

conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.8 -c pytorch -c nvidia

2.4.2 安装deepspeed

官方给的环境默认会安装deepspeed库(支持sat库训练),此库对于模型推理并非必要,同时部分Windows环境安装此库的某些版本时会遇到问题。 这里可以使用deepspeed 0.3.16这个版本:

pip install deepspeed==0.3.16

2.4.3 安装requirements.txt文件内其他依赖

打开源码里面的requirements_wo_ds.txt文件,把torch和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.模型推理

3.1 模型下载

可以从官员提供的链接下载模型:https://huggingface.co/wangrongsheng/XrayGLM-3000/tree/main :
在这里插入图片描述
在这里插入图片描述
放到指定目录:
在这里插入图片描述

3.2 模型推理

3.2.1 命令行推理

python cli_demo.py --from_pretrained checkpoints/checkpoints-XrayGLM-3000 --prompt_zh '详细描述这张胸部X光片的诊断结果'

在这里插入图片描述

3.2.2WebUI运行

python web_demo.py --from_pretrained checkpoints/checkpoints-XrayGLM-3000

在这里插入图片描述

3.3 官方示例

在这里插入图片描述
在这里插入图片描述

4.报错解决

4.1 torch._six

主要原因是因为 torch 升级到2.0之后,这个api不能用了,以下是解决方法,将from torch._six import inf调整为下面

from torch import inf

在这里插入图片描述

from torch._six import inf
ModuleNotFoundError: No module named ‘torch._six’

在这里插入图片描述
在这里插入图片描述

4.2 web ui报端口问题

在这里插入图片描述

ValueError: When localhost is not accessible, a shareable link must be created. Please set share=True or check your proxy settings to allow access to localhost.

在web_demo.py添加前面加这两行代码:

import os
os.environ["no_proxy"] = "localhost,127.0.0.1,::1"

然后gradio的版本尽量是3.50.0。

4.3 依赖

下面是我部署成功完全依赖:

aiofiles                  23.2.1
aiohappyeyeballs          2.4.0
aiohttp                   3.10.5
aiosignal                 1.3.1
altair                    5.4.1
annotated-types           0.7.0
anyio                     4.4.0
async-timeout             4.0.3
attrs                     24.2.0
bitsandbytes              0.39.0
boto3                     1.35.24
botocore                  1.35.24
braceexpand               0.1.7
Brotli                    1.0.9
certifi                   2024.8.30
charset-normalizer        3.3.2
click                     8.1.7
contourpy                 1.3.0
cpm-kernels               1.0.11
cycler                    0.12.1
datasets                  3.0.0
deepspeed                 0.3.16
dill                      0.3.8
docker-pycreds            0.4.0
einops                    0.8.0
exceptiongroup            1.2.2
fastapi                   0.115.0
ffmpy                     0.4.0
filelock                  3.13.1
fonttools                 4.53.1
frozenlist                1.4.1
fsspec                    2024.6.1
gitdb                     4.0.11
GitPython                 3.1.43
gmpy2                     2.1.2
gradio                    3.50.0
gradio_client             0.6.1
h11                       0.14.0
hjson                     3.1.0
httpcore                  1.0.5
httpx                     0.27.2
huggingface-hub           0.25.0
idna                      3.7
importlib_resources       6.4.5
Jinja2                    3.1.4
jmespath                  1.0.1
jsonschema                4.23.0
jsonschema-specifications 2023.12.1
kiwisolver                1.4.7
latex2mathml              3.77.0
Markdown                  3.7
markdown-it-py            3.0.0
MarkupSafe                2.1.3
matplotlib                3.9.2
mdtex2html                1.3.0
mdurl                     0.1.2
mkl_fft                   1.3.10
mkl_random                1.2.7
mkl-service               2.4.0
mpmath                    1.3.0
multidict                 6.1.0
multiprocess              0.70.16
narwhals                  1.8.2
networkx                  3.2.1
ninja                     1.11.1.1
numpy                     1.26.4
nvidia-cublas-cu12        12.1.3.1
nvidia-cuda-cupti-cu12    12.1.105
nvidia-cuda-nvrtc-cu12    12.1.105
nvidia-cuda-runtime-cu12  12.1.105
nvidia-cudnn-cu12         9.1.0.70
nvidia-cufft-cu12         11.0.2.54
nvidia-curand-cu12        10.3.2.106
nvidia-cusolver-cu12      11.4.5.107
nvidia-cusparse-cu12      12.1.0.106
nvidia-nccl-cu12          2.20.5
nvidia-nvjitlink-cu12     12.6.68
nvidia-nvtx-cu12          12.1.105
orjson                    3.10.7
packaging                 24.1
pandas                    2.2.2
pillow                    10.4.0
pip                       24.2
platformdirs              4.3.3
protobuf                  3.20.1
psutil                    6.0.0
py-cpuinfo                9.0.0
pyarrow                   17.0.0
pydantic                  2.9.2
pydantic_core             2.23.4
pydub                     0.25.1
Pygments                  2.18.0
pyparsing                 3.1.4
PySocks                   1.7.1
python-dateutil           2.9.0.post0
python-multipart          0.0.9
pytz                      2024.2
PyYAML                    6.0.2
referencing               0.35.1
regex                     2024.9.11
requests                  2.32.3
rich                      13.8.1
rpds-py                   0.20.0
ruff                      0.6.6
s3transfer                0.10.2
safetensors               0.4.5
semantic-version          2.10.0
sentencepiece             0.2.0
sentry-sdk                2.14.0
setproctitle              1.3.3
setuptools                75.1.0
shellingham               1.5.4
six                       1.16.0
smmap                     5.0.1
sniffio                   1.3.1
starlette                 0.38.5
SwissArmyTransformer      0.3.6
sympy                     1.13.2
tensorboardX              1.8
tokenizers                0.13.3
tomlkit                   0.12.0
torch                     2.0.0
torchaudio                2.0.0
torchvision               0.15.0
tqdm                      4.66.5
transformers              4.27.1
triton                    3.0.0
typer                     0.12.5
typing_extensions         4.11.0
tzdata                    2024.1
urllib3                   2.2.2
uvicorn                   0.30.6
wandb                     0.18.0
webdataset                0.2.100
websockets                11.0.3
wheel                     0.44.0
xxhash                    3.5.0
yarl                      1.11.1

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

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

相关文章

【工具分享】DoNex勒索病毒解密工具

前言 DoNex勒索软件首次被发现于2024年3月,是由一系列早期勒索软件演变而来,包括2022年4月首次出现的Muse、2022年11月的假冒LockBit 3.0,以及2023年5月的DarkRace。这款勒索软件主要针对美国、意大利和荷兰的企业,使用复杂的加密…

日本IT-正社员、契约社员、个人事业主该如何选?

正社員:就是「正规社员」的意思,按照公司的规定而直接雇用,而且没有制定雇用期间,基本上是以终身雇用至退休年龄(70岁)为前提。而被雇用的一方需要听从公司的业务命令,包括职位或职场的调迁&…

AI名词扫盲

本篇章主要介绍一些AI研究方向的名词以及解释,后续会持续补充,名词解释与时间顺序无关,欢迎各位大佬们在评论区查漏补缺。 目录 AI(Artificial Intelligence,人工智能)卷积神经网络(CNN&#xf…

巧用枚举消除条件判断

shigen坚持更新文章的博客写手,记录成长,分享认知,留住感动。个人IP:shigen 在上一篇的文章结合HashMap与Java 8的Function和Optional消除ifelse判断中有讲到如何结合HashMap与Java 8的Function和Optional消除ifelse判断&#xff…

Linux进程切换以及调度算法

目录 Linux进程切换以及调度算法 Linux进程切换介绍 前置知识 进程切换过程分析 调度算法 补充知识 Linux进程切换以及调度算法 Linux进程切换介绍 前面提到,分时操作系统下,CPU会在多个进程中做高速切换以实现多个进程看似同时执行的&#xff0…

open-resty 服务安装redis插件

从github下载 作者:程序那点事儿 日期:2023/11/16 22:04 lua-resty-redis-cluster cd /usr/local/openresty/modules #进入到modules目录git clone https://github.com/cuiweixie/lua-resty-redis-cluster.git #下载插件mv lua-resty-redis-cluster/ …

字节跳动青训营x豆包Marscode 技术训练营报名啦!

最近字节跳动青训营又开营了,作为第二次参加的我来给没有了解过的同学从几个方面简单介绍一下。 青训营是什么 青训营是字节跳动 稀土掘金 社区发起的技术系列培训 & 人才选拔项目,面向在校大学生, 课程全程免费,包含前端、…

git小乌龟

下载git小乌龟 官方地址 Download – TortoiseGit – Windows Shell Interface to Git git小乌龟下载 选择自己对应的版本进行下载 安装完成后我们会发现是英文,这对我们这些英语不好的很不友好,所以就需要下载语言包 下载对应语言包 安装完成后我们…

Java Web —— 第十天(SpringBoot原理)

SpringBoot框架之所以使用起来更简单更快捷,是因为SpringBoot框架底层提供了两个非常重要的 功能:一个是起步依赖,一个是自动配置。 通过SpringBoot所提供的起步依赖,就可以大大的简化pom文件当中依赖的配置,从而解决…

React学习笔记(四)——React 组件生命周期

目录 1. 生命周期-概览 2. 生命周期-挂载阶段 3. 生命周期-更新阶段 4. 生命周期-卸载阶段 5. setState扩展-发现问题 6. setState扩展-更多用法 7. setState扩展-异步 1. 生命周期-概览 了解react类组件生命周期整体情况 大致步骤: 什么是生命周期React类组…

CentOS 修改服务器登录密码的完整指南

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

【Linux】ubuntu 16.04 搭建jdk 11 环境(亲测可用)

目录 0.环境 1.题外话 2.详细 0.环境 windows11 主机 Virtual Box 7.0 ubuntu 16.04系统 想搭建个 jdk11的环境,用于项目 1.题外话 因为虚拟机与主机传输文件不方便,所以可以尝试用共享文件夹的方式传输,亲测可用,参考以下博…

2024-09-27 buildroot C和语言将 中文的GBK编码转换为 UTF-8 的代码, printf 显示出来,使用 iconv 库去实现。

一、GBK 的英文全称是 "Guobiao Kuozhan",意为 "National Standard Extended"。它是对 GB2312 编码的扩展,用于表示更多汉字和符号 GBK(国标扩展汉字编码)是一种用于简体中文和繁体中文字符的编码方式&#x…

ROSTCM6+Gephi的网络语义分析详细教程(附案例实战)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

前端练习总结(1)

前端实习练习题 前端实习笔试题0920 visibility:hidden display:none把鼠标移到按钮并点击时 hover active focus的顺序代码输出结果1代码输出结果2CSS中哪些属性可以继承cookie sessionStorage localstorage区别面向对象基本特征有哪些,请具体说明下列关于v-model的说法,哪项…

数据结构 ——— 顺序表oj题:编写函数,合并两个有序数组

目录 题目要求 代码实现 题目要求 nums1 和 nums2 是两个升序的整型数组,另外有两个整数 m 和 n 分别代表 nums1 和 nums2 中的元素个数 要求合并 nusm2 到nums1 中,使合并后的 nums1 同样按升序顺序排列 最终,合并后的数组不应由函数返…

CSS05-复合选择器

一、什么是复合选择器 1-1、后代选择器(重要) 示例1: 示例2: 示例3: 1-2、子选择器 示例: 1-3、并集选择器(重要) 示例: 1-4、伪类选择器 1、链接伪类选择器 注意事项&am…

【SpringCloud】服务注册/服务发现-Eureka

服务注册/服务发现-Eureka 1. 背景1.1 问题描述1.2 解决思路1.3 什么是注册中⼼1.4 CAP理论1.5 常⻅的注册中⼼ 2. Eureka 介绍3. 搭建Eureka Server 1. 背景 1.1 问题描述 上个章节的例⼦中可以看到, 远程调⽤时, 我们的URL是写死的 String url "http://127.0.0.1:90…

本地部署开源在线PPT制作与演示应用PPTist并实现异地远程使用

文章目录 前言1. 本地安装PPTist2. PPTist 使用介绍3. 安装Cpolar内网穿透4. 配置公网地址5. 配置固定公网地址 前言 本文主要介绍如何在Windows系统环境本地部署开源在线演示文稿应用PPTist,并结合cpolar内网穿透工具实现随时随地远程访问与使用该项目。 PPTist …

ST188单光束反射式红外光电传感器心率测量原理

光电传感器心率测量原理 ST188传感器测量脉搏的具体原理如下: 当手指轻轻按压在ST188红外光电传感器上时,传感器内部的红外发射二极管会发出红外线。这些红外线穿透手指皮肤,照射到血液上。由于脉搏跳动时,血液的体积和压力会发生…