Visual-CoT
NeurIPS 2024 Spotlight!让多模态大模型学会「先看关键区域、再推理回答」的视觉思维链方法,含438K标注数据集和13个评测基准
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
NeurIPS 2024 Spotlight!让多模态大模型学会「先看关键区域、再推理回答」的视觉思维链方法,含438K标注数据集和13个评测基准
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你给 AI 发送了一张医院影像片子,AI 直接给出一个诊断结论,但没有告诉你它看的是哪块区域、为什么这么判断——这和"黑箱"诊断有什么区别?Visual CoT(视觉思维链) 正是为解决这一问题而生,它让 AI 在回答复杂视觉问题时,像人类一样先"锁定关键区域",再给出推理过程和最终答案。
2024 年 9 月,香港中文大学(CUHK)和商汤研究院联合发布的 Visual CoT 论文被 NeurIPS 2024 录用为 Spotlight 论文(Spotlight 比例约 5%),该工作由 Hao Shao、Shengju Qian、Han Xiao、Guanglu Song 等研究者完成,通讯作者为 Hongsheng Li 教授(深度学习与计算机视觉领域知名学者)。
多模态大语言模型(MLLMs)在视觉问答(VQA)任务上已取得显著进展,但大多数模型在处理高分辨率图像或需要定位细粒度区域的问题时表现欠佳。以一张密集的文档扫描图为例:模型可能知道答案,但无法解释它关注的是图像的哪一部分来做判断。这带来两个核心问题:可解释性差(用户无法追溯推理依据)和复杂场景定位不准(模型容易忽略关键小目标)。
Visual CoT 的核心创新在于:构建了一个大规模视觉思维链数据集,包含 438,000 个问答对,每个样本都标注了中间边界框(bounding box),标记出对回答问题最关键的图像区域,并让模型学会一种"多轮处理管道"——先识别关键区域,再基于该区域进行推理回答。
Visual CoT 数据集(托管于 HuggingFace:deepcs233/Visual-CoT)是目前规模最大、质量最高的视觉思维链标注数据集之一,涵盖以下 13 类视觉任务:
| 任务类型 | 代表数据集 | 样本规模 | 特点 |
|---|---|---|---|
| 通用 VQA | GQA、TextVQA | 77K / 5.9K | 多样化视觉问题 |
| 文档理解 | DocVQA、SROIE | 7.2K / 597K | 文字密集型文档 |
| 图表推理 | InfographicVQA | 6.5K | 图表信息提取 |
| 场景理解 | Flickr30k-COT、Visual7W | 40K / 7.8K | 图像描述与定位 |
| 关系推理 | VSR、CUB-CoT | 681 / 2.6K | 空间/语义关系 |
| 目标检测 | OpenImages-CoT | 9.7K | 开放词汇目标检测 |
| 文本图像 | TextCaps | 11K | 图像标题生成 |
每个样本的结构为:(问题, 答案, 中间边界框坐标)。边界框不仅是标注,还作为 CoT(Chain-of-Thought)提示的一部分,让模型学会在回答前主动"看向"关键区域。2024 年 11 月,团队进一步发布了包含详细推理步骤的增强版本(cot_with_detailed_reasoning_steps)。
Visual CoT 基于 LLaVA(Large Language and Vision Assistant) 架构进行开发,核心是在 LLaVA 的多模态融合框架上引入了视觉思维链推理管道。其训练分为两个阶段:
第一阶段:特征对齐(Feature Alignment) 使用 558K 样本的 LAION-CC-SBU 图像-文本对,将冻结的预训练视觉编码器(OpenAI CLIP ViT-L/14-336px)与冻结的大语言模型(Vicuna v1.5)通过 MLP 连接器对齐。这一阶段让模型学会"看懂"图像内容。
第二阶段:视觉指令微调(Visual Instruction Tuning) 综合多源数据集训练,总规模约 270 万样本,包括:
训练使用了 DeepSpeed ZeRO-3 分布式策略,在 8×A100 80GB 显卡上进行。微调超参数与 Vicuna 对齐:全局 batch size 128,学习率 2e-5,epoch 1,最大序列长度 2048。
项目代码结构清晰,以 llava/ 为核心模块:
Visual-CoT/
├── llava/ # 核心模型代码
│ ├── model/
│ │ ├── llava_arch.py # 多模态架构主文件(18.8KB)
│ │ ├── builder.py # 模型构建器
│ │ ├── language_model/ # 语言模型(Vicuna/MPT)
│ │ ├── multimodal_encoder/ # CLIP 视觉编码器
│ │ └── multimodal_projector/ # MLP 投影层
│ ├── conversation.py # 对话模板管理(15.7KB)
│ ├── serve/ # 推理服务
│ │ ├── gradio_web_server.py # Gradio Web UI
│ │ ├── controller.py # 多模型控制器
│ │ └── model_worker.py # 模型 worker
│ └── train/ # 训练脚本(基于 DeepSpeed)
├── viscot_dataset/ # 13个数据集 JSONL 文件(总计 ~250MB)
├── viscot_benchmark/ # 13个评测基准 JSON 文件
├── checkpoints/ # 预训练投影权重(7B/13B mm_projector)
└── scripts/v1_5/ # 训练和评测脚本
依赖环境(pyproject.toml):
项目提供了完整的评测框架,覆盖 13 个基准数据集。每个数据集都包含了需要细粒度区域识别的视觉问答题目,评测指标包括准确率(Accuracy)和思维链评分(CoT Score)。评测脚本位于 scripts/v1_5/eval/,支持一键运行:
# 思维链评测
gbash scripts/v1_5/eval/cot_benchmark.sh
# 标准 VQA 评测
gbash scripts/v1_5/eval/vqav2.sh
# 消融实验
gbash scripts/v1_5/eval/cot_benchmark_ablations.sh
评测结果显示,Visual CoT 在多个需要细粒度视觉理解的任务上,相比直接回答的基线模型有显著提升,尤其是在高分辨率图像和小目标定位场景中。
项目内置了 Gradio Web UI(llava/serve/gradio_web_server.py),用户可以通过网页上传图片并与模型交互。Web UI 支持:
不过需要注意的是,Web UI 仅提供推理能力,模型权重需自行从 HuggingFace 下载(deepcs233/VisCoT-7b-336 等),且对显存要求较高(7B 模型建议 16GB+ VRAM)。
训练硬件需求(官方推荐):
推理硬件需求(最低):
上手路径建议:
viscot_dataset/ 格式组织,用 LoRA/QLoRA 在单卡上微调scripts/v1_5/eval/cot_benchmark.sh 评估模型在各任务上的表现局限性:
行业意义: Visual CoT 填补了多模态思维链数据集的空白,其提出的"多轮视觉定位→推理"范式为后续研究(如 KOSMOS-2、Shikra 等)提供了重要参考。NeurIPS Spotlight 的录用也证明了学术界对该方向的认可。随着多模态大模型的持续进化,让 AI"展示思考过程"而非"黑箱输出"将成为构建可信 AI 系统的重要里程碑。