部署Qwen2-VL-2B进行图片OCR识别及VLM推理

发布时间:2026/9/14 22:36:39

部署Qwen2-VL-2B进行图片OCR识别及VLM推理 1、配置相关环境首先需要建立一个conda虚拟环境我这里新建了一个名字为qwen2vl_cpu_env的虚拟环境。python -m venv qwen2vl_cpu_env之后激活虚拟环境激活后命令行前缀会显示qwen2vl_cpu_env。qwen2vl_cpu_env\Scripts\activate我使用CPU进行推理安装CPU的pytorch如果你有GPU推理会更快。pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu安装之后可以验证。python -c import torch; print(torch.__version__)之后安装其他依赖。pip install transformers accelerate qwen-vl-utils -i https://pypi.mirrors.ustc.edu.cn/simple/如果需要从国内 ModelScope 下载模型需要安装这个推荐解决下载太慢。pip install modelscope -i https://pypi.mirrors.ustc.edu.cn/simple/之后在虚拟环境激活状态下执行以下命令下载千问的模型权重以及其他配置文件。modelscope download --model qwen/Qwen2-VL-2B-Instruct --local_dir ./Qwen2-VL-2B-Instruct你在哪里执行的命令模型就放在哪里了比如我这个模型下载到了C: \Users\Andy里面。下载完成后当前目录下会出现Qwen2-VL-2B-Instruct文件夹约 4.5 GB。2、编写脚本使用千问进行推理编写以下脚本进行图像ocr识别并运用千问VLM以及自己写的提示词进行推理我是用锐龙9的CPU推理大概半分钟左右的时间。import torch from transformers import Qwen2VLForConditionalGeneration, AutoProcessor from qwen_vl_utils import process_vision_info # ---------- 配置 ---------- MODEL_PATH rC:\Users\Andy\Qwen2-VL-2B-Instruct IMAGE_PATH D:/Project/pythonproject/qwentest/test.png # 图片路径 DEVICE cpu # 用 CPU # ---------- 加载模型和处理器 ---------- # CPU 下必须用 float32默认且 device_mapcpu model Qwen2VLForConditionalGeneration.from_pretrained( MODEL_PATH, torch_dtypetorch.float32, device_mapcpu ) processor AutoProcessor.from_pretrained(MODEL_PATH) # ---------- 构造多模态消息 ---------- # 提示词明确要求只输出文字 prompt 我今天1430去洗澡有没有热水明确回答我有没有热水。 messages [ { role: user, content: [ {type: image, image: IMAGE_PATH}, {type: text, text: prompt}, ], } ] text processor.apply_chat_template(messages, tokenizeFalse, add_generation_promptTrue) image_inputs, video_inputs process_vision_info(messages) inputs processor( text[text], imagesimage_inputs, videosvideo_inputs, paddingTrue, return_tensorspt, ) # 将输入移到 CPU已经默认在 CPU但显式调用也无妨 inputs inputs.to(DEVICE) # ---------- 推理 ---------- print(正在推理CPU 速度较慢请耐心等待...) generated_ids model.generate( **inputs, max_new_tokens256, # CPU 下可减少 token 数加快速度 do_sampleFalse, ) # 去除输入部分 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_tokensTrue, clean_up_tokenization_spacesFalse ) print(识别结果) print(output_text[0])我这个图片和模型的路径都是绝对路径图片如下所示设置的提示词是我今天1430去洗澡有没有热水明确回答我有没有热水。运行结果如下可以看见千问通过图片OCR结果以及语言模型的固有知识回答了问题。视觉语言模型区别于传统流水式OCR识别在于其可以将图片里面不同的信息块结合起来作为整体来看这就是Transform架构的全局视野能力。千问VLM能整体理解图片中的文字内容其技术根源正是Transformer架构的自注意力机制。注意推理的时候内存会大幅使用使用CPU推理电脑内存至少要有32G的内存。
延伸阅读

更多相关文章

2026/9/12 21:59:55

Python与C/C++混合编程实战:四种方案深度解析与性能优化指南

1. 项目概述:为什么我们需要混合编程?干了这么多年开发,我越来越觉得,一个优秀的程序员不能只会一门语言。就像木匠不能只有一把锤子,面对不同的材料,你得有锯子、刨子、凿子。在真实的项目里,尤…

2026/9/13 21:47:24

数据结构:队列和栈的相互实现

文章目录前言一、队列实现栈1.2 代码的实现1.2.1结构体的构建1.2.2 初始化1.2.3 模型入栈1.2.4 模拟出栈并返回栈顶元素1.2.5 获取栈顶元素1.2.6 判空1.2.7 释放二 栈实现队列2.1 思路分析2.2 代码实现2.2.1 结构体的构建2.2.2 初始化2.2.3 将元素 x 推到队列的末尾(模拟入队)2…

2026/9/11 2:40:51

DPWM技术解析:高效电力电子转换的核心

1. DPWM技术背景与核心价值在电力电子领域,PWM(脉宽调制)技术堪称现代功率变换器的"心脏"。而DPWM(Discontinuous Pulse Width Modulation,不连续脉宽调制)作为PWM家族中的重要分支,其…

2026/9/14 22:36:02

EKF与AEKF在车辆状态估计中的原理与应用

1. 车辆状态估计模型EKF与AEKF技术解析在智能驾驶和车辆动力学控制领域,精确的车辆状态估计是保证系统安全性和控制精度的基础。传统传感器由于噪声干扰和测量限制,往往无法直接提供可靠的车辆状态信息。这正是卡尔曼滤波技术大显身手的领域——通过融合…

2026/9/14 22:36:02

嵌入式C语言二维数组深度解析:从内存布局到工程实践

1. 二维数组的本质认知1.1 先撕开二维数组的“二维”伪装很多菜鸟朋友刚开始接触二维数组时,总觉得这东西是两层的、平面的、像表格一样存在的结构。说实话,我在学嵌入式第一年也是这么理解的,直到后来被一个段错误差点搞到怀疑人生&#xff…

2026/9/14 22:36:02

C/C++宏定义高级技巧与工程实践

1. 宏定义的本质与基础用法在C/C开发中,#define指令是预处理器阶段最强大的工具之一。它不仅仅是简单的文本替换,更是一种元编程手段。让我们先看一个典型场景:#define PI 3.1415926这个定义会在编译前将所有PI替换为3.1415926。但实际工程中…

2026/9/14 22:36:02

激光双点烧蚀COMSOL仿真:固体传热与变形几何耦合建模实操

做激光加工仿真的朋友,应该都遇到过这样的需求:两个激光光斑同时打在铝合金表面,材料在极短时间内被加热、熔化、气化,表面留下烧蚀坑。这个现象用嘴说很简单,但真要在COMSOL里复现,麻烦事一个接一个——温…

2026/9/14 22:30:45

Django博客开发实战:从入门到部署

1. Django博客项目概述在Web开发领域,Django作为Python生态中最成熟的Web框架之一,以其"开箱即用"的特性深受开发者喜爱。一个基础的博客系统通常包含文章发布、分类管理、用户评论等核心功能,这正是初学者掌握Django框架的绝佳切入…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码