---
title: Multimodal-Medical-Model
canonical_url: "https://www.modelscope.cn/models/zpeng1989/Multimodal-Medical-Model"
md_url: "https://www.modelscope.cn/models/zpeng1989/Multimodal-Medical-Model.md"
repository: zpeng1989/Multimodal-Medical-Model
chinese_name: "多模态医疗模型"
last_updated: 2025-01-06
pipeline_tag: image-text-to-text
tasks:
  - image-text-to-text
model_type:
  - qwen2_vl
architectures:
  - Qwen2VLForConditionalGeneration
parameters: 8.3B
tensor_type:
  - BF16
library_name:
  - pytorch
  - transformer
  - safetensors
frameworks:
  - Pytorch
inference_backends:
  - "deploy_task vlm/text/emb"
  - "lmdeploy 0.9.1"
  - "sglang 0.5.2"
  - "vllm 0.9.2"
downloads: 495
stars: 12
---

# Multimodal-Medical-Model

> Multimodal-Medical-Model - zpeng1989 在 ModelScope 开源的模型。基于QwenVL2进行医疗图像+文本数据微调的模型

zpeng1989/Multimodal-Medical-Model 是 ModelScope 魔搭社区上的 8.3B 参数image-text-to-text模型，可用 deploy_task vlm/text/emb、lmdeploy 0.9.1、sglang 0.5.2 部署。

- **Repository**: zpeng1989/Multimodal-Medical-Model
- **Tasks**: image-text-to-text
- **Parameters**: 8.3B
- **Inference backends**: deploy_task vlm/text/emb, lmdeploy 0.9.1, sglang 0.5.2, vllm 0.9.2
- **Downloads**: 495
- **Stars**: 12
- **Last updated**: 2025-01-06

Source: https://www.modelscope.cn/models/zpeng1989/Multimodal-Medical-Model

---

# 医疗多模态问答大模型

## 项目概述

本项目旨在构建一个医疗多模态问答大模型，基于`qwen-vl2`模型作为基座模型，使用LoRA（Low-Rank Adaptation）技术进行微调。模型训练数据结合了医疗图像和多轮问答对话，涵盖医学影像、诊断报告等多模态信息，并通过问答题目进行微调，以提升模型在医疗领域的多模态理解和问答能力。

## 模型架构

- **基座模型**: `qwen-vl2`
- **微调方法**: LoRA（Low-Rank Adaptation）
- **训练数据**: 
  - 医疗图像（如CT、MRI、X光、病理图等）
  - 多轮问答对话（基于诊断报告、医学文献等生成）

## 数据集

### 数据来源
1. **医疗图像**: 包含CT、MRI、X光、病理图等医学影像数据。
2. **多轮问答对话**: 基于诊断报告、医学文献等生成的问答对话数据。

### 数据预处理
- **图像处理**: 对医疗图像进行标准化处理（如尺寸调整、归一化等）。
- **文本处理**: 对问答对话进行清洗和标注，确保问题和答案的准确性。
- **多模态对齐**: 将图像与对应的文本信息进行对齐，构建多模态训练样本。
- **数据分割**: 将数据集分为训练集、验证集和测试集。

## 模型训练

### 微调方法
使用LoRA技术对`qwen-vl2`模型进行微调。LoRA通过在预训练模型的权重矩阵中引入低秩矩阵来减少参数量，从而在保持模型性能的同时降低计算成本。

### 训练步骤
1. **加载预训练模型**: 加载`qwen-vl2`模型。
2. **应用LoRA**: 在模型的关键层应用LoRA技术。
3. **训练模型**: 使用准备好的多模态数据集进行微调。
4. **验证与测试**: 在验证集和测试集上评估模型性能，调整超参数以优化结果。

## 模型评估

### 评估指标
- **准确率**: 模型在问答任务中的准确率。
- **召回率**: 模型能够正确回答的问题比例。
- **F1分数**: 准确率和召回率的调和平均数。
- **多模态理解能力**: 模型对图像和文本信息的综合理解能力。

### 评估结果
在测试集上的评估结果如下：
待更新

## 使用指南

### 环境配置
1. **Python版本**: 3.10+
2. **依赖库**:
   - `transformers`
   - `torch`
   - `modelscope`

### 下载模型


