❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- 多模态理解:Florence-VL能够处理图像与文本数据,实现视觉与语言的深度融合。
- 视觉特征提取:使用Florence-2模型从图像中提取丰富的视觉特征。
- 深度-广度融合:结合不同层次和任务提示的视觉特征,适应多种下游任务。
正文(附运行示例)
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
环境安装
安装训练包:
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
安装评估包:
cd lmms-eval pip install -e .
数据集下载
预训练数据:
- 详细描述来自PixelProse和ShareGPT4V。
指令数据:
- 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/
资源
- 项目官网:https://jiuhaichen.github.io/florence-vl
- GitHub 仓库:https://github.com/JiuhaiChen/Florence-VL
- arXiv 技术论文:https://arxiv.org/pdf/2412.04424
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