TextMonkey:一款比GPT4V效果更好的OCR开源视觉大模型

火山方舟向量数据库大模型

Agent 文档处理 多模态人工智能

picture.image

摘要

我们推出的TextMonkey是一款针对文档问题回答、场景文本分析等文本核心任务量身打造的大型多模态模型。我们在多个层面对模型进行升级:运用零初始化的Shifted Window Attention技术,确保高分辨率输入下的窗口间连通性,从而稳住早期训练阶段;我们推测图像中可能存在冗余令牌,并引入基于相似度的筛选机制,有效精简令牌数量的同时提升模型效能。而且,TextMonkey拓展了对文本定位、语义锚定的支持,并将位置信息嵌入模型输出,大大增强了模型的可解释性和降低了虚幻生成的风险。更值得一提的是,TextMonkey还可通过微调来习得理解和执行点击截图指令的能力。在一系列基准测试中,我们的方法显著提高了各项任务的表现,分别在Scene Text-Centric VQA、Document Oriented VQA和KIE任务上取得了5.2%、6.9%和2.8%的增长,尤其是在OCR Bench上得分高达561,一举超越先前开源的所有大规模多模态文档理解模型。相关代码即将在GitHub平台(https://github.com/Yuliang-Liu/Monkey)上公布。

效果

对于一些随机图片Monkey可以取得比GPT4V更准确的结果。picture.image

安装使用
  
conda create -n monkey python=3.9  
conda activate monkey  
git clone https://github.com/Yuliang-Liu/Monkey.git  
cd ./Monkeypip install -r requirements.txt
  
from transformers import AutoModelForCausalLM, AutoTokenizer  
checkpoint = "echo840/Monkey"  
model = AutoModelForCausalLM.from_pretrained(checkpoint, device_map='cuda', trust_remote_code=True).eval()  
tokenizer = AutoTokenizer.from_pretrained(checkpoint, trust_remote_code=True)  
tokenizer.padding_side = 'left'  
tokenizer.pad_token_id = tokenizer.eod_id  
img_path = ""  
question = ""  
query = f'<img>{img_path}</img> {question} Answer: ' #VQA  
# query = f'<img>{img_path}</img> Generate the detailed caption in English: ' #detailed caption  
  
input_ids = tokenizer(query, return_tensors='pt', padding='longest')  
attention_mask = input_ids.attention_mask  
input_ids = input_ids.input_ids  
  
pred = model.generate(  
            input_ids=input_ids.cuda(),  
            attention_mask=attention_mask.cuda(),  
            do_sample=False,  
            num_beams=1,  
            max_new_tokens=512,  
            min_new_tokens=1,  
            length_penalty=1,  
            num_return_sequences=1,  
            output_hidden_states=True,  
            use_cache=True,  
            pad_token_id=tokenizer.eod_id,  
            eos_token_id=tokenizer.eod_id,  
            )  
response = tokenizer.decode(pred[0][input_ids.size(1):].cpu(), skip_special_tokens=True).strip()  
print(response)
效果

Monkey 可以准确地描述图像中的细节。

picture.image

Monkey 在密集文本问答任务中表现特别好。例如,在商品标签的密集文本中,Monkey 可以准确回答有关该商品的各种信息,与包括 GPT4V 在内的其他 LMMs 相比,Monkey的性能非常突出。

picture.image

picture.image

Monkey 在日常生活场景中也表现同样出色。它可以完成各种问答和字幕任务,详细描述图像中的各种细节,甚至是不显眼的水印。

picture.image

与现有的 LMMs(包括 GPT4V、Qwen-vl 等)进行定性比较,Moneky 显示出令人鼓舞的结果。您可以尝试使用我们提供的演示。

picture.image

引用链接

[1] : https://arxiv.org/abs/2403.04473

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论