【视觉语言大模型+LLaVA1.0】大语言模型视觉助手(视觉指令调优)GPT4-Vision丐版

官方资源汇总: 项目主页 || https://huggingface.co/liuhaotian
23.04.LLaVA1.论文: Large Language and Vision Assistant(Visual Instruction Tuning)
23.10 LLaVA-1.5论文: Improved Baselines with Visual Instruction Tuning
23.11 LLaVA-Plus项目:LLaVA-Plus: Large Language and Vision Assistants that Plug and Learn to Use Skills
24.01 LLaVA-1.6 博客(论文还未出): LLaVA-NeXT: Improved reasoning, OCR, and world knowledge
本地部署参考:https://blog.csdn.net/zhzxlcc/article/details/133773891
其他: 23.02.大语言模型LLaMA项目: Open and Efficient Foundation Language Models

文章目录

  • 一、简介
    • 1.0 为什么要学习LLaVA? (开源+性能好+多模态+持续更新)
    • 1.1 基本术语
      • 1.1.1 什么是LLaVA ? (大语言模型视觉助手)
      • 1.1.2 语言视觉特征对齐? (将图片视觉特征映射到文本特征层)
    • *1.2 能干什么?(实现部分-GPT4Vision的能力)
      • 1.2.1 `草图生成网页`相关的 html / js代码 (原图2)(同时能识别字符的能力)
      • 1.2.2 无需提示内容,能够识别用户意图(根据冰箱内图片提供菜谱)
      • 1.2.3 继承大语言模型的知识 (图4)
      • 1.2.4 能识别名画 (原图5)
      • 1.2.5-LLaVa 本身没有训练马斯克的图片,继承了CLIP的先验学习过 (原图6)
      • 1.2.6 图片中字符的识别与读取能力
    • 1.3 LLaVA1.0 原文摘要 : 23.04 Visual Instruction Tuning
      • 1.3.1 **贡献**:
  • 二、如何`训练`?
    • 2.0 数据集
      • 2.0.1 指令跟踪数据的一个示例
    • 2.1 对齐图像和语言特征 (将图片特征映射到语言模型的特征层)
      • 2.1.1 数据集相关
      • 2.1.2 训练基础模型+时间
      • 2.1.3 训练脚本
    • 2.2 视觉指令微调 (Visual Instruction Tuning)
      • 2.2.1 准备数据集 ([LLaVA-Instruct-150K](https://huggingface.co/datasets/liuhaotian/LLaVA-Instruct-150K/tree/main) + [COCO train2017 images](https://cocodataset.org/#download) )
      • 2.2.2 原始的训练脚本:[3-epoch schedule on the LLaVA-Instruct-158K datase](https://github.com/haotian-liu/LLaVA/blob/main/scripts/finetune_full_schedule.sh)
  • 三、本地部署 (linux服务器,未压缩时GPU约13G显存 )
    • 3.1 环境相关 (需要安装好cuda驱动)
      • 3.1.1 pip安装其他依赖
    • 3.2 下载模型
      • 3.2.1下载 llavav1.5模型
      • 3.2.2 下载视觉编码器
    • 3.3 运行 服务后台端、模型端、ui界面

一、简介

1.0 为什么要学习LLaVA? (开源+性能好+多模态+持续更新)

它对标的是 GPT4-Vison模型,使聊天助手,具备了解析图片的能力
生态好,一直在更新!
开源了模型、数据、论文也写的贼好! 图from 多模态综述
在这里插入图片描述

1.1 基本术语

1.1.1 什么是LLaVA ? (大语言模型视觉助手)

LLaVA: Large Language and Vision Assistant

一个端到端训练的大型多模态模型,将视觉编码器(vision encoder)和LLM(large language model ,大语言模型)连接起来,
用于通用的视觉和语言理解 (general-purpose visual and language understanding)
就是将图片的视觉特征,映射到了预训练的LLMs中embdding向量,通过2轮的训练,实现对图片理解,并继承大模型能力。
在这里插入图片描述

1.1.2 语言视觉特征对齐? (将图片视觉特征映射到文本特征层)

特征对齐是一种在多模态模型中训练视觉和语言编码器以便在共享空间中表示图像和文本的方法。
在视觉指令调整(Visual Instruction Tuning)中,特征对齐是通过预训练的视觉编码器(如CLIP的ViT-L/14)提取图像特征,并使用简单的线性层将这些特征连接到语言模型的词嵌入空间来实现的。
这样,图像特征可以与预训练语言模型(LLM)的词嵌入对齐。这个阶段可以理解为训练一个与冻结LLM兼容的视觉分词器。

*1.2 能干什么?(实现部分-GPT4Vision的能力)

1.2.1 草图生成网页相关的 html / js代码 (原图2)(同时能识别字符的能力)

Turn this mock-up into an interactive website using html/js, replacethe joke with a real joke.
将此模型转换为使用 html/js 的交互网站,用真正的笑话替换文本joke (点击后)。

在这里插入图片描述

1.2.2 无需提示内容,能够识别用户意图(根据冰箱内图片提供菜谱)

提问:图片+文字:我能用这些做什么饭?
在这里插入图片描述
回应原文

Certainly! Here’s a simple fruit salad recipe using the items in your refrigerator:
Ingredients:

  • 2 cups fresh strawberries, sliced
  • 1 cup fresh blueberries
  • 1 large carrot, grated
  • Juice of half a lemon
  • A handful of chopped fresh parsley or mint- A few ice cubes
  • Optional: honey or maple syrup (adjust to taste)

Instructions:1. In a large bowl, combine the sliced strawberries, blueberries, and carrot. Gently toss them together to mix.2. Drizzle the juice of half a lemon over the fruit and vegetables to prevent them from oxidizing and add a refreshing citrus flavor.3. Sprinkle the chopped fresh parsley or mint over the fruit and gently toss once more.4. If desired, add a drizzle of honey or maple syrup for a touch of sweetness. Adjust the amount according to your taste preferences.5. Cover the bowl and refrigerate the fruit salad for at least 30 minutes or up to a few hours. This allows the flavors to meld and creates amore refreshing salad.6. Serve the fruit salad in cups or bowls, garnished with a sprinkle of fresh parsley or mint, if desired.This fruit salad recipe is perfect for a healthy snack or side dish, and with the variety of ingredients available in your refrigerator, it should beeasy to put together quickly.

1.2.3 继承大语言模型的知识 (图4)

在这里插入图片描述

1.2.4 能识别名画 (原图5)

在这里插入图片描述

1.2.5-LLaVa 本身没有训练马斯克的图片,继承了CLIP的先验学习过 (原图6)

An interesting emergent behavior of LLaVA is its ability to recognize Elon Musk both in a headshot and in a humorous meme where he is dressed as a doge. This implies that the pre-trained CLIP vision encoder may have seen images of Elon Musk. However, it is still surprising because Elon Musk never appears in the training data for either the visual feature alignment or visual instruction tuning stages of LLaVA, which indicates that the base language model generalizes to unseen visual concepts (识别没有对齐过的图像).

在这里插入图片描述

1.2.6 图片中字符的识别与读取能力

输入图片
在这里插入图片描述
原文是英语(翻译为中文了)
在这里插入图片描述

1.3 LLaVA1.0 原文摘要 : 23.04 Visual Instruction Tuning

论文: Large Language and Vision Assistant(Visual Instruction Tuning)

具有多模态聊天能力(multimodal chat abilities),有时在看不见的图像/指令上表现出多模态GPT-4类似能力,与GPT-4在合成的多模态指令遵循数据集上相比,产生了85.1%的相对分数。
当在Science QA上进行微调时,LLaVA和GPT-4的协同作用(synergy)达到了92.53%的最新水平.

在1.0中,我们提出了**视觉指令调整**(visual instruction-tuning),这是将指令微调(instruction-tuning)扩展到语言-图像多模态空间的首次尝试,为构建通用视觉助手铺平了道路。
做出了以下

1.3.1 贡献

  1. 多模态遵循指令数据(Multimodal instruction-following data)。一项关键挑战是缺乏视觉语言指令跟踪数据。我们提出了一种数据重组视角和方法(pipeline),使用 ChatGPT/GPT-4, 将图像文本对转换为适当的指令遵循格式 (instruction-following format)。
  2. 大型多模态模型(Large multimodal models)。我们通过将 CLIP 的开放集视觉编码器与语言解码器Vicuna 连接起来,开发了一个大型多模态模型(LMM),并对我们生成的教学视觉语言数据进行端到端微调。我们的实证研究验证了使用生成的数据进行 LMM 指令调整的有效性,并提出了构建通用指令跟踪视觉代理的实用技巧。当与 GPT-4 集成时,我们的方法在 Science QA [34] 多模态推理数据集上实现了 SoTA。
  3. 多模式指令遵循基准。我们向 LLaVA-Bench 提供了两个具有挑战性的基准,以及多种配对图像、说明和详细的标注。
  4. 开源。我们向公众发布以下资源:生成的多模式指令数据、代码库、可视化聊天的示例交互程序。

二、如何训练

训练文档:https://github.com/haotian-liu/LLaVA/tree/v1.0.1?tab=readme-ov-file#train
二阶段训练 (Feature Alignment + 视觉微调)

2.0 数据集

** GPT-4 扩展**
输入收集到的图片简单本文(caption),以及图片中主体的位置(box),输入到纯文本的gpt4模型中(不输人图片)

2.0.1 指令跟踪数据的一个示例

顶部块显示了用于提示 GPT 的字幕和框等上下文,
底部块显示了三种类型的响应。
请注意,视觉图像不用于提示 GPT,我们仅将其此处显示为参考。
在这里插入图片描述

Table 1: One example to illustrate the instruction-following data. The top block shows the contexts such as captions and boxes used to prompt GPT, and the bottom block shows the three types of responses. Note that the visual image is not used to prompt GPT, we only show it here as a reference.

2.1 对齐图像和语言特征 (将图片特征映射到语言模型的特征层)

2.1.1 数据集相关

过滤 **CC3M**数据集选出 595K image-text 对 : 下载地址-LLaVA-CC3M-Pretrain-595K

2.1.2 训练基础模型+时间

在基础大语言模型(LLMs) Vicuna 上进行训练,推荐使用DeepSpeed框架训练

在8x A100(80G)上,LLAVA-13B大约需要4个小时。 7B检查点大约需要2个小时
1x A100 (80G): LLaVA-13B,. Time: ~33 hours. (也可以)

2.1.3 训练脚本

https://github.com/haotian-liu/LLaVA/blob/main/scripts/pretrain.sh

#!/bin/bash# IMPORTANT: this is the training script for the original LLaVA, NOT FOR LLaVA V1.5!# Uncomment and set the following variables correspondingly to run this script:# MODEL_VERSION=vicuna-v1-3-7b
# MODEL_VERSION=llama-2-7b-chat########### DO NOT CHANGE ###########
########### USE THIS FOR BOTH ###########
PROMPT_VERSION=plain
########### DO NOT CHANGE ###########deepspeed llava/train/train_mem.py \--deepspeed ./scripts/zero2.json \--model_name_or_path ./checkpoints/$MODEL_VERSION \--version $PROMPT_VERSION \--data_path /path/to/pretrain_data.json \--image_folder /path/to/images \--vision_tower openai/clip-vit-large-patch14 \--tune_mm_mlp_adapter True \--mm_vision_select_layer -2 \--mm_use_im_start_end False \--mm_use_im_patch_token False \--bf16 True \--output_dir ./checkpoints/llava-$MODEL_VERSION-pretrain \--num_train_epochs 1 \--per_device_train_batch_size 16 \--per_device_eval_batch_size 4 \--gradient_accumulation_steps 1 \--evaluation_strategy "no" \--save_strategy "steps" \--save_steps 24000 \--save_total_limit 1 \--learning_rate 2e-3 \--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

2.2 视觉指令微调 (Visual Instruction Tuning)

总是保持视觉编码器的权重冻结,并继续更新LLaVA中投影层(特征对齐)和LLM的预训练模型权重;即(3)中的可训练参数为θ = {W, φ}。我们考虑两种特定的用例场景:

2.2.1 准备数据集 (LLaVA-Instruct-150K + COCO train2017 images )

总共收集了 158K 个遵循指令的数据(instruction-following data)语言-图像:
包括关于图像内容的对话中的 58K、详细描述 23K 复杂推理 77k。

2.2.2 原始的训练脚本:3-epoch schedule on the LLaVA-Instruct-158K datase

deepspeed llava/train/train_mem.py \--deepspeed ./scripts/zero2.json \--model_name_or_path ./checkpoints/$MODEL_VERSION \--version $PROMPT_VERSION \--data_path ./playground/data/llava_instruct_158k.json \--image_folder /path/to/coco/train2017 \--vision_tower openai/clip-vit-large-patch14 \--pretrain_mm_mlp_adapter ./checkpoints/llava-$MODEL_VERSION-pretrain/mm_projector.bin \--mm_vision_select_layer -2 \--mm_use_im_start_end False \--mm_use_im_patch_token False \--bf16 True \--output_dir ./checkpoints/llava-$MODEL_VERSION-finetune \--num_train_epochs 3 \--per_device_train_batch_size 16 \--per_device_eval_batch_size 4 \--gradient_accumulation_steps 1 \--evaluation_strategy "no" \--save_strategy "steps" \--save_steps 50000 \--save_total_limit 1 \--learning_rate 2e-5 \--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

三、本地部署 (linux服务器,未压缩时GPU约13G显存 )

官网参考:https://github.com/haotian-liu/LLaVA
可参考:https://blog.csdn.net/zhzxlcc/article/details/133773891

在这里插入图片描述

3.1 环境相关 (需要安装好cuda驱动)

根据自己显卡驱动,在pytorch官方选择对应的版本: https://pytorch.org/get-started/previous-versions/

conda create -n  llava python=3.10  -yconda activate llava 
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=11.8 -c pytorch -c nvidia

3.1.1 pip安装其他依赖

根据 LLaVA/pyproject.toml 建立其他依赖环境

pip install -r install.txt

install.txt的内容 (自己新建)

torch==2.1.2
torchvision==0.16.2
transformers==4.37.2
tokenizers==0.15.1
sentencepiece==0.1.99
shortuuid
accelerate==0.21.0
peft
bitsandbytes
pydantic
markdown2
numpy
scikit-learn==1.2.2
gradio==4.16.0
gradio_client==0.8.1
requests
httpx==0.24.0
uvicorn
fastapi
einops==0.6.1
einops-exts==0.0.4
timm==0.6.13
deepspeed==0.12.6
ninja
wandb

3.2 下载模型

配置官方下载工具包

pip install -U huggingface_hub  hf-transfer
export HF_ENDPOINT=https://hf-mirror.com  # linux
# $env:HF_ENDPOINT = "https://hf-mirror.com"  # windows
export HF_HUB_ENABLE_HF_TRANSFER=1  # 官方加速报错,就关了

3.2.1下载 llavav1.5模型

huggingface-cli download --resume-download liuhaotian/llava-v1.5-7b  --local-dir  ./weights/llava-v1.5-7bhuggingface-cli download --resume-download liuhaotian/llava-v1.5-13b  --local-dir ./weights/llava-v1.5-13b

3.2.2 下载视觉编码器

huggingface-cli download --resume-download openai/clip-vit-large-patch14-336  --local-dir ./models/clip-vit-large-patch14-336  

3.3 运行 服务后台端、模型端、ui界面

其中 CUDA_VISIBLE_DEVICES=0 表示选择哪个显卡进行运行,值可为0,1,2

# service
conda activate llava
cd ~/code/LLaVA  # 你的llava项目位置
CUDA_VISIBLE_DEVICES=0  python -m llava.serve.controller --host 0.0.0.0 --port 10000# model
CUDA_VISIBLE_DEVICES=0 python -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 2006 --worker http://localhost:2006 --model-path /data/zengxingyu/code/LLaVA/weights/llava-v1.5-7b/
# 
CUDA_VISIBLE_DEVICES=0 python -m llava.serve.gradio_web_server --controller http://localhost:10000 --model-list-mode reload

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

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

相关文章

李畑受邀出席第20届“韩国品牌大奖”颁奖典礼

2024年3月14日,第20届“韩国品牌大奖”颁奖典礼在韩国国家新闻中心举行。李畑女士受邀出席,和与会嘉宾一同见证这一年度盛事。 “韩国品牌大奖”是由政府主管的品牌奖项,旨在奖励在品牌经营方面作出突出贡献的企业和机构。该奖项依据公信力&a…

1.python安装

1.检查是否已经安装python 打开cmd 输入 python --version查看是否有返回版本,没有返回则环境变量未设置好,或者未安装 2.下载安转python https://www.python.org/downloads/windows/ 勾选配置环境变量路径 安装成功

外贸网站常用的wordpress模板

零件配件WordPress外贸建站模板 汽车行业零配件WordPress外贸建站模板,卖配件、零件的外贸公司可以使用的WordPress主题。 https://www.jianzhanpress.com/?p4912 WordPress外贸独立站主题 简洁实用的WordPress外贸独立站主题,适合时尚服装行业搭建w…

Java使用itextpdf往pdf中插入图片

引入maven依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.9</version> </dependency>java代码 import cn.hutool.extra.qrcode.QrCodeUtil; import com.itextpdf.text.*; i…

UE5中各类型的英文名称缩写(直接用于文件前缀)

真正开发项目时用到的素材文件是相当巨量的&#xff0c;在资产中查找时由于不区分文件夹&#xff0c;因此查找是比较头疼的&#xff0c;所以很多同类型的文件名命名时要加入缩写。 本文提供初学者内容包中的缩写&#xff0c;并会在此后陆续加入自定义的缩写&#xff08;本部分…

抖音视频批量提取软件|无水印视频下载

抖音视频批量提取软件&#xff0c;让您高效下载精彩内容&#xff01; 您是否经常需要下载抖音视频&#xff0c;但传统的下载方式繁琐且低效&#xff1f;别担心&#xff0c;我们为您提供了一款强大而智能的抖音视频批量提取软件&#xff0c;让您轻松实现下载无水印的精彩内容&am…

【好书推荐2】AI提示工程实战:从零开始利用提示工程学习应用大语言模型

【好书推荐2】AI提示工程实战&#xff1a;从零开始利用提示工程学习应用大语言模型 写在最前面AI辅助研发方向一&#xff1a;AI辅助研发的技术进展方向二&#xff1a;行业应用案例方向三&#xff1a;面临的挑战与机遇方向四&#xff1a;未来趋势预测方向五&#xff1a;与法规的…

深入理解模板进阶:掌握C++模板的高级技巧

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生 &#x1f648;个人主页&#x1f389;&#xff1a;GOTXX &#x1f43c;个人WeChat&#xff1a;ILXOXVJE &#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&…

Reactor线程模型

线程模型 一、背景1.socket网络通信2.IO模型与线程模型3.线程模型分类3.1 阻塞模型3.2 Reactor模型3.3 Proactor模式 二、阻塞模型1.代码示例 三、Reactor模型1.单Reactor单线程1.1 处理过程1.2 优缺点1.3 代码示例 2.单Reactor多线程2.1 处理机制2.2 优缺点 3.主从Reactor3.1 …

Ubuntu Desktop 设置 gedit

Ubuntu Desktop 设置 gedit 1. View2. Editor3. Font & Colors4. keyboard shortcut5. Find and ReplaceReferences gedit (/ˈdʒɛdɪt/ or /ˈɡɛdɪt/) is the default text editor of the GNOME desktop environment and part of the GNOME Core Applications. Desig…

[蓝桥杯 2015 省 B] 生命之树

水一水的入门树形DP #include<iostream> #include<algorithm> #include<vector> using namespace std; using ll long long; #define int long long const int N 2e610; const int inf 0x3f3f3f3f; const int mod 1e97;int n; int w[N]; vector<vecto…

Unity双击全屏UI按钮、长按UI按钮

1.长按按钮 将下面的代码挂载到按钮上&#xff0c;去掉按钮本射的Button组件 using System.Collections; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems;public class LongPressButton : MonoBehaviour, IPointerDownHandler, IPointerUpHand…

递推与递归

92. 递归实现指数型枚举 - AcWing题库 #include <bits/stdc.h> using namespace std; const int N17; int n; bool vis[N];//记录某一个数是否出现过 void dfs(int dep){// if(vis[dep])continue;//没有这一句 因为一定不会有已经选过的数if(depn1){//对于每个数都做完了…

NCP1031DR2G集成DC-DC转换器 为以太网供电设备提供低成本、高可靠性解决方案

NCP1031DR2G是微型高电压单片 DC-DC 转换器&#xff0c;带有片上电源开关和启动电路。使用极少的外部部件&#xff0c;将实施若干开关稳压器应用所需的所有有源电源、控制逻辑和保护电路相结合&#xff0c;这些应用有辅助侧偏置电源和低功率 DC-DC 转换器。此控制器系列适用于 …

Learn OpenGL 17 立方体贴图

立方体贴图 我们已经使用2D纹理很长时间了&#xff0c;但除此之外仍有更多的纹理类型等着我们探索。在本节中&#xff0c;我们将讨论的是将多个纹理组合起来映射到一张纹理上的一种纹理类型&#xff1a;立方体贴图(Cube Map)。 简单来说&#xff0c;立方体贴图就是一个包含了…

OpenCV Steger算法提取条纹中心线

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 Steger 算法是一种常用的图像边缘检测算法,可以用于提取图像中的中心线或边缘信息。它的理论假设是:条纹的亮度是按照高斯分布呈现的,即中心亮两侧渐暗。 其计算过程如下所述: 1、首先,我们需要计算每个点Hess…

Kali Linux结合cpolar内网穿透实现公网环境SSH远程访问

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh 远程连接kali! …

鸿蒙开发实战案例—QQ联系人开发教程

本次案例挑选了QQ4个tab中相对较难的一个页面进行开发 先看一下本次案例的最终效果图&#xff1a; 这个页面的难点在于在List组件又嵌套了一个可以左右滑动的联系人分类&#xff0c;以及好友分组的展开和收起。 现在我们从上到下来开发这个界面&#xff0c;首先是导航栏&…

适合一个人开的实体店:轻松创业,快速盈利的秘诀

在当今的创业潮流中&#xff0c;很多人都渴望拥有一份属于自己的事业。如果你也想独自创业&#xff0c;开一家实体店&#xff0c;那么这篇文章将为你提供一些有价值的干货信息。作为一名经营5年酸奶吧的创业者&#xff0c;我将分享一些经验和见解&#xff0c;帮助你轻松创业并实…

【MD】金属-半导体界面超快辐射诱导熔化的分子动力学模拟

这篇文章是一篇发表在《Journal of Applied Physics》上的论文&#xff0c;标题为“Molecular dynamics simulations of ultrafast radiation induced melting at metal–semiconductor interfaces”&#xff0c;作者为Ashwin Ravichandran, Mohit Mehta, Andrew A. Woodworth,…