Chapter 13:附录——工具速查与工程模板 (Appendix)

1. 开篇段落

在完成了前面十二章关于视觉理解模型(VLM/MLLM)的基准评测、数据构建与迭代优化的学习后,本附录旨在为你提供一套“随时可查”的工程工具箱

在实际工作中,我们往往不需要反复推导公式,但需要快速确认某个数据集的评测标准是否包含了“大小写敏感”;我们不需要从头编写清洗脚本,但需要一份可靠的“过滤规则清单”来指导数据工程;我们需要向团队展示成果,因此需要一份标准化的“报告模板”。本章汇集了常用基准的元数据速查、核心指标的数学逻辑、数据清洗的黄金法则以及专业的汇报格式。

本章学习目标

  • 能够快速检索主流 Benchmark 的核心属性与适用场景。
  • 深入理解并能口述核心评测指标(IoU, ANLS, Relaxed Accuracy)的计算逻辑。
  • 掌握一套通用的数据清洗与过滤规则清单。
  • 学会使用标准化的图表和表格形式汇报模型评测结果。

2. 附录内容详解

Appendix A:常用基准与数据集速查表

为了方便选型,我们将前文中提到的核心 Benchmark 按任务类型进行了结构化整理。

A.1 综合与推理类 (General & Reasoning)

| 基准名称 | 核心能力 | 数据形式 | 评测指标 | 特性备注 |

基准名称 核心能力 数据形式 评测指标 特性备注
MMMU 大学水平多学科推理 图文混合 (30+学科) Accuracy (MCQ/Open) 专家级知识,需深层推理,难度极高
MMVet 综合能力集成 图像 + 复杂指令 GPT-4 based Score 考察模型回答的完整性与逻辑性
MathVista 数学推理 几何图/函数图/谜题 Accuracy 视觉与数学符号的跨模态对齐
MME 感知与认知 纯图像对 Accuracy + Score 也是一种“是非题”形式,能够快速扫描能力

A.2 OCR 与文档类 (OCR & Document)

| 基准名称 | 核心能力 | 数据形式 | 评测指标 | 特性备注 |

基准名称 核心能力 数据形式 评测指标 特性备注
OCRBench v2 全栈 OCR 能力 场景文本/文档/公式 Score (加权总分) 无需调用 API,答案既定,评测便捷
DocVQA 文档信息抽取 扫描文档/表单 ANLS 关注文档布局与细粒度文字定位
ChartQA 图表理解 柱/线/饼图 Relaxed Accuracy 需处理数值近似,常伴随复杂数值计算
TextVQA 场景文字问答 自然场景图片 Accuracy (EM) 文字往往变形、遮挡,需结合场景语义

A.3 视频与定位类 (Video & Grounding)

| 基准名称 | 核心能力 | 数据形式 | 评测指标 | 特性备注 |

基准名称 核心能力 数据形式 评测指标 特性备注
MVBench 视频多任务 短视频片段 Accuracy 提供20项细分能力(动作、物体、计数等)
LongVideoBench 长时序记忆 长视频 (几分钟-小时) Accuracy 考察“大海捞针”与长程因果推理
RefCOCO/g/+ 视觉定位 (Grounding) 图像 + 指令 IoU / Acc@0.5 核心是输出 Bounding Box,考验空间感知

Appendix B:指标与评分函数逻辑 (Metric Logic)

这里不提供代码,而是提供实现逻辑(Rule-of-Thumb),用于指导你编写或检查评测脚本。

B.1 Exact Match (EM) vs. Relaxed Accuracy

  • Exact Match (EM):
  • 逻辑: 预测字符串.strip().lower() == 标签字符串.strip().lower()
  • 应用: 简单的 VQA,选择题(A/B/C/D)。

  • Relaxed Accuracy (数值容忍度):

  • 场景: ChartQA 或 MathVista 中,答案是 "10.5",模型输出 "10.49"。
  • 逻辑: 1. 从预测文本和标签中提取所有数值。 2. 如果包含非数字文本(单位等),需进行文本归一化。 3. 检查 abs(预测值 - 标签值) / abs(标签值) 是否小于阈值(通常为 5%)。

