LLaVA:大型语言和视觉助手,图片识别和理解能力让人惊叹

2023-10-10 17:52

本文主要是介绍LLaVA:大型语言和视觉助手,图片识别和理解能力让人惊叹,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

01简介        

视觉指令调整:针对多模式 GPT-4 级别功能而构建的大型语言和视觉助手。

视觉聊天:构建多模式 GPT-4 级聊天机器人66e5b30664fe648bf29e7fd68351e6f6.jpeg构建了包含 30 个未见过的图像的评估数据集:每个图像都与三种类型的指令相关联:对话、详细描述和复杂推理。这导致了 90 个新的语言图像指令,我们在这些指令上测试 LLaVA 和 GPT-4,并使用 GPT-4 对它们的响应进行评分,从 1 到 10 分。报告每种类型的总分和相对分数。总体而言,与 GPT-4 相比,LLaVA 获得了 85.1% 的相对分数,表明所提出的自指导方法在多模态设置中的有效性。

  • Science QA:LLaVA 与 GPT-4 协同作用的新 SoTA

05afcc5649391e9ffa77638c2dab498a.jpeg仅 LLaVA 就达到了 90.92%。我们使用纯文本的 GPT-4 作为判断,根据它自己之前的答案和 LLaVA 答案来预测最终答案。这个“GPT-4 作为判断”方案产生了新的 SOTA 92.53%。

  • 视觉指令跟随示例

OpenAI GPT-4 技术报告中两个示例的视觉推理

41c9e88e03a68cae46e5bdb2bdec0ea3.jpeg

  • 光学字符识别 (OCR)

0abefa3b56ca3429d7e38c397f734e59.jpeg

  • 效果展示

634c19c3f61dd30d6995160ab58507bb.jpeg29d6a10a2f1fead096823ae6d3f9498e.jpeg4e4e6d87135ed1c5558ca3a2c5c11221.jpeg

02安装

  1. 克隆此存储库并导航到 LLaVA 文件夹

git clone https://github.com/haotian-liu/LLaVA.gitcd LLaVA

2. 安装包

conda create -n llava python=3.10 -yconda activate llavapip install --upgrade pip # enable PEP 660 supportpip install -e .

3.安装附加包

pip install ninjapip install flash-attn --no-build-isolation

升级到最新的代码库

git pullpip uninstall transformerspip install -e .


03演示

要运行我们的演示,您需要在本地准备 LLaVA 检查点。请按照此处的说明下载检查点。

  • 渐变网页用户界面

要在本地启动 Gradio 演示,请一一运行以下命令。如果您计划启动多个模型工作人员以在不同检查点之间进行比较,则只需启动控制器和 Web 服务器一次


  • 启动控制器

python -m llava.serve.controller --host 0.0.0.0 --port 10000

启动 gradio Web 服务器。

python -m llava.serve.gradio_web_server --controller http://localhost:10000 --model-list-mode reload您刚刚启动了 Gradio Web 界面。现在,您可以打开 Web 界面,并将 URL 打印在屏幕上。您可能会注意到模型列表中没有模型。别担心,我们还没有推出任何劳模。当您启动模型工作人员时,它将自动更新。这是在 GPU 上执行推理的实际工作程序。每个工作人员负责 中指定的单个模型--model-path。

python -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path liuhaotian/llava-v1.5-13b等到进程完成加载模型,您会看到“Uvicorn running on ...”。

现在,刷新您的 Gradio Web UI,您将在模型列表中看到刚刚启动的模型。您可以根据需要启动任意数量的工作程序,并在同一 Gradio 界面中比较不同模型检查点。请保持不变,并将和--controller修改为每个worker的不同端口号。--port--worker

python -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port <different from 40000, say 40001> --worker http://localhost:<change accordingly, i.e. 40001> --model-path <ckpt2>


如果您使用的是带有 M1 或 M2 芯片的 Apple 设备,则可以使用标志指定 mps 设备--device:--device mps。

  • 多个 GPU,当 GPU VRAM <= 24GB 时

如果您的 GPU 的 VRA&nbsp;小于 24GB(例如 RTX3090、RTX 4090&nbsp;等),您可以尝试使用多个 GPU 运行它。如果您有多个 GPU,我们最新的代码库将自动尝试使用多个 GPU。您可以指定要使用哪些 GPU CUDA_VISIBLE_DEVICES。下面是使用前两个 GPU 运行的示例。

CUDA_VISIBLE_DEVICES=0,1 python -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path liuhaotian/llava-v1.5-13b

  • (4位、8位推理、量化)

您可以使用量化位(4 位、8 位)启动模型工作线程,这样您就可以在减少 GPU 内存占用的情况下运行推理,从而有可能在具有低至 12GB VRAM 的 GPU 上运行。请注意,使用量化位进行的推理可能不如全精度模型准确。只需将--load-4bit或附加--load-8bit到您正在执行的

模型工作器命令即可。下面是使用 4 位量化运行的示例。python -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path liuhaotian/llava-v1.5-13b --load-4bit

  • (LoRA 权重,未合并)

您可以启动具有 LoRA 权重的模型工作线程,无需将它们与基本检查点合并,以节省磁盘空间。会有额外的加载时间,而推理速度与合并检查点相同。未合并的 LoRA 检查点在型号名称中没有lora-merge,并且通常比合并的检查点小得多(小于 1GB)(7B 为 13G,13B 为 25G)。要加载未合并的 LoRA 权重,您只需传递一个附加参数--model-base,它是用于训练 LoRA 权重的基础 LLM。您可以在模型动物园中检查每个 LoRA 权重的基础 LLM 。

python&nbsp;-m&nbsp;llava.serve.model_worker&nbsp;--host&nbsp;0.0.0.0&nbsp;--controller&nbsp;http://localhost:10000&nbsp;--port&nbsp;40000&nbsp;--worker&nbsp;http://localhost:40000&nbsp;--model-path&nbsp;liuhaotian/llava-v1-0719-336px-lora-vicuna-13b-v1.3&nbsp;--model-base&nbsp;lmsys/vicuna-13b-v1.3


这篇关于LLaVA:大型语言和视觉助手,图片识别和理解能力让人惊叹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/182101

相关文章

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

使用Python实现base64字符串与图片互转的详细步骤

《使用Python实现base64字符串与图片互转的详细步骤》要将一个Base64编码的字符串转换为图片文件并保存下来,可以使用Python的base64模块来实现,这一过程包括解码Base64字符串... 目录1. 图片编码为 Base64 字符串2. Base64 字符串解码为图片文件3. 示例使用注意

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

c/c++的opencv实现图片膨胀

《c/c++的opencv实现图片膨胀》图像膨胀是形态学操作,通过结构元素扩张亮区填充孔洞、连接断开部分、加粗物体,OpenCV的cv::dilate函数实现该操作,本文就来介绍一下opencv图片... 目录什么是图像膨胀?结构元素 (KerChina编程nel)OpenCV 中的 cv::dilate() 函

基于Python实现智能天气提醒助手

《基于Python实现智能天气提醒助手》这篇文章主要来和大家分享一个实用的Python天气提醒助手开发方案,这个工具可以方便地集成到青龙面板或其他调度框架中使用,有需要的小伙伴可以参考一下... 目录项目概述核心功能技术实现1. 天气API集成2. AI建议生成3. 消息推送环境配置使用方法完整代码项目特点

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi