Qwen2.5-VL 与 Janus-Pro-7B 视觉理解能力对比评测
本文对比了 Qwen2.5-VL-7B 与 Janus-Pro-7B 在表格解析、数学解题及图像文字识别方面的表现。测试结果显示,Qwen2.5-VL-7B 在结构还原和逻辑推理上优于 Janus-Pro-7B,后者存在不回答或幻觉问题。尽管 7B 参数模型在复杂表格解析上仍有局限,但 Qwen2.5-VL 整体表现更佳。建议理性看待技术,避免无脑吹捧。

本文对比了 Qwen2.5-VL-7B 与 Janus-Pro-7B 在表格解析、数学解题及图像文字识别方面的表现。测试结果显示,Qwen2.5-VL-7B 在结构还原和逻辑推理上优于 Janus-Pro-7B,后者存在不回答或幻觉问题。尽管 7B 参数模型在复杂表格解析上仍有局限,但 Qwen2.5-VL 整体表现更佳。建议理性看待技术,避免无脑吹捧。

近期 Qwen 和 DeepSeek 都开源了多模态模型。Qwen 开源的是 Qwen2.5-VL,专注多模态(图像 + 视频)理解;DeepSeek 开源的是 Janus-Pro,既可以进行图像理解,也可以进行图片生成。
尽管 Janus-Pro 热度很高,但我实测了其图像理解能力,发现表现并不理想。本文旨在通过实际测试,理性评价两者的图像理解能力,避免无脑吹捧。
声明:本文没有贬低 Janus-Pro-7B 的意思,也未测试其图像生成能力,仅从图像理解角度进行评价。
为了有对比,我将 Qwen2.5-VL 与 Janus-Pro-7B 进行相同测试,比较结果。
Prompt:
Role 你是一位有多年经验的 OCR 表格识别专家。
Goals 需要通过给定的图片,识别表格里的内容,并以 html 表格结果格式输出结果。
Constrains - 需要认识识别图片中的内容,将每个表格单元格中的内容完整的识别出来,并填入 html 表格结构中;
- 图片中的表格单元格中可能存在一些占位符需要识别出来,例如 "-"、"—"、"/"等;
- 输出表格结构一定遵循图片中的结构,表格结构完全一致;
- 特别注意图片中存在合并单元格的情况,结构不要出错;
- 对于内容较多的图片,一定要输出完整的结果,不要断章取义,更不要随意编造;
- 最终输出结果需要是 html 格式的表格内容。
Initialization 请仔细思考后,输出 html 表格结果。
测试 1:
测试 2:
测试 3:
总结:昨天因为表格解析都出来了,我以为 7B 也能出来,不过也没出来,只能说明多模态再做表格解析部分还是有门槛的。光有相对的训练策略还不够,还需要模型足够大。
Prompt:请解题。
测试 4:
测试 5:
;。测试 6:
测试 7:
测试 8:
代码放在这里,图片和提示词都在上面,大家可以测测看。如果是我的代码有问题请指出。
from transformers import Qwen2_5_VLForConditionalGeneration, AutoTokenizer, AutoProcessor
from qwen_vl_utils import process_vision_info
model_path = "Qwen/Qwen2.5-VL-7B-Instruct/"
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
model_path, torch_dtype="auto", device_map="auto"
)
processor = AutoProcessor.from_pretrained(model_path)
query = ""
image_path = ""
messages = [
{
"role": "user",
"content": [
{
"type": "image",
"image": image_path,
},
{"type": "text", "text": query},
],
}
]
text = processor.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True
)
print("text:", text)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
text=[text],
images=image_inputs,
videos=video_inputs,
padding=True,
return_tensors="pt",
)
inputs = inputs.to("cuda")
generated_ids = model.generate(**inputs, max_new_tokens=4096)
generated_ids_trimmed = [
out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print("query: ", query)
print("output: ", output_text[0])
import torch
from transformers import AutoModelForCausalLM
from janus.models import MultiModalityCausalLM, VLChatProcessor
from janus.utils.io import load_pil_images
# specify the path to the model
model_path = "deepseek-ai/Janus-Pro-7B"
vl_chat_processor: VLChatProcessor = VLChatProcessor.from_pretrained(model_path)
tokenizer = vl_chat_processor.tokenizer
vl_gpt: MultiModalityCausalLM = AutoModelForCausalLM.from_pretrained(
model_path, trust_remote_code=True
)
vl_gpt = vl_gpt.to(torch.bfloat16).cuda().eval()
query = ""
image_path = ""
conversation = [
{
"role": "User",
"content": "<image_placeholder>\n{}".format(query),
"images": [image_path],
},
{"role": "Assistant", "content": ""},
]
# load images and prepare for inputs
pil_images = load_pil_images(conversation)
prepare_inputs = vl_chat_processor(
conversations=conversation, images=pil_images, force_batchify=True
).to(vl_gpt.device)
# # run image encoder to get the image embeddings
inputs_embeds = vl_gpt.prepare_inputs_embeds(**prepare_inputs)
# # run the model to get the response
outputs = vl_gpt.language_model.generate(
inputs_embeds=inputs_embeds,
attention_mask=prepare_inputs.attention_mask,
pad_token_id=tokenizer.eos_token_id,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id,
max_new_tokens=4096,
do_sample=True,
use_cache=True,
)
answer = tokenizer.decode(outputs[0].cpu().tolist(), skip_special_tokens=True)
print(f"{prepare_inputs['sft_format'][0]}")
print("query: ", query)
print("output: ", answer)
最后,再次强调,我是一个没有情感的评测机器,只是希望大家理性看待技术。可以吹,但别无脑吹!!!

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online