B.2 ANLS (Average Normalized Levenshtein Similarity)

  • 场景: DocVQA, OCR 相关任务。
  • 逻辑:

  • 如果 score < 阈值(如 0.5),则记为 0。

  • 这意味着如果拼写错误太多,直接不得分,而不是得低分。

B.3 IoU (Intersection over Union)

  • 场景: Grounding, RefCOCO。
  • 逻辑:

  • 可视化理解:

   +-------+
   |   gt  |
+--+----+  |
|  | inter |
|  +-------+
| pred  |
+-------+
Union = (Area_pred + Area_gt) - Area_inter

Appendix C:数据清洗规则模板 (Data Cleaning Rules)

构建高质量训练集时,可直接套用以下过滤漏斗。

C.1 基础元数据过滤 (Metadata Filter)

  1. 分辨率: 移除 min(H, W) < 224max(H, W) / min(H, W) > 3.0 (极端长宽比) 的图片。
  2. 文本长度: 移除 Caption 长度 < 3 个单词或 > 500 个单词(视任务而定)的样本。
  3. 语言: 使用 fasttext 等工具识别语言,仅保留目标语言(如 En/Zh)。

C.2 内容质量过滤 (Content Quality)

  1. CLIP Score: 计算 Image-Text 匹配度。移除分数低于阈值(如 Bottom 10%)的样本。
  2. 复杂度过滤: 移除图像熵过低(如纯色图、全黑全白图)的样本。
  3. OCR 密度: 对于 OCR 数据,移除检测到的文本框数量为 0 的样本。

C.3 去重与隐私 (Deduplication & Safety)

  1. MD5/SHA256: 移除完全重复的文件。
  2. MinHash/SimHash: 移除文本高度相似的样本。
  3. Image Embedding: 计算向量余弦相似度,移除视觉重复图片(去重阈值通常 > 0.9)。
  4. PII Masking: 正则匹配并替换 手机号、邮箱、身份证号、人脸(需专用模型)。

Appendix D:报告与图表模板

D.1 雷达图结构 (Radar Chart Concept)

用于展示模型在不同能力维度(如 MMMU 的不同学科,或 MVBench 的不同任务)的得分。

       推理 (Reasoning)
             ^
             | 80%
      +------+------+
     /       |       \
OCR +--------+--------+ 视觉感知 (Perception)
     \     60|       /
      +------+------+
             |
             v
       知识 (Knowledge)

* 此图用于直观对比 Baseline 模型与新模型的短板。

D.2 错误分析矩阵 (Error Analysis Matrix)

在报告中,不要只给一个总分,必须包含下表:

| 错误类型 | 占比 (%) | 典型案例描述 (One-line) | 改进假设 |

错误类型 占比 (%) 典型案例描述 (One-line) 改进假设
指令遵循失败 15% 问是否,回答了具体内容 增加 SFT 指令数据的多样性
OCR 识别错误 30% "Apple" 识别为 "App1e" 引入更高分辨率的 OCR 预训练数据
幻觉 (Hallucination) 25% 图片无猫,描述有猫 增加负样本(Negative Samples)训练
推理逻辑中断 30% 第一步算对,总结出错 引入 CoT (Chain-of-Thought) 数据

3. 本章小结

  • 速查表是选型的指南针:做文档看 OCRBench/DocVQA,做逻辑看 MMMU/MathVista。
  • 指标决定优化的方向:OCR 关注字符级准确率 (ANLS),Grounding 关注像素级重合 (IoU),推理关注数值容忍度。
  • 数据清洗是模型效果的基石:遵循“元数据 -> 内容质量 -> 去重隐私”的三级漏斗。
  • 报告要关注可解释性:除了 Score,必须包含错误归因分析。

4. 练习题

基础题 (50%)

  1. [基准匹配] 你正在开发一个用于自动批改小学生数学作业(包含手写公式和几何图)的模型。请从 Appendix A 中选择两个最相关的 Benchmark 作为验证集,并说明理由。
  2. [指标计算] 在计算 IoU 时,如果预测框(Prediction)完全包含在真值框(Ground Truth)内部,且面积是真值框的一半。请口算此时的 IoU 是多少?
  3. [清洗规则] 为什么在预训练数据清洗中,要剔除“长宽比极端(如 > 3.0)”的图片?这对 ViT (Vision Transformer) 类的模型有什么具体影响?

挑战题 (50%)

  1. [指标设计] ChartQA 评测中提到 "Relaxed Accuracy"。如果让你设计一个针对 “股票K线图分析” 的评测指标,你会如何定义“正确”?(提示:股票分析不仅看数值,还看趋势预测)。
  2. [工程陷阱] 在计算 TextVQA 的 Accuracy 时,你发现你的模型得分为 0,但人工检查发现回答是正确的(例如 GT="12.5%",Pred="12.5")。请结合 Appendix B 提出三种可能的代码实现 bug。
  3. [综合实战] 你需要向老板汇报一个新模型的性能。除了展示雷达图外,老板更关心“为什么这个模型在 OCR 任务上比竞品差”。请利用 Appendix D 的思路,设计一个汇报页面的结构。
点击查看参考答案
  1. [基准匹配]
  • 选择: MathVistaOCRBench v2
  • 理由: MathVista 专门针对包含视觉元素的数学推理(几何、函数);OCRBench v2 包含手写公式识别能力。两者结合能覆盖“识别+推理”。
  1. [指标计算]
  • 答案: 0.5 (即 1/2)。
  • 解析:
  • 设 , 。
  • 因为 Pred 在 GT 内,所以 。
  1. [清洗规则]
  • 原因: 极端的长宽比在进入模型前通常会被 Resize 或 Padding。
  • 影响: 1. 如果 Resize 成正方形,图像会严重失真,破坏语义。 2. 如果 Padding,会引入大量无效的 Patch(对于 ViT),浪费计算资源且干扰注意力机制。
  1. [指标设计] (开放性)
  • 建议采用 加权混合指标: 1. 数值准确性: 关键点(开盘/收盘价)使用 Relaxed Accuracy。 2. 趋势一致性: 预测涨跌方向(分类 Accuracy)。 3. 逻辑对齐: 如果生成文字解释,计算其与专家解释的语义相似度(如 BERTScore)。
  1. [工程陷阱]
  • Bug 1 (标点/单位): 评测代码未进行 normalization,未去除 "%"、"$" 等符号。
  • Bug 2 (Tokenization): 某些 Tokenizer 会在数字前自动加空格,导致字符串不匹配。
  • Bug 3 (包含匹配 vs 精确匹配): 代码使用了 strict equality (==) 而不是检查包含关系,或者未处理浮点数精度问题。
  1. [综合实战]
  • 页面结构: 1. Headline: OCR 性能落后主要源于“手写体”和“密集表格”场景。 2. 数据对比: 展示训练数据分布,指出我方在“手写数据”上的占比(如 5%)远低于竞品估计值(20%)。 3. Bad Case 聚类: 展示一组失败案例,不仅放图,还要高亮“识别错误的字”和“漏检的区域”。 4. Action Plan: 计划引入 SynthText 生成手写数据,预计提升 ANLS 5个点。

5. 常见陷阱与错误 (Gotchas)

  • 陷阱一:盲目信任 Leaderboard 总分
  • 很多模型在 ChartQA 上分数高,是因为它们把所有数字都背下来了(数据泄漏),而不是真的会看图。必须检查子任务得分或自己跑一遍 Test set。

  • 陷阱二:清洗规则过于激进

  • 移除所有“短 Caption”的数据可能导致模型不会输出简洁的答案(如“Yes/No”),导致在 MME 或 boolean questions 上性能下降。保留一定比例的短数据

  • 陷阱三:IoU 计算未处理 Empty Box

  • 在 Grounding 任务中,如果模型未预测出任何框(空集),代码直接计算 IoU 可能会报 DivisionByZero 错误,或者错误地赋予一个默认值。应明确规定空预测记为 0 分

  • 陷阱四:PDF 转图片的 DPI 设置不一

  • 在对比 OCR 性能时,如果你的测试集图片是 72 DPI,而竞品用的是 300 DPI,你的模型会因为文字模糊而“冤死”。确保评测时的输入分辨率一致