ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

DeepSeek-OCR-2 DeepEncoder V2如何工作:Qwen2双注意力与CLIP视觉编码器终极对比解析

DeepSeek-OCR-2 DeepEncoder V2如何工作:Qwen2双注意力与CLIP视觉编码器终极对比解析 DeepSeek-OCR-2 DeepEncoder V2如何工作Qwen2双注意力与CLIP视觉编码器终极对比解析【免费下载链接】DeepSeek-OCR-2Visual Causal Flow项目地址: https://gitcode.com/gh_mirrors/de/DeepSeek-OCR-2DeepSeek-OCR-2 是 DeepSeek 开源的文档 OCR 模型其核心升级是全新的视觉编码器DeepEncoder V2用 Qwen2 语言模型解码器替换旧版 CLIP ViT通过「非因果 因果」双注意力实现视觉因果流Visual Causal Flow配合动态分辨率将图片精准解析为 Markdown 文本。本文带你从源码层面拆解它如何工作并与 CLIP 视觉编码器做逐项对比。 为什么用语言模型替换 CLIP 视觉编码器上一代 DeepEncoder 的视觉链路是80M 16x Tokenizer CLIP ViT 300M全程使用非因果注意力双向注意力。CLIP 的预训练目标是「图文匹配」它的特征擅长描述图里有什么却没有固定的阅读顺序——对段落、表格、公式这类强顺序的文档内容天然表达力不足。DeepEncoder V2 的思路非常直接LM as Vision Encoder用语言模型当视觉编码器——把 Qwen2-0.5B约 500M 参数的解码器接在视觉特征之后并引入一组可学习查询learnable query让视觉特征按照新的阅读顺序被逐个读出这就是论文标题Visual Causal Flow的由来。左图是旧版 DeepEncoderCLIP ViT 300M纯非因果注意力右图是 DeepEncoder V2Qwen2 500M 可学习查询非因果 因果双注意力。 DeepEncoder V2 总体结构图像到视觉 Token 的四步链路在 vLLM 推理入口 deepseek_ocr2.py 中视觉主干的调用顺序一目了然sam_model → qwen2_model → projector对应四个环节SAM ViT-B 特征提取—— sam_vary_sdpa.py 中的 12 层 ViT-B大部分层用窗口注意力窗口 14 个 patch控制计算量第 2/5/8/11 层用全局注意力打通长程依赖随后经 neck 与两级 stride-2 卷积256→512→896 通道把 1024×1024 图像压缩成16×16×896的特征图实现 16 倍面积压缩。Qwen2 解码器当编码器用—— qwen2_d2e.py 构造了 24 层、hidden 896、14 头GQA2 个 KV 头的 Qwen2 主干并删除了embed_tokens直接以图像特征作为输入嵌入。可学习查询拼接—— 模型内置两组查询嵌入query_768144 个和query_1024256 个按输入分辨率自动选用拼接到图像 patch 特征之后。线性投影对齐—— build_linear.py 的MlpProjector用单层线性层把 896 维特征投到 1280 维对齐语言模型词表嵌入空间。⚡ 核心机制Qwen2 双注意力非因果 因果如何协同这是 DeepEncoder V2 最精妙的设计。Qwen2Decoder2Encoder.forwardqwen2_d2e.py给每个 token 发一个token_type_ids0 图像 patch → 非因果图像块之间互相全见可以双向整合整页上下文——相当于人眼先扫一眼整页。1 可学习查询 → 因果每个查询只能看到所有图像 patch 自身及前面的查询——相当于按顺序一行一行读。在_create_custom_4d_maskqwen2_d2e.py中这张自定义 4D 掩码正是如此构建的图像位置之间互相置 0开放而每个文本查询位置按text_positions[:i1]逐步开放。最后只取查询部分的输出y[:, n_query:, :]注释直接写明causal flow query得到一组带顺序的视觉 Token。 换句话说图像内部无偏互看读取过程严格单向。因果链强制特征按固定阅读顺序流动文档的段落结构、表格行列顺序因此得以被视觉 Token 天然编码——这就是视觉因果流。注意由于需要自定义注意力掩码该模块明确要求使用sdpa或eager实现不支持flash_attention_2qwen2_d2e.py。⚖️ DeepEncoder V2 vs CLIP 视觉编码器逐项对比对比维度DeepEncoder V1CLIPDeepEncoder V2Qwen2骨干网络CLIP ViT约 300MQwen2-0.5B 解码器约 500M注意力模式纯非因果双向非因果patch 因果query双模式可学习查询无144768 图/ 2561024 图阅读顺序无固定顺序新阅读顺序causal flow特征维度768896 → 投影至 1280位置编码绝对位置 相对位置RoPErope_theta1e6预训练目标图文匹配语言建模顺序依赖文档顺序建模弱强因果链天然表达对比要点V2 并没有更大就是更好而是借语言模型的归纳偏置——Transformer 解码器的因果结构本来就是为序列生成的把它反过来用来读图恰好补齐了 CLIP 缺失的顺序先验。️ 动态分辨率小图省 Token大图保细节DeepEncoder V2 与动态分辨率切块策略绑定工作image_process.py全局视图1 张 1024×1024BASE_SIZE产出256个视觉 Token负责版面全局理解局部视图按dynamic_preprocess自动切 (0~6) 块 768×768IMAGE_SIZE切块数由 config.py 的MIN_CROPS2/MAX_CROPS6约束每块产出144个 Token负责文字细节默认 Token 预算(0~6)×144 256个视觉 Token——小图只付 256复杂长文档最多约 1120在显存与精度之间取得平衡。 快速上手三种推理方式环境要求CUDA 11.8 PyTorch 2.6.0 vLLM 0.8.5见 README.md 与 requirements.txt。单图流式输出vLLM运行 run_dpsk_ocr2_image.pyPDF 并发解析vLLM运行 run_dpsk_ocr2_pdf.pyTransformers 推理运行 run_dpsk_ocr2.py两条常用提示词可在 config.py 切换文档转 Markdownimage|grounding|Convert the document to markdown.纯 OCR无版面imageFree OCR.更完整的架构论证可参考论文 DeepSeek_OCR2_paper.pdf。 总结DeepEncoder V2 的本质把 Qwen2-0.5B 解码器倒装成视觉编码器图像特征先入、查询后接双注意力是灵魂patch 间非因果互看整合全局query 间因果推进建立阅读顺序输出即视觉因果流对比 CLIP 的升级参数 300M→500M新增可学习查询与顺序先验更贴合文档级 OCR工程红利与 (0~6)×768 1×1024 动态分辨率组合视觉 Token 预算可控单图/整本 PDF 都能高效解析。理解了这套机制你就能明白 DeepSeek-OCR-2 为何能以更紧凑的视觉 Token把复杂文档读得又快又准。【免费下载链接】DeepSeek-OCR-2Visual Causal Flow项目地址: https://gitcode.com/gh_mirrors/de/DeepSeek-OCR-2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表