CogCoM: A Visual Language Model with Chain-of-Manipulations Reasoning 学习笔记

1 Motivation

当前 VLMs 通过对齐视觉输入和语言输出训练,虽然整体表现好,但在需要细致视觉推理的任务上容易出错,比如无法正确识别图片中的细节内容。这是因为现有模型习惯直接给出结论,而缺乏中间推理步骤。

人类解决视觉问题时,会逐步操作(比如圈出目标、放大细节区域),不是直接回答。

方法:Chain of Manipulations (CoM)

  • 让模型自己一步步处理图像(比如:标注区域、放大、裁剪等),并在每一步输出中间结果(比如 bbox、生成局部图像)。

2 Method

2.1 基本操作

做了一个实验:

  • 用 GPT-4 自动生成解决图像问题的步骤,允许它在需要时对图片做操作
  • 处理了 170K 个 TextVQA 问题(需要细粒度视觉推理的数据集)
  • 提供了4个手写示例给GPT-4作为指导,保证生成质量
  • 然后用 StanfordCoreNLP 提取回答中的动词短语(表示操作动作)

通过频率统计,发现绝大多数动作可以归结为6种基本操作

操作名称 功能描述
OCR(tgt) → txt 识别目标区域(tgt)的文字,输出文字(txt)
Grounding(tgt) → bbx 找到目标(tgt)的定位框(bounding box)
Counting(tgt) → num 数目标(tgt)的数量,输出数字(num)
Calculate(tgt) → num 对目标(tgt)进行计算,输出数字(num)
CropZoomIn(bbx, x) → img 按比例(x)放大或裁剪bbx区域,输出局部图片(img)
Line(pts) → img 在图片上画线(连接指定的点pts),输出新的图像(img)

2.2 数据收集

基于普通VQA数据集 {(I, Q, A)},自动生成标准的CoM样本(特别是数学问题领域再结合人工标注)

📌自动流程

  1. LLM 生成语言推理链:让 GPT-4 生成带操作的推理链(结果用变量占位)

  2. VFM(GroundingDINO、PaddleOCR) 执行视觉操作补全结果

    大部分操作都可以基于 GroundingOCR 衍生:

    • CropZoomIn → 基于 Grounding 的框来裁剪
    • Counting → 基于检测的box数量
    • Calculate → 基于OCR识别出的公式
  3. DFS 搜索正向推理路径(最后得到正确答案A)

📌人工数据集

图形数学题(如几何推理、图表阅读),需要更精准的辅助线绘制、公式推导。受启发于 AlphaGeometry,发现辅助线(或中间推理步骤)能显著帮助 LLMs 解复杂数学问题。招募了10位人类专家,手动完成:约 7K 高质量 CoM 数学样本

  • 语言推理步骤
  • 操作名称的使用
  • 操作结果(图像或数值)

3 Model

3.1 ARCHITECTURE (模型架构)

整体框架采用 CogVLM 的通用VLM架构,包括四个核心组件:

  1. Visual Encoder:视觉编码器
  2. MLP Adapter:把视觉特征映射到语言空间
  3. LLM Backbone:大型语言模型骨干
  4. Visual Expert Module:视觉专家模块(深度融合视觉特征)
组件 使用的模型 说明
Visual Encoder EVA2-CLIP-E (4B参数) 视觉特征提取
LLM Backbone Vicuna-7B-v1.5 语言理解与生成
MLP Adapter 两层 SwiGLU MLP 映射视觉到语言空间
Visual Expert Module 加到 LLM 每层的注意力和 FFN 里 额外增加6.5B参数

整体规模大约 17B参数(7B + 4B + 6.5B)

多轮推理机制(Memory-based Multi-turn Multi-image)?

  • 支持处理多轮VQA样本: [ ( I t , Q t , A t ) ∣ t = 1 , 2 , . . . ] [(I_t, Q_t, A_t)|t = 1,2,...] [(It,Qt,At)∣t=1,2,...]
  • KV缓存(Key-Value Memories)在每一层持续累积。
  • 每轮 attention 计算公式(按累积KV):

att ( X ) = softmax ( Q t K t ′ T d ) V t ′ \text{att}(X) = \text{softmax}\left( \frac{Q_t K'_t{}^T}{\sqrt{d}} \right) V'_t att(X)=softmax(d QtKt′T)Vt′

3.2 Training

📌 第一阶段 Pre-Training

  • 步骤一:视觉理解
    • 数据:1.5B对图文对(清洗自 LAION-2B 和 COYO-700M)
    • 训练:120K step,batch size 8192
  • 步骤二:定位生成(Grounded Generation)
    • 数据:40M条图像-问题-答案三元组(清洗自 LAION-115M)
    • 训练:60K step,batch size 1024
    • 答案中每个名词短语都配了位置坐标 [ [ x 0 , y 0 , x 1 , y 1 ] , . . . ] [[x0,y0,x1,y1],...] [[x0,y0,x1,y1],...]

这阶段主要训练的是视觉专家模块(6.5B参数)。


📌 第二阶段 Alignment

将CoM数据与其他三类数据混合训练:MultiInstruct(指令跟随能力)、LLaVAR(识别文本能力)、ShareGPT4V(细粒度描述能力)

总融合得到大约 570K条(I, Q, A)样本。

  • 其中 CoM 样本是多轮式的答案(包含推理链)
  • 对 CoM 样本,还会在问题前随机加触发prompt P M P_M PM,提示模型可以主动使用 manipulation 推理

训练:14K step,batch size 160,warm-up 280步,最高学习率 1 0 − 5 10^{-5} 10−5,然后线性下降。

这阶段也是只训练视觉专家模块(6.5B参数)

相关推荐
yuhouxiyang3 小时前
学习海康VisionMaster之路径提取
学习·计算机视觉
尼罗河女娲4 小时前
深度剖析RLHF:语言模型“类人输出”的训练核心机制
人工智能·深度学习·语言模型
yc_234 小时前
KAG:通过知识增强生成提升专业领域的大型语言模型(二)
人工智能·语言模型·自然语言处理
绵绵细雨中的乡音4 小时前
Linux进程学习【环境变量】&&进程优先级
linux·运维·学习
贺函不是涵4 小时前
【沉浸式求职学习day27】
学习
努力奋斗的小杨4 小时前
学习MySQL的第十二天
数据库·笔记·学习·mysql·navicat
枫叶20005 小时前
OceanBase数据库-学习笔记1-概论
数据库·笔记·学习·oceanbase
你可以叫我仔哥呀5 小时前
k8s学习记录(五):Pod亲和性详解
学习·容器·kubernetes
RaLi和夕6 小时前
单片机学习笔记9.数码管
汇编·笔记·单片机·嵌入式硬件·学习