h2ovl-mississippi-800m项目介绍
项目背景
H2OVL-Mississippi-800M是由H2O.ai开发的一款紧凑而强大的视觉-语言模型。该模型包含8亿参数,尽管体积较小,但在文本识别方面提供了最先进的性能,特别是在OCRBench的文本识别领域中,它的表现甚至超越了一些体积更大的模型。Mississippi-800M建立在H2O-Danube语言模型的坚实架构之上,通过无缝集成视觉和语言任务,扩展了其能力。
关键特性
- 8亿参数:在性能和效率之间取得平衡,适合用于光学字符识别(OCR)和文档处理。
- 训练数据:模型在1900万对图像-文本组合数据上进行训练,重点关注OCR、文档理解以及图表、图形和表格的解读,从而优化其OCR性能。
使用方法
安装依赖
要使用该模型,需要安装以下Python依赖库:
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'User: {question}\nAssistant: {response}')
# 图像文本读取
image_file = './examples/image.jpg'
question = '<image>\nRead the text in the image.'
response, history = model.chat(tokenizer, image_file, question, generation_config, history=None, return_history=True)
print(f'User: {question}\nAssistant: {response}')
性能基准
H2OVL-Mississippi-800M已在多项基准测试中验证,其具有卓越表现,尤其是在OCRBench中表现突出。
JSON提取提示工程
项目还提供了一份指南,展示了如何创建提示以提取信息并将其转换为JSON格式。指南提供了从简单信息到复杂JSON结构提取的样例,以及处理表格和图表图像数据的方法。
示例:从图像提取简单信息
假设您有一张表单图像,其中包含“姓名”、“出生日期”和“地址”。
提示:
从表单图像中提取信息并将其结构化为JSON格式:
{
"name": "",
"date_of_birth": "",
"address": ""
}
预期输出:
{
"name": "John Doe",
"date_of_birth": "1990-01-01",
"address": "1234 Elm Street, Springfield"
}
最佳实践
- 明确意图:提示中明确定义所需的键和结构以避免歧义。
- 使用示例:提供样本输出以帮助系统理解预期格式。
- 考虑变化:考虑视觉数据可能的变化,确保提示可以适应这些变化。
- 从简单开始:从简单结构开始,逐渐增加复杂性。
- 测试和迭代:通过测试细化您的提示以确保输出的准确性和一致性。
致谢
感谢InternVL团队、LLaVA团队和Monkey团队的研究和技术贡献,他们的工作为改进多模态模型提供了重要帮助。
免责声明
使用该模型需注意可能存在偏见或冒犯内容的风险,用户需自行评估生成的内容,并通过合适渠道反馈,以便改进模型。模型使用者需对因使用者的使用或误用而导致的后果承担全部责任。