Florence-VL:微软和马里兰大学共同开源的多模态大语言模型

160 阅读4分钟

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

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


🚀 快速阅读

  1. 多模态理解:Florence-VL能够处理图像与文本数据,实现视觉与语言的深度融合。
  2. 视觉特征提取:使用Florence-2模型从图像中提取丰富的视觉特征。
  3. 深度-广度融合:结合不同层次和任务提示的视觉特征,适应多种下游任务。

正文(附运行示例)

Florence-VL 是什么

公众号: 蚝油菜花 - Florence-VL

Florence-VL是由微软和马里兰大学共同推出的多模态大型语言模型(MLLMs)。该模型通过生成式视觉基础模型Florence-2丰富视觉表示,能够捕捉图像的不同层次和方面的视觉特征,适应多样的下游任务。Florence-VL引入了深度-广度融合(DBFusion)技术,将不同深度和多个提示下提取的视觉特征进行融合,实现视觉与语言理解的深度融合。

Florence-VL的核心在于其创新的多模态理解和特征提取能力,使其在多个多模态和视觉中心的基准测试中实现了性能提升。

Florence-VL 的主要功能

  • 多模态理解:能够理解和处理图像与文本数据,实现视觉与语言的深度融合。
  • 视觉特征提取:使用Florence-2模型从图像中提取丰富的视觉特征。
  • 深度-广度融合(DBFusion):结合不同层次(深度)和不同任务提示(广度)的视觉特征,适应多种下游任务。
  • 性能提升:在多个多模态和视觉中心的基准测试中实现性能提升,包括VQA、OCR、图像描述等。

Florence-VL 的技术原理

  • 生成式视觉编码器:使用Florence-2作为视觉编码器,基于不同的任务提示生成视觉特征,适用于多种视觉任务。
  • 特征融合架构:引入新颖的特征融合架构,将从Florence-2提取的视觉特征与预训练的语言模型相结合。
  • 深度-广度融合(DBFusion)
    • 深度:整合来自不同层次的视觉特征,捕捉从低级到高级的概念细节。
    • 广度:使用多个任务特定的视觉特征,每个特征强调输入图像中的不同感知信息。
  • 端到端预训练:整个模型进行端到端预训练,实现视觉和语言模态之间的最佳对齐。
  • 微调:在预训练后,对投影层和语言模型进行微调,适应特定的下游任务。

如何运行 Florence-VL

环境安装

  1. 安装训练包:
conda create -n florence-vl python=3.11 -y
conda activate florence-vl
pip install --upgrade pip  
pip install -e .
pip install -e ".[train]"
pip install flash-attn --no-build-isolation
  1. 安装评估包:
cd lmms-eval
pip install -e .

数据集下载

  1. 预训练数据:

  2. 指令数据:

    • TODO。

训练脚本

使用llama 3.1-8B进行训练(phi-3类似)

scripts/florence-vl/llama/llama3.sh中设置基本的slurm信息,然后运行预训练和微调任务:

scripts/florence-vl/llama/pretrain_llama.sh中手动导出以下变量:

export NNODES=number of nodes
export DATA_PATH=/your/path/for/pretrain/data/json/file
export IMG=/your/image/folder
export OUTPUT=/checkpoint/save/path

scripts/florence-vl/llama/finetune_llama.sh中手动导出以下变量:

export NNODES=number of nodes
export DATA_PATH=/your/path/for/instuction/data/json/file
export IMG=/your/image/folder
export CKPT_PATH=/pretrain/checkpoint
export VIT_PATH=/pretrain/checkpoint/vision_tower
export OUTPUT=/checkpoint/save/path

评估脚本

使用lmms-eval进行评估:

export OPENAI_API_KEY=your key
python -m accelerate.commands.launch \
    --num_processes=4 \
    -m lmms_eval \
    --model llava \
    --model_args pretrained="/your/model/path/,conv_template=/choose/from/llama3/or/phi" \
    --tasks  textvqa_val,gqa,realworldqa,vizwiz_vqa_val,pope,scienceqa_img,mmvet,mme,seedbench,hallusion_bench_image,llava_in_the_wild,mathvista_testmini,docvqa_val,ocrbench,chartqa,ai2d,mmmu_val,mmbench_en_dev,infovqa_val,mmbench_cn_dev,mmstar \
    --batch_size 1 \
    --log_samples \
    --log_samples_suffix florence-vl \
    --output_path ./logs/

资源


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

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