SDK下载
```bash
#安装ModelScope
pip install modelscope
```
```python
#SDK模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('zpeng1989/Multimodal-Medical-Model')
```
Git下载
```
#Git模型下载
git clone https://www.modelscope.cn/zpeng1989/Multimodal-Medical-Model.git
```



### 模型推理
以下是一个使用案例，展示如何加载模型并进行推理：

```python
import os
from transformers import Qwen2VLForConditionalGeneration, AutoProcessor
from qwen_vl_utils import process_vision_info
from modelscope import snapshot_download
import torch

# 禁用某些CUDA优化以兼容特定硬件
torch.backends.cuda.enable_mem_efficient_sdp(False)
torch.backends.cuda.enable_flash_sdp(False)

# 模型路径
model_dir = ""

# 加载模型
model = Qwen2VLForConditionalGeneration.from_pretrained(
    model_dir, torch_dtype="auto", device_map="auto"
)

# 加载处理器
processor = AutoProcessor.from_pretrained(model_dir)

# 多模态输入（图像+文本）
messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "image": ""}, # 图片路径
            {"type": "text", "text": "患者情况如何？"},
        ],
    }
]

# 准备输入
text = processor.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True
)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
    text=[text],
    images=image_inputs,
    videos=video_inputs,
    padding=True,
    return_tensors="pt",
)
inputs = inputs.to("cuda")

# 推理
generated_ids = model.generate(**inputs, max_new_tokens=1280)
generated_ids_trimmed = [
    out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
    generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print(output_text)
```


## 案例

### Case 01

![案例图](imgs/A.jpg)

```
[
    {
        "role": "system",
        "content": "你是医生"
    },
    {
        "role": "user",
        "content": [
            {
                "type": "image_url",
                "image_url": {
                    "url": "A.jpg"
                }
            },
            {
                "type": "text",
                "text": "<images>图上具体有什么，帮我仔细分析一下？"
            }
        ]
    },
    {
        "role": "assistant",
        "content": "这张图像是一张冠状位的T2加权MRI扫描，专注于骨盆区域。T2加权成像是MRI的一种类型，它强调组织的弛豫时间差异，使得不同结构和病理状态能够更好地显示和区分。在没有对比剂的情况下，这张影像提供了骨盆骨骼和周围软组织的详细评估，能够帮助观察任何异常或病理变化。"
    }
]
```

### Case 02


![案例图](imgs/B.jpg)

```
[
    {
        "role": "system",
        "content": "你是医生"
    },
    {
        "role": "user",
        "content": [
            {
                "type": "image_url",
                "image_url": {
                    "url": "B.jpg"
                }
            },
            {
                "type": "text",
                "text": "<images>图上黄色箭头具体指什么？帮我仔细分析一下？"
            }
        ]
    },
    {
        "role": "assistant",
        "content": "在胸部CT图像中，黄色箭头所示即为肺动脉栓塞部位。肺动脉栓塞是一种严重的医疗紧急情况，其特征是肺动脉中形成血栓，这可能导致氧气无法有效地输送到身体。在图像中，血栓位于肺动脉的主干——主肺动脉（象征着肺动脉）内。"
    }
]
```

### Case 03

![案例图](imgs/C.jpg)

```
[
    {
        "role": "system",
        "content": "你是医生"
    },
    {
        "role": "user",
        "content": [
            {
                "type": "image_url",
                "image_url": {
                    "url": "C.jpg"
                }
            },
            {
                "type": "text",
                "text": "<images>图上具体指什么情况？帮我仔细分析一下？"
            }
        ]
    },
    {
        "role": "assistant",
        "content": "图片显示的是手术标本（可能来自子宫内膜息肉切除术）的病理检查。病理学是研究组织在显微镜下的科学，这里它被用来分析子宫内膜息肉的特征。这些息肉是从子宫内膜（子宫内膜）突出的生长物。通过显微镜检查，可以评估息肉的结构和成分，有助于理解其性质和可能的并发症风险。"
    }
]
```


## 致谢
- 感谢 `qwen-vl2` 模型的开发者。
- 感谢所有为医疗多模态数据集做出贡献的研究人员。

## 联系方式
如有任何问题，请联系 [592392714@qq.com]。

---

**注意**: 本项目仅供学术研究使用，不构成医疗建议。
