Agent
文档处理
多模态人工智能
我们推出的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更准确的结果。
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 可以准确地描述图像中的细节。
Monkey 在密集文本问答任务中表现特别好。例如,在商品标签的密集文本中,Monkey 可以准确回答有关该商品的各种信息,与包括 GPT4V 在内的其他 LMMs 相比,Monkey的性能非常突出。
Monkey 在日常生活场景中也表现同样出色。它可以完成各种问答和字幕任务,详细描述图像中的各种细节,甚至是不显眼的水印。
与现有的 LMMs(包括 GPT4V、Qwen-vl 等)进行定性比较,Moneky 显示出令人鼓舞的结果。您可以尝试使用我们提供的演示。