MMedAgent:专为医疗领域设计的多模态 AI 智能体,支持医学影像处理、报告生成等多种医疗任务

178 阅读4分钟

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. 功能:支持多种医疗任务,包括医学影像处理、报告生成等。
  2. 技术:基于多模态大型语言模型(MLLM),集成多种医疗工具。
  3. 性能:在多个医疗任务上优于现有开源方法,甚至超过闭源模型 GPT-4o。

正文(附运行示例)

MMedAgent 是什么

公众号: 蚝油菜花 - MMedAgent

MMedAgent 是专为医疗领域设计的多模态AI智能体,通过整合各种开源医疗模型来管理多种医疗任务。系统包括一个指令调整的多模态大型语言模型(MLLM),作为行动规划器和结果聚合器,以及一套为代理量身定制的医疗工具集合,每个工具都针对医疗领域的特定任务。

MMedAgent 能处理包括 MRI、CT、X 射线等多种医学成像模式,支持临床实践中遇到的多种数据类型。通过理解用户指令和医学影像,生成格式化指令调用特定工具,聚合工具的输出以准确、全面地回复用户。MMedAgent 在多个医疗任务上的性能优于现有的开源方法,甚至超过了闭源模型 GPT-4o。

MMedAgent 的主要功能

  • 多模态任务处理:支持接地、分割、分类、医学报告生成(MRG)和检索增强生成(RAG)等多种语言和多模态任务。
  • 医疗影像支持:支持 MRI、CT 和 X 射线等多种医学成像模式,适应临床实践中遇到的各种数据类型。
  • 工具集成与调用:集成了多个工具,涵盖七个代表性的医疗任务,能根据用户指令选择合适的工具进行调用。
  • 指令微调:通过创建指令调整数据集,训练多模态大型语言模型(MLLM)作为动作规划器,理解和执行用户指令。
  • 结果聚合:MLLM 作为结果聚合器,将工具的输出与用户的指令和图像结合,生成最终答案。
  • 端到端训练:通过自回归目标对生成的序列进行端到端训练,确保模型能使用正确的工具并根据工具结果回答问题。

MMedAgent 的技术原理

  • 系统架构:由两个主要部分组成:一个指令调整的多模态大型语言模型(MLLM),作为行动规划器和结果聚合器;以及为代理量身定制的医疗工具集合,每个工具都针对医疗领域的特定任务。
  • 工作流程:包括四个步骤:用户提供指令和医疗图像;MLLM 理解指令和图像,生成格式化指令以调用特定工具;执行工具并返回结果;MLLM 将工具的输出与用户指令和图像结合,生成最终答案。
  • 指令微调:采用统一的对话格式来确保其作为行动规划器和结果聚合器的角色。在接收到用户输入后,MMedAgent 生成三个部分:Thought(思想)、API Name 和 API Params(API 名称和参数)、Value(价值)。
  • 自回归目标训练:通过自回归目标对生成的序列进行端到端训练,确保模型能够使用正确的工具并根据工具的结果回答问题。

如何运行 MMedAgent

1. 克隆仓库
git clone https://github.com/Wangyixinxin/MMedAgent.git
2. 创建环境
cd MMedAgent
conda create -n mmedagent python=3.10 -y
conda activate mmedagent
pip install --upgrade pip
pip install -e .
3. 安装训练所需的额外包
pip install -e ".[train]"
pip install flash-attn --no-build-isolation
4. 下载模型
git lfs install
git clone https://huggingface.co/andy0207/mmedagent
5. 训练模型
deepspeed llava/train/train_mem.py \
    --lora_enable True --lora_r 128 --lora_alpha 256 --mm_projector_lr 2e-5 \
    --deepspeed ./scripts/zero2.json \
    --model_name_or_path ./base_model  \
    --version v1\
    --data_path ./train_data_json/example.jsonl \
    --image_folder ./train_images \
    --vision_tower openai/clip-vit-large-patch14-336 \
    --mm_projector_type mlp2x_gelu \
    --mm_vision_select_layer -2 \
    --mm_use_im_start_end False \
    --mm_use_im_patch_token False \
    --image_aspect_ratio pad \
    --group_by_modality_length False \
    --bf16 True \
    --output_dir ./checkpoints/final_model_lora \
    --num_train_epochs 30 \
    --per_device_train_batch_size 12 \
    --per_device_eval_batch_size 1 \
    --gradient_accumulation_steps 2 \
    --evaluation_strategy "no" \
    --save_strategy "steps" \
    --save_steps 3000 \
    --save_total_limit 2 \
    --learning_rate 2e-4 \
    --weight_decay 0. \
    --warmup_ratio 0.03 \
    --lr_scheduler_type "cosine" \
    --logging_steps 1 \
    --tf32 True \
    --model_max_length 2048 \
    --gradient_checkpointing True \
    --dataloader_num_workers 4 \
    --lazy_preprocess True \
    --report_to wandb

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