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

【多模态】Simple o3 提高多模态模型准确率

Simple o3: Towards Interleaved Vision-Language Reasoning,旨在通过动态的视觉工具交互(如裁剪、放大、复用)来增强多模态大语言模型(MLLM)的“以图思考”能力,实现 interleaved vision-language reasoning。

**这一做法有些类似于SAHI,感觉很靠谱,但是对于一些特殊内容的理解,可能还需要进一步训练模型。**核心做法是构建一个可扩展的“观察-推理-操作”数据生成管道,自动生成包含可执行视觉指令的高质量推理链,并采用图像掩码监督微调,使模型能像人类一样迭代地操纵视觉信息并进行文本推理。

一、 数据构造:TWI-Tools-146K

1.1 构造流程:观察-推理-操作 (Observe-Reason-Act) 循环

  • 输入: 一个问题-图像对 (Q, I)
  • 过程:
    1. 推理与规划 (Rt): 使用一个强大的基础MLLM(论文中使用 gemini-2.5-Flash)作为“协调器”。模型观察当前图像 I,生成一个原子推理步骤和一个视觉操作规划,并用 <reasoning> 标签包裹。
      • 关键约束:在 <reasoning> 标签内不得提及任何具体的参数(如坐标、缩放比例),只描述意图。
      • Rt 是什么? Rt 是模型在第 t 步生成的“推理内容”,它包含两部分:(rt, pt),即“原子推理步骤”和“视觉操作规划”。
        • 示例 (来自 Fig. 10):
          <reasoning> The question asks about the food on the table. The image shows two plates of food. To accurately identify all items, I will first focus on the top plate which contains what appears to be a main dish and rice. </reasoning>
          
          这里,Rt 就是这段被 <reasoning> 标签包裹的文本。它解释了“为什么”要进行下一步操作(识别桌上的食物),并规划了“做什么”(聚焦于顶部的盘子)。
    2. 工具调用 (Ct): 模型根据规划,生成一个结构化的工具调用指令,用 <function> 标签包裹。
      • Ct 是什么? Ct 是模型在第 t 步生成的“工具命令”,它是一个JSON对象,指定了要调用的工具名称和具体参数。
        • 示例 (来自 Fig. 9 & Fig. 10):
          <function>
          {"name":"focus_area","arguments":{"coordinates":[0, 0, 923, 768]}}
          </function>
          
          这里,Ct 就是这个JSON对象。它精确地告诉系统:调用 focus_area 工具,并将坐标 [0, 0, 923, 768] 作为参数。
    3. 执行与观察 (It): 系统根据 <function> 指令,调用对应的视觉工具处理图像,生成一个新的视觉状态 I',并用 <observation> 标签包裹。
      • It 是什么? It 是系统在第 t 步执行工具命令 Ct 后,返回给模型的新图像。它代表了环境的“观察结果”。
        • 示例: 在 Fig. 10 中,执行第一个 focus_area 命令后,系统会返回一个只包含图像顶部区域(坐标 0,0 到 923,768)的裁剪后图片。这个新图片就是 I1。虽然论文没有直接展示 I1 的像素内容,但它在轨迹中被 <observation> 标签标记,是模型进行下一步推理的视觉输入。
    4. 循环: 将 I' 作为新的输入图像,重复步骤1-3,直到模型认为已收集足够信息。
    5. 生成答案: 模型进行总结推理,并在 <answer> 标签内给出最终答案。
  • 输出: 一个完整的、多轮的交错推理轨迹 S = {s0, s1, ..., st, A},其中 st = (Rt, Ct, It)

1.2 质量控制:两步验证模块

  • 第一步:工具验证 (Tool Verification)
    • 目的: 确保生成的工具命令 Ct 与推理内容 Rt 在语义上一致,且参数有效。
    • 方法: 使用另一个LLM(gemini-2.5-flash-lite)作为验证器。
      • 对于 focus_area:验证返回的坐标框是否精确匹配或完全包含目标实体/区域。
      • 对于 zoom_inreuse:验证工具命令是否与视觉操作规划的语义一致。
        • 这句话是什么意思?
          这意味着验证器会检查 <function> 标签里的JSON命令,是否与 <reasoning> 标签里描述的“意图”在逻辑上吻合。
          • 示例1 (Zoom_in):
            • Rt (推理内容): “The text is small and difficult to read clearly. Therefore, I will zoom in on the text to make it legible.” (文本太小看不清,因此我将放大文本。)
            • Ct (工具命令): {"name":"zoom_in","arguments":{"scale": 2}}
            • 验证: 语义一致。推理说要“放大”,命令确实是调用 zoom_in
          • 示例2 (Reuse):
            • Rt (推理内容): “I will reuse the image as it seems clear enough to make a judgment.” (我将复用原图,因为它足够清晰可以做出判断。)
            • Ct (工具命令): {"name":"reuse","arguments":{}}
            • 验证: 语义一致。推理说要“复用”,命令确实是调用 reuse
          • 反例 (语义不一致):
            • Rt: “I need to get a closer look at the small text.” (我需要仔细看看小字。)
            • Ct: {"name":"reuse","arguments":{}}
            • 验证: 语义不一致。推理意图是“放大细节”,但命令却是“复用原图”,这无法达成推理目标。此样本会被过滤掉。
    • 示例Prompt (来自 Fig. 6):

      “You are an expert evaluator… Returns ‘TRUE’ if the output JSON argument is semantically consistent with the visual operation planning… NOW EVALUATE THE FOLLOWING: Reasoning Content: {res_text} JSON Arguments: {arguments}”

  • 第二步:答案验证 (Answer Verification)
    • 目的: 确保最终答案 A 与Ground Truth一致。
    • 方法: 使用 Qwen3-turbo 作为验证器,判断答案在语义上是否等价。
    • 示例Prompt (来自 Fig. 7):

      “You are an expert evaluator… Apply the following evaluation criteria, and respond TRUE if: - Focus on semantic equivalence… Now evaluate the following: Question: {question} GROUND TRUTH: {gt} SYSTEM ANSWER: {ans}”

