在这里插入图片描述

一、拍照识题与解题(以国际大数据竞赛为例)

2025IKCEST第七届“一带一路”国际大数据竞赛暨 第十一届百度&西安交大大数据竞赛-torch

  • 项目背景:当前,大模型技术快速发展,人工智能文图识别技术已经深入到生活与工作场景的方方面面。除了文本写作、阅读场景,数理题目识别与解题也是文图识别领域的重要研究方向。今年赛题首次鼓励选手使用开源大模型加入算法设计,关注模型推理能力的提升;大模型的加入将为识题、解题提供更大的创新空间。
  • 比赛要求:通过手机拍摄的题目照片,对小学至大学阶段的数学题目进行解题,题目类型包括常见的选择题、填空题、计算应用题等。
  • 解决方案:选手可通过传统视觉算法或大模型(文本或多模态均可,模型参数量<4B),对题目照片进行图像预处理-文本与图形检测-OCR 识别-解题推理等,最终输出题目答案。

1、模型选择

赛题选型建议
若数据集 >80% 为纯文字数学题:推荐OCR+LLM,推理速度快、易于微调和调试。
若数据集含较多几何/图形类题目:推荐多模态模型,图像理解优势明显。

2、数据说明

维度 详细描述 影响与挑战
样本规模 极度稀缺,仅12张题目图片 训练和微调样本不足,难以覆盖题型与布局多样性,模型泛化受限。
题型多样性 涉及选择题、填空题、计算应用题,难度跨度从小学到大学。 不同题型逻辑结构差异大,需灵活适配解题策略,推理流程复杂。
语言混合 中英文及数学符号混排,包含上下标、希腊字母、数字等多字符类型。 跨语种、符号识别难度高,对OCR和多模态视觉语言理解能力提出挑战。
图文融合 题目中含文本、复杂公式及图形,版面无固定排布。 模型需理解多模态信息间语义及空间关系,数据稀缺限制联合学习效果。
图像质量 手机拍摄,光照不均、旋转模糊、阴影遮挡、变形等多种干扰。 降低视觉编码和OCR识别精度,增加鲁棒性设计难度。
标注质量 存在脏标注,答案错误或格式不统一,缺乏规范标准。 训练信号噪声大,模型易误学习错误信息,评估结果不稳定。
布局复杂 题干、选项、图形分布无固定模式,空间结构多变。 版面解析难度大,影响文本与图形的准确定位及语义关联。
隐含知识 数学定理、单位换算等隐含信息未显式标注。 依赖模型外部知识或推理机制,难以单靠数据本身学习。
多模态训练限制 资源有限,模型参数<4B,且样本不足。 多模态端到端训练难以收敛,推理稳定性和准确性受限。

3、解决方案:多模态(Qwen2.5-VL-3B-Instruct)

针对倾向多模态方案(Qwen2.5-VL-3B-Instruct),结合前述数据集分析,以下表格给出具体的解题策略与数据集完善措施,以克服数据局限,提升模型性能和稳定性:

挑战点 多模态解题策略 数据集完善措施
极端小样本规模 - 利用预训练大模型做少样本推理
- 采用零/少样本学习和提示工程
- 生成合成数据(题目图片+答案)
- 数据增强(旋转、光照、模糊)
- 跨域迁移学习辅助训练
题型多样性和多语言 - 设计多任务提示词,分类型调用对应子模型或子模块
- 集成语言识别模块实现中英切换
- 标注各题型与语言标签,构建多语种多题型数据集
- 对复杂符号和公式专门标注结构化表达
图文融合复杂度 - 设计联合视觉-语言融合模块
- 结合结构化图形解析器辅助理解
- 设计图文对齐训练任务
- 收集并标注图形区域及对应语义信息
- 标注图形与文本的对应关系,辅助多模态对齐训练
图像质量问题 - 训练视觉编码器具备鲁棒特征抽取
- 多尺度、多视角输入增强模型鲁棒性
- 采集多样化拍摄条件数据
- 标注图像质量信息,供模型自适应调整推理策略
脏标注及格式多样性 - 设计模型自检与纠错机制(交叉验证、多路输出一致性检查)
- 训练对噪声标签具备鲁棒性
- 多人复核标注,提升标签准确率
- 制定统一标注规范及格式标准
复杂布局结构 - 引入视觉注意力机制,强化空间关系学习
- 使用版面结构分析模块分割并编码布局
- 细化版面元素标注(题干、选项、图形等分层标注)
- 采集多种布局样本,支持模型泛化
隐含数学知识 - 结合符号计算引擎(如SymPy)实现推理辅助
- 增加知识提示模块,辅助模型调用外部知识
- 构建数学知识库及对应推理步骤样本
- 标注单位、公式推导等隐含信息
多模态模型资源限制 - 采用轻量化多模态模型或知识蒸馏技术
- 模型推理时分阶段处理,先视觉编码再语言推理
- 精简标注内容,聚焦核心多模态交互信息
- 优化样本结构以适配轻量模型

4、解题思路:识别题目 - 解答题目 - 提取答案

核心原则:看得清→想得对→答得准,并且 " 任何一步失败,都能被上游/下游发现并纠正 " 。

二、经验分享

1、大模型性能分析:OCR+LLM 和 VLM

对比维度 OCR+LLM 模型(识题 + 解题分离) 多模态大模型(端到端视觉-语言)
架构特点 独立的 OCR 模块(文字识别)+ LLM 模块(文本推理);可单独升级和调试;
过程白盒,可精确定位并优化识题或解题弱项
图像直接输入,统一编码图像与文本特征进行推理;
过程黑盒,内部细节难以针对性调整
优势 ① 模型组合灵活,可在 4B 限制下自由分配 OCR 与 LLM 参数
② 相同参数规模下,数学推理能力通常优于 VLM
③ 可单独微调 OCR 或 LLM,降低训练成本
④ 提供中间文本结果,便于校验和规则增强
⑤ 对算力要求相对低,推理速度快
① 可直接处理几何题、图表等视觉任务
② 无需复杂预处理,识题漏检率极低,抗干扰能力强
③ 支持多模态输入(图文/视频),场景覆盖广
④ 图像理解能力强,可直接利用布局、图形等特征
劣势 ① 无法直接解析图形(几何题表现差)
② OCR 可能漏掉关键信息或识别错误
③ 数据处理链路长,整体延迟易受多环节影响
① 数学推理能力偏弱,需要额外大规模微调
② 无法仅针对推理或识题单独增强
③ 参数规模大,对显存与算力要求高,推理速度慢
改进思路 ① 微调 OCR 提升文本识别精准度
② 增加 OCR 输出文本清洗与错误纠正
③ 集成多个 LLM 提高鲁棒性
④ 在总参数充裕时加入图像编码器处理几何题
① 冻结视觉编码器,SFT 训练多模态数学题+单文本题(比例 3:7)
② 用 DPO/GRPO 等方法减少生成冗余
③ 尝试全量微调以提升推理一致性
适用场景 数据集中文本类题占多数(>80%),适合高效批量推理;表格、票据、OCR任务 含大量几何题、图表题或跨模态推理任务
推荐指数(赛题) ★★★★(文本类题型占多数时优势明显) ★★★★☆(图形类题型占多数时优势明显)
推理速度优化备注 ① 硬件升级(更高算力 GPU)
② 模型轻量化(减少参数量)
③ 软件层批处理、流水线调度对 VLLM 效果有限,且可能降低精度
首次推理会有明显时延(加载模型、编译计算图、缓存初始化),后续调用速度显著提升
① 同左,但多模态模型首次加载耗时更高
② 参数压缩与量化可提升速度,但可能影响图像理解精度

2、大模型性能影响因素

1、参数量

  • 参数量与模型能力正相关:参数越大,模型的视觉理解、语言生成及多模态融合能力越强,表现越稳定。
  • 小参数模型不稳定:轻量化模型对提示词极其敏感,稍作修改就会导致输出大幅变化,影响可靠性。
  • 权衡性能与资源:实际应用中需在硬件资源、实时性和效果稳定间做权衡,避免因资源限制过度压缩模型,导致效果明显下滑。

2、提示词设计(Prompt Engineering)

  • 提示词对模型表现影响巨大,但通常是针对单一样本的定制化设计。
  • 通用prompt难以实现,需结合任务特征动态生成或自动优化提示。
  • 多轮交互优化提示可显著提升模型准确率,但需付出更多推理时间。
  • 提示词设计辅助工具(如自动prompt调优、提示词池)可提升效率。

3、微调(Fine-tuning)

  • 微调对特定任务提升巨大,尤其针对领域风格、题型结构等适配性显著增强。
  • 小样本微调需结合数据增强、迁移学习、参数高效调整(如LoRA)等技术。
  • 频繁微调结合持续学习可进一步提升模型对新题型和格式的适应力。

4、大模型性能优化策略

(1)结合程序化推理与python代码执行

  • 让多模态模型生成Python代码,执行代码得到答案,能显著提升数学题计算准确率。
  • 外部执行环境(Python解释器、沙箱)避免了大模型对数值计算的弱点和不确定性。
  • 错误反馈机制:将代码执行报错返回给模型,促使其修正生成结果,提高整体鲁棒性。
  • 该方式实现了“语义理解→逻辑推理→精确计算”的流程闭环。

(2)多模型融合与结果选择

  • 同时调用多个多模态模型(不同架构、不同训练集或不同参数量)对同一输入进行推理。
  • 利用投票机制、置信度评估、结果融合策略,提高最终结果的准确率和鲁棒性。
  • 该策略尤其适合不确定性较高或多样化任务场景。

6、模型速度优化

优化方向 具体措施 预期效果 适用场景及备注
硬件升级 - 增加显卡数量
- 更换高性能显卡
- 利用GPU加速库与加速器
显著提升算力和显存,减少推理延迟 适合所有推理场景,特别是实时与大模型任务
模型结构优化 - 模型剪枝、蒸馏、量化
- 轻量化架构设计
- 硬件友好算子优化
降低计算复杂度,提升推理速度和资源利用效率 适合对模型大小和速度有严格限制的嵌入式或云端部署
架构与流程优化 - 分层/多阶段推理
- 动态计算资源分配
减少冗余计算,提升推理效率和灵活性 适合复杂推理任务或多步骤处理流程
软件调度技术 - 多进程并行
- 批量处理(batch_size)
- accelerate框架
理论上提升批量吞吐量 适合大批量推理任务;对单样本或低延迟场景可能导致延时增加和结果不稳定,需谨慎使用
  • 初次调用模型具有一定时延:初次加载模型通常涉及从磁盘读取权重到内存/GPU,完成模型初始化、计算图编译、缓存加载等过程,因而产生明显的启动延迟。此外,运行时的JIT(即时编译)和内存分配优化也会在首次推理时执行,导致首次推理耗时较长。
  • 后续调用模型提速:模型加载完成后,后续推理可复用已加载的参数、缓存计算图和内存资源,显著减少初始化开销,通常表现为明显的推理速度提升。此现象在主流深度学习推理框架(如PyTorch、TensorRT、ONNX Runtime)中均普遍存在。
  • 影响因素:提速幅度受模型大小、硬件环境、框架实现及运行策略影响。对于较小模型或极短推理任务,提速效果可能不明显。
  • 7. 数据质量与多模态训练
    • 多模态模型对训练数据的质量与多样性高度敏感。
    • 数据中存在噪声、错误标签会显著影响模型收敛与推理稳定性。
    • 需构建多模态标注规范,配合数据清洗、增强和合成,提升训练样本的代表性和覆盖面。
  • 8. 多模态语义理解深度
    • 视觉细节理解(尤其文本细节、数学符号)仍是多模态模型的弱点。
    • 结合视觉注意力机制、多尺度特征提取和图形结构化表示,强化细粒度信息捕获。
    • 语义推理能力需要结合知识图谱、符号计算引擎、外部工具链等辅助。
  • 模型参数量决定了模型效果。通常来说,参数越小效果越差。但计算资源和推理延迟显著增加;需权衡。
  • 参数小模型不稳定,稍微改改prompt就会产生不同的结果,参数上去了稳定性就好点
  • 提示词超级重要,但prompt只对当前图片有效,不可能设计出一个通用的prompt。
  • 通过优化提示词最多可以得到45%左右解题正确率
  • 多模态直接理解数据的能力很差,可以让多模态理解图片和数学题。先让他写python代码,然后执行python代码给出答案,准确率会很高。—— 执行python要自己执行,别让多模态执行(做一个agent,集成一个python编译器的工具呢[捂脸])
    • 用代码的话,相当于把解题思路转换成了python代码,然后用编译器运行的话,能避免大模型对数字计算不敏感的缺点。
    • 若题目信息解读不完整,导致生成的python代码执行报错,就把错误信息返回给多模态,让他重新生成。
  • 一定要微调模型(训练)

其他优化模型效果的思路:

  • 同一张图,同时调用多个(2个级以上)多模态模型计算结果,然后根据选其一。
  • 要提升推理速度,要么就是增加显卡、或者换好的显卡,要么减少模型参数。VLLM已经集成了多进程,batch_size、accelerate等方法。
Logo

更多推荐