探索LLaVA-1.5:开源多模态语言模型的魅力与应用
LLaVA - HR:这是一个高分辨率的多模态大语言模型(MLLM),具有强大的性能和卓越的效率,在多个基准测试中大大超越LLaVA - 1.5。:该模型在推理、光学字符识别(OCR)和世界知识方面有所改进,在一些基准测试中甚至超过了Gemini Pro。:这是一种新颖的方法,旨在有效解决多模态AI领域中训练大规模LLaVA模型的难题。:基于诸如Cava等大语言模型的基础上,将能力拓展到视频领域。
2023年10月5日,LLaVA-1.5作为开源多模态语言模型发布,这对AI开发者而言是一则重大喜讯。借助这个完全开源的模型,开发者能够在多模态领域进行试验与创新,让模型处理不同类型的信息,而非仅仅局限于文字。
多模态AI市场的广阔前景
据Grand View Research的研究,2023年全球多模态AI市场规模预估为13.4亿美元,并且从2024年到2030年,预计将以35.8%的复合年增长率增长。多模态大语言模型(Multimodal LLM)可理解和处理来自多种数据模态的信息,突破了传统语言AI模型仅聚焦于文本数据处理的限制,能分析图像、视频,处理音频等。
例如在实际应用中,它可以基于图像编写故事;通过结合语音命令(音频)和视觉反馈(摄像头)来增强机器人控制;通过分析交易数据(文本)和安全监控视频(视频)实现实时欺诈检测;综合分析客户评论(文本、图像、视频)以获取更深入洞察,为产品开发提供依据;结合气象数据(文本)与卫星图像(图像)进行更精准的天气预报。
LLaVA-1.5的技术剖析
LLaVA全称为Large Language and Vision Assistant,是通过使用GPT收集的多模态指令跟随数据对LLaMA/Vicuna进行微调而开发的开源模型,以Transformer架构作为自回归语言模型的基础。LLaVA-1.5仅对原始LLaVA进行简单修改,并利用所有公开数据,就在11个基准测试中取得了接近当前最优水平(SoTA)的性能。
该模型主要用于视频问答、图像字幕生成,以及基于复杂图像生成创意文本格式等任务。由于需要处理和整合不同模态的信息,所以它对计算资源要求较高,H100 GPU能够满足这种高要求的计算。
LLaVA自身就展现出令人赞叹的多模态聊天能力,在一些未见过的图像/指令上有时能表现出类似多模态GPT - 4的行为,在一个合成多模态指令跟随数据集上准确率达到90.92%。而当LLaVA与GPT - 4结合时,相较于其他模型能达到更高的性能。
其他LLaVA模型介绍
- LLaVA - HR:这是一个高分辨率的多模态大语言模型(MLLM),具有强大的性能和卓越的效率,在多个基准测试中大大超越LLaVA - 1.5。
- LLaVA - NeXT:该模型在推理、光学字符识别(OCR)和世界知识方面有所改进,在一些基准测试中甚至超过了Gemini Pro。
- MoE - LLaVA:这是一种新颖的方法,旨在有效解决多模态AI领域中训练大规模LLaVA模型的难题。
- Video - LLaVA:基于诸如Cava等大语言模型的基础上,将能力拓展到视频领域。在MSRVTT、MSVD、TGIF和ActivityNet等数据集上,分别比Video - ChatGPT高出5.8%、9.9%、18.6%和10.1%。
- LLaVA - RLHF:这是一个开源的、通过强化学习从人类反馈中训练(RLHF)的大型多模态模型,用于通用视觉和语言理解。它具备令人印象深刻的视觉推理和感知能力,模仿了多模态GPT - 4的精髓。据称,在一个合成多模态指令上,与GPT - 4相比,该模型获得了96.6%(LLaVA为85.1%)的相对得分。
LLaVA-1.5的测试与代码实现
对LLaVA - 1.5进行了不同提示的测试:
- 深度解释测试:提示为“对这张图像给出有深度的解释”,用一张代表全球聊天机器人市场的图像进行测试,模型给出了关于聊天机器人市场细分的全面且有深度的信息。
- 图像理解测试:提示为“这张图像中有多少本书?同时描述你在图像中观察到的内容”,模型正确回答了书的数量,并准确描述了图像,关注到了细节。
- 零样本目标检测测试:提示为“以x_min, y_min, x_max, y_max格式返回图像的坐标”,模型在假设标志居中的情况下返回了坐标,答案令人满意。
以下是在演示中实现LLaVA - 1.5(70亿参数)的代码步骤:
首先,安装必要的库:
!pip install python - dotenv
!pip install python - dotenv transformers torch
!pip install transformers
导入所需的库:
from dotenv import load_dotenv
from transformers import pipeline
load_dotenv()
import os
import pathlib
import textwrap
from PIL import Image
import torch
import requests
这些库的作用各不相同,os用于与操作系统交互,pathlib用于文件系统路径操作,textwrap用于文本包装和填充,PIL.Image用于打开、处理和保存多种图像文件格式,torch用于深度学习,requests用于进行HTTP请求。
接着设置模型ID并创建管道:
model_id = "llava-hf/llava-1.5-7b-hf"
pipe = pipeline("image-to-text", model = model_id, model_kwargs = {})
load_dotenv()函数从与脚本位于同一目录的.env文件中加载环境变量,通过os.getenv(“hf_v”)获取敏感信息(如API密钥),出于安全考虑,这里未展示完整的HuggingFace API密钥。
在使用API密钥时,可以在项目目录中创建一个名为.env的隐藏文件,在其中添加API_KEY=YOUR_API_KEY_HERE(替换为实际密钥),然后在代码中通过load_dotenv(); api_key = os.getenv(“API_KEY”)来使用。
设置管道时,transformers库中的pipeline函数用于创建“图像到文本”任务的管道,这是一个可直接用于处理图像并生成文本描述的工具。
获取图像并设置提示指令:
image_url = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTdtdz2p9Rh46LN_X6m5H9M5qmToNowo-BJ-w&usqp=CAU"
image = Image.open(requests.get(image_url, stream = True).raw)
prompt_instructions = """ Act as an expert writer who can analyze an imagery and explain it in a descriptive way, using as much detail as possible from the image.The content should be 300 words minimum. Respond to the following prompt: """ + input_text
prompt = "USER: <image>" + prompt_instructions + "ASSISTANT:"
print(outputs[0]["generated_text"])
image = Image.open(requests.get(image_url, stream = True).raw)从URL获取图像并使用PIL打开,设置提示指令明确所需解释的类型并设定字数限制。
总结与展望
本文探索了LLaVA - 1.5的潜力,展示了其分析图像并生成有深度文本描述的能力,深入研究了演示中使用的代码,让我们对这些模型的内部工作原理有了初步了解。同时,也介绍了LLaVA - HR和LLaVA - NeXT等各种先进的LLaVA模型,鼓励大家进一步探索和试验。随着基础视觉模型的不断进步以及更强大的大语言模型的开发,多模态的未来一片光明。
更多推荐


所有评论(0)