当前位置: 首页 > news >正文

部署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 = r"C:\Users\Andy\Qwen2-VL-2B-Instruct" IMAGE_PATH = "D:/Project/pythonproject/qwentest/test.png" # 图片路径 DEVICE = "cpu" # 用 CPU # ---------- 加载模型和处理器 ---------- # CPU 下必须用 float32(默认),且 device_map="cpu" model = Qwen2VLForConditionalGeneration.from_pretrained( MODEL_PATH, torch_dtype=torch.float32, device_map="cpu" ) processor = AutoProcessor.from_pretrained(MODEL_PATH) # ---------- 构造多模态消息 ---------- # 提示词明确要求只输出文字 prompt = "我今天14:30去洗澡有没有热水?明确回答我有没有热水。" messages = [ { "role": "user", "content": [ {"type": "image", "image": IMAGE_PATH}, {"type": "text", "text": prompt}, ], } ] text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) image_inputs, video_inputs = process_vision_info(messages) inputs = processor( text=[text], images=image_inputs, videos=video_inputs, padding=True, return_tensors="pt", ) # 将输入移到 CPU(已经默认在 CPU,但显式调用也无妨) inputs = inputs.to(DEVICE) # ---------- 推理 ---------- print("正在推理(CPU 速度较慢,请耐心等待)...") generated_ids = model.generate( **inputs, max_new_tokens=256, # CPU 下可减少 token 数,加快速度 do_sample=False, ) # 去除输入部分 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("识别结果:") print(output_text[0])

我这个图片和模型的路径都是绝对路径,图片如下所示:

设置的提示词是:我今天14:30去洗澡有没有热水?明确回答我有没有热水。

运行结果如下:

可以看见千问通过图片OCR结果以及语言模型的固有知识回答了问题。

视觉语言模型区别于传统流水式OCR识别在于其可以将图片里面不同的信息块结合起来作为整体来看,这就是Transform架构的全局视野能力。千问VLM能整体理解图片中的文字内容,其技术根源正是Transformer架构的自注意力机制。

注意推理的时候内存会大幅使用,使用CPU推理电脑内存至少要有32G的内存。

http://www.jsqmd.com/news/1211025/

相关文章:

  • Agent Harness 案例集锦
  • 开放智能体(Agentic)系统的三重断层与契约化落地路径
  • Apollo配置中心实战:从零搭建到生产级应用全流程指南
  • 2026 年现阶段邢台优秀的铝箔袋订做厂家怎么联系,揭秘它:厨房收纳的终极秘密武器 - 行业甄选官
  • Reducing Transformer Depth on Demand with Structured Dropout 解读
  • C++ Vector深度解析:从内存模型到高效编程实践
  • ACM模式与核心代码模式:编程竞赛与面试的两种解题方式
  • UE5自定义进度条:材质艺术与数学原理深度解析
  • 2026年7月最新乌鲁木齐卡地亚官方售后服务热线与网点地址查询 - 卡地亚官方售后中心
  • 【苍穹外卖 Day09|订单管理与配送范围校验】
  • Arduino制作辉光钟:复古电子与现代创客的完美结合
  • UE5智慧城市数字孪生:从蓝图交互到打包部署的完整实践
  • 8259A PIC中断机制解析与内核开发实践
  • WPS文档加密全攻略:从原理到实战,守护你的数字隐私
  • 2026 年当下,江东正规的石头工厂找哪家,挖出财富的秘密:那些被遗忘的石头价值 - 行业推荐官[官方】--
  • PCB设计制造与工程实践全解析
  • PCIe P2P传输技术解析与应用实践
  • 数字世界的“秘密潜入”:你的浏览器,可能正成为黑客的“隐形跳板”
  • 2026年7月新疆股权转让/新疆一般纳税人代账服务平台哪家靠谱_新疆银穗财税服务集团股份有限公司 - 品牌宣传支持者
  • 2026年7月目前比较好的螺旋钢管生产厂家口碑推荐,涂塑复合钢管/承插口连接钢管/防腐钢管/螺旋钢管,螺旋钢管企业哪家强 - 品牌推荐师
  • Agent Runtime归零时代:会话即事件日志的工程范式革命
  • QML Text 点击交互与富文本
  • Flutter iOS编译错误排查与解决方案
  • C++实现矩形排样优化:基于遗传算法的工程实践
  • 现代技术栈如何自动解决传统开发难题:从内存管理到安全防护
  • 现代C++线程池:从原理到生产级实现,掌握高性能并发编程
  • 江诗丹顿中国官方售后服务中心|地址与官方客服热线权威信息声明(2026年7月更新) - 江诗丹顿服务中心
  • 掌握AI Agent记忆秘诀:从“会调用工具“到“持续工作“的进阶之路(收藏学习)
  • TM4C123 GPIO与DMA外设标识寄存器详解与实战应用
  • UVa 696 How Many Knights