2.训练方式

在《Simple o3》论文的训练方式中,图像通过标准的视觉编码器(Vision Encoder)处理后,作为视觉令牌(Visual Tokens)与文本令牌交错地输入给多模态大语言模型(MLLM)

具体流程和技术细节如下:

  1. 输入格式:训练数据被格式化为单轮的 (用户输入, 助手输出) 结构。用户输入包含原始问题和初始图像。助手输出是一个完整的、多轮的交错推理轨迹,其中包含 <reasoning><function><observation> 标签。

    • 关键点<observation> 标签内包裹的是经过工具处理后的新图像。在数据预处理阶段,这些图像会被视觉编码器处理。
  2. 视觉编码器处理

    • 模型的基础架构是 Qwen2.5-VL-7B,它本身具备处理图像的能力。
    • 在训练时,出现在 <observation> 标签中的每一张图像(无论是原始图像还是经过 focus_areazoom_in 处理后的图像),都会被模型的视觉编码器独立处理。
    • 视觉编码器将图像转换为一序列的视觉特征向量,这些向量随后被多模态投影器(Multi-modal Projector) 映射到与文本嵌入(Text Embeddings)相同的向量空间,形成视觉令牌(Visual Tokens)
  3. 交错序列构建

    • 模型的输入是一个图文交错的长序列。例如,一个轨迹可能如下所示:
      [用户问题文本令牌] + [初始图像视觉令牌] +
      <reasoning>[推理文本令牌]</reasoning> +
      <function>[工具调用文本令牌(JSON)]</function> +
      <observation>[新图像视觉令牌]</observation> +
      <reasoning>[下一轮推理文本令牌]</reasoning> +
      ... +
      <answer>[最终答案文本令牌]</answer>
      
    • 在这个序列中,视觉令牌和文本令牌是按顺序拼接在一起的,模型在自回归生成时,会依次“看到”这些令牌。
  4. 图像掩码(Image Masking)的应用

    • 在计算损失函数时,只对文本令牌计算损失,视觉令牌的损失被设为0
    • 这是通过一个二进制掩码 Mt 实现的:
      • Mt = 1zt 是文本令牌时(计算损失)。
      • Mt = 0zt 是视觉令牌时(忽略损失)。
    • 目的:确保模型学习的目标是生成正确的文本(推理、工具调用、答案),而不是去“预测”或“重建”图像特征。视觉令牌仅作为上下文信息,帮助模型决定下一步该生成什么文本。
  5. 分辨率处理

    • 论文提到,输入图像的分辨率是动态调整的,范围从 4x28x281024x28x28 像素。这意味着视觉编码器需要能够处理不同尺寸的输入,这是 Qwen2.5-VL 等现代视觉语言模型的标准能力。

总结来说:图像不是以原始像素矩阵的形式直接“传给”语言模型,而是先通过一个专用的视觉编码器转换为视觉令牌序列,然后这些令牌与文本令牌交错拼接,共同构成模型的输入序列。模型在训练时,会利用这些视觉令牌作为上下文来生成后续的文本,但不会尝试去预测这些视觉令牌本身,这是通过图像掩码机制保证的。

http://www.dtcms.com/a/389622.html

相关文章:

  • hybrid的配置
  • 理解虚拟细胞:初学者指南
  • 哪种体量的公司或者哪些行业哪些项目需要上云服务器?
  • Linux安装问题:404 Not Found?配置源列表sources.list,修改为可用镜像源就可以了!
  • Vue3 中 props 与 $emit 的使用及 defineProps 与 defineEmits 的区别详解
  • vue的跨域配置
  • 计算机网络实验03:交换机VLAN配置
  • Vue中v-if与v-show的区别及应用场景解析
  • C++造轮子:手搓 List 容器
  • redis-list的基本介绍
  • ​​[硬件电路-247]:开关电源的工作原理、优缺点及应用场合
  • 【面试】Java中的垃圾回收算法详解
  • AI使用心得-完善中
  • rust编写web服务01-项目起步与环境准备
  • ORM框架及SQLAlchemy
  • 驱动开发---双机调试搭建支持win11(2025)
  • 驱动开发1:内核程序框架
  • 生产制造如何应对客户的订单变更
  • 深入浅出SpringMVC:从入门到实战指南
  • 深度学习入门:从感知机到多层感知机,用逻辑电路讲透神经网络的进化
  • macos m1 芯片无法安装kubeedge keadm 解决办法
  • 猎板 PCB:以全维度工艺突破,构建 PCB 制造技术壁垒
  • android12 SDK31 wifi开发(仅提供连接wifi的工具类)
  • Android播放视频适配黑边问题类型总结
  • 第十一章:AI进阶之--模块的概念与使用(二)
  • 异常检测patchcore 学习笔记 2025
  • [iOS] 网络 - AFNetWorking
  • iOS App 混淆与性能稳定性优化 混淆开销、崩溃风险、CI 集成与落地实务(
  • Freertos系统(任务挂起和恢复)
  • Git更新仓库时,忽略指定文件