模型简介
模型特点
模型能力
使用案例
🚀 H2OVL-Mississippi-800M模型
H2OVL-Mississippi-800M是H2O.ai推出的一款紧凑而强大的视觉语言模型,拥有8亿参数。尽管模型规模较小,但它在文本识别方面表现出色,在OCRBench的文本识别部分表现卓越,超越了该领域中许多更大的模型。该模型基于H2O-Danube语言模型的强大架构构建,通过无缝集成视觉和语言任务,扩展了其功能。
[📜 H2OVL-Mississippi论文] [🤗 HF演示] [🚀 快速开始]

✨ 主要特性
- 参数规模适度:拥有8亿参数,在性能和效率之间取得平衡,适用于OCR和文档处理。
- 训练数据丰富:在1900万图像文本对上进行训练,专注于OCR、文档理解以及图表和表格解释,针对卓越的OCR性能进行了优化。

📚 详细文档
多基准测试中相似规模模型的性能比较 - OpenVLM排行榜
模型 | 参数 (B) | 平均得分 | MMBench | MMStar | MMMUVAL | Math Vista | Hallusion | AI2DTEST | OCRBench | MMVet |
---|---|---|---|---|---|---|---|---|---|---|
Qwen2-VL-2B | 2.1 | 57.2 | 72.2 | 47.5 | 42.2 | 47.8 | 42.4 | 74.7 | 797 | 51.5 |
H2OVL-Mississippi-2B | 2.1 | 54.4 | 64.8 | 49.6 | 35.2 | 56.8 | 36.4 | 69.9 | 782 | 44.7 |
InternVL2-2B | 2.1 | 53.9 | 69.6 | 49.8 | 36.3 | 46.0 | 38.0 | 74.1 | 781 | 39.7 |
Phi-3-Vision | 4.2 | 53.6 | 65.2 | 47.7 | 46.1 | 44.6 | 39.0 | 78.4 | 637 | 44.1 |
MiniMonkey | 2.2 | 52.7 | 68.9 | 48.1 | 35.7 | 45.3 | 30.9 | 73.7 | 794 | 39.8 |
MiniCPM-V-2 | 2.8 | 47.9 | 65.8 | 39.1 | 38.2 | 39.8 | 36.1 | 62.9 | 605 | 41.0 |
InternVL2-1B | 0.8 | 48.3 | 59.7 | 45.6 | 36.7 | 39.4 | 34.3 | 63.8 | 755 | 31.5 |
PaliGemma-3B-mix-448 | 2.9 | 46.5 | 65.6 | 48.3 | 34.9 | 28.7 | 32.2 | 68.3 | 614 | 33.1 |
H2OVL-Mississippi-0.8B | 0.8 | 43.5 | 47.7 | 39.1 | 34.0 | 39.0 | 29.6 | 53.6 | 751 | 30.0 |
DeepSeek-VL-1.3B | 2.0 | 39.6 | 63.8 | 39.9 | 33.8 | 29.8 | 27.6 | 51.5 | 413 | 29.2 |
🚀 快速开始
安装依赖
pip install transformers torch torchvision einops timm peft sentencepiece flash_attn
示例演示
import torch
from transformers import AutoConfig, AutoModel, AutoTokenizer
# 设置模型和分词器
model_path = 'h2oai/h2ovl-mississippi-800m'
config = AutoConfig.from_pretrained(model_path, trust_remote_code=True)
config.llm_config._attn_implementation = 'flash_attention_2'
model = AutoModel.from_pretrained(
model_path,
torch_dtype=torch.bfloat16,
config=config,
low_cpu_mem_usage=True,
trust_remote_code=True).eval().cuda()
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True, use_fast=False)
generation_config = dict(max_new_tokens=2048, do_sample=True)
# 纯文本对话
question = 'Hello, how are you?'
response, history = model.chat(tokenizer, None, question, generation_config, history=None, return_history=True)
print(f'用户: {question}\n助手: {response}')
# 单张图像示例
image_file = './examples/image.jpg'
question = '<image>\n读取图像中的文本。'
response, history = model.chat(tokenizer, image_file, question, generation_config, history=None, return_history=True)
print(f'用户: {question}\n助手: {response}')
📚 详细文档
JSON提取的提示工程
概述
本指南演示了如何创建提示以提取信息并将其转换为结构化的JSON输出。从基本示例开始,逐步过渡到更复杂的JSON结构,包括处理表格和图表图像中的数据。目标是帮助用户设计可用于各种应用程序(如自然语言处理、聊天机器人或从视觉输入中提取数据)的有效提示。
目录
入门指南
要开始从图像中提取JSON数据,必须清楚了解要提取的视觉内容以及所需JSON输出的结构。以下示例将指导您如何构建提示以实现这一目标。
示例1:从图像中提取简单信息
假设场景:您有一张包含基本信息(如“姓名”、“出生日期”和“地址”)的表单图像。 提示:
从表单图像中提取详细信息并将其结构化为JSON格式:
{
"name": "",
"date_of_birth": "",
"address": ""
}
预期输出:
{
"name": "John Doe",
"date_of_birth": "1990-01-01",
"address": "1234 Elm Street, Springfield"
}
示例2:从图像中提取嵌套信息
假设场景:您有一张包含详细个人信息(包括联系信息和紧急联系人)的表单图像。 提示:
从表单中提取信息并按以下格式进行格式化:
{
"personal_details": {
"name": "",
"age": 0,
"gender": ""
},
"contact": {
"phone": "",
"email": ""
},
"emergency_contact": {
"name": "",
"relation": "",
"phone": ""
}
}
预期输出:
{
"personal_details": {
"name": "Sarah Connor",
"age": 35,
"gender": "Female"
},
"contact": {
"phone": "555-1234",
"email": "sarah.connor@example.com"
},
"emergency_contact": {
"name": "Kyle Reese",
"relation": "Friend",
"phone": "555-5678"
}
}
示例3:从图像中提取列表和数组
假设场景:您有一张列出多个事件、其时间和地点的日程安排图像。 提示:
从日程安排图像中提取事件详细信息并将其结构化为JSON:
{
"events": [
{
"name": "",
"time": "",
"location": ""
}
]
}
预期输出:
{
"events": [
{
"name": "Morning Meeting",
"time": "09:00 AM",
"location": "Conference Room 1"
},
{
"name": "Lunch Break",
"time": "12:00 PM",
"location": "Cafeteria"
},
{
"name": "Project Update",
"time": "02:00 PM",
"location": "Conference Room 2"
}
]
}
示例4:从图像中提取表格数据
表格图像通常包含需要解析并转换为JSON的结构化数据。以下示例演示了如何处理表格数据提取。 假设场景:您有一张列出产品名称、价格和数量的表格图像。 提示:
从表格图像中提取数据并将其格式化为JSON:
{
"products": [
{
"product_name": "",
"price": "",
"quantity": 0
}
]
}
预期输出:
{
"products": [
{
"product_name": "Apples",
"price": "$2",
"quantity": 10
},
{
"product_name": "Bananas",
"price": "$1",
"quantity": 20
},
{
"product_name": "Oranges",
"price": "$3",
"quantity": 15
}
]
}
示例5:从图像中提取图表数据
图表包含需要准确提取的元数据和数据点。以下是如何构建提示以从图像中提取图表数据的方法。 假设场景:您有一张显示月度销售数据的柱状图图像。 提示:
从图像中提取柱状图的详细信息,包括标题、轴标签和数据点,并将其格式化为JSON:
{
"chart": {
"title": "",
"x_axis": "",
"y_axis": "",
"data_points": [
{
"label": "",
"value": 0
}
]
}
}
预期输出:
{
"chart": {
"title": "Monthly Sales Report",
"x_axis": "Months",
"y_axis": "Sales (in $)",
"data_points": [
{
"label": "January",
"value": 500
},
{
"label": "February",
"value": 600
},
{
"label": "March",
"value": 700
}
]
}
}
最佳实践
- 明确清晰:在提示中明确定义所需的键和结构,以避免歧义。
- 提供示例:提供示例输出,以便系统理解预期格式。
- 考虑变化:考虑视觉数据中可能的变化,并确保提示能够适应这些变化。
- 从简单开始:从简单的结构开始,根据需要逐步增加复杂性。
- 测试和迭代:通过测试优化提示,以确保输出的准确性和一致性。
📄 许可证
本项目采用Apache-2.0许可证。
致谢
我们感谢OpenGVLab的InternVL团队的研究和代码库,我们在此基础上进行了构建和扩展。我们也感谢LLaVA团队和Monkey团队在改进多模态模型方面的见解和技术。
免责声明
在使用本仓库中提供的大语言模型之前,请仔细阅读本免责声明。您使用该模型即表示您同意以下条款和条件。
- 偏差和冒犯性:大语言模型在各种互联网文本数据上进行训练,这些数据可能包含有偏见、种族主义、冒犯性或其他不适当的内容。使用此模型即表示您承认并接受生成的内容有时可能表现出偏差或产生冒犯性或不适当的内容。本仓库的开发者不认可、支持或推广任何此类内容或观点。
- 局限性:大语言模型是基于AI的工具,而非人类。它可能会产生不正确、无意义或不相关的响应。用户有责任批判性地评估生成的内容并自行决定是否使用。
- 风险自担:使用此大语言模型的用户必须对使用该工具可能产生的任何后果承担全部责任。本仓库的开发者和贡献者不对因使用或滥用所提供模型而导致的任何损害、损失或伤害承担责任。
- 道德考量:鼓励用户负责任和道德地使用大语言模型。使用此模型即表示您同意不将其用于促进仇恨言论、歧视、骚扰或任何形式的非法或有害活动。
- 问题报告:如果您遇到大语言模型生成的任何有偏见、冒犯性或其他不适当的内容,请通过提供的渠道向仓库维护者报告。您的反馈将有助于改进模型并减轻潜在问题。
- 免责声明变更:本仓库的开发者保留随时修改或更新本免责声明的权利,无需事先通知。用户有责任定期查看免责声明,以了解任何变更。
使用本仓库中提供的大语言模型即表示您同意接受并遵守本免责声明中规定的条款和条件。如果您不同意本免责声明的任何部分,您应避免使用该模型及其生成的任何内容。








