Visual Program Distillation: Distilling Tools and Programmatic Reasoning into Vision-Language Models

📄 arXiv: 2312.03052v2 📥 PDF

作者: Yushi Hu, Otilia Stretcu, Chun-Ta Lu, Krishnamurthy Viswanathan, Kenji Hata, Enming Luo, Ranjay Krishna, Ariel Fuxman

分类: cs.CV, cs.CL

发布日期: 2023-12-05 (更新: 2024-04-05)

备注: CVPR 2024 Oral


💡 一句话要点

提出Visual Program Distillation,将工具和程序化推理能力蒸馏到视觉-语言模型中,提升复杂视觉任务性能。

🎯 匹配领域: 支柱二:RL算法与架构 (RL & Architecture) 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 视觉-语言模型 程序蒸馏 指令调优 复杂视觉任务 知识迁移

📋 核心要点

  1. 现有方法在解决复杂视觉任务时,依赖LLM生成程序调用多个专业视觉模型,但程序容易出错,且计算成本高昂。
  2. VPD框架通过LLM生成并验证多个候选程序,将正确的程序转化为语言描述,并蒸馏到VLM中,提升其推理能力。
  3. 实验表明,VPD显著提升了VLM在多个复杂视觉任务上的性能,并在事实性、一致性和实际应用方面有所改进。

📝 摘要(中文)

本文提出了一种名为Visual Program Distillation (VPD) 的指令调优框架,旨在使视觉-语言模型 (VLM) 能够通过单次前向传播解决复杂的视觉任务。VPD通过使用大型语言模型 (LLM) 采样多个候选程序,执行并验证这些程序以识别正确的程序,从而提炼LLM的推理能力。然后,它将每个正确的程序翻译成推理步骤的语言描述,并将其蒸馏到VLM中。大量实验表明,VPD提高了VLM在计数、理解空间关系和组合推理方面的能力。经过VPD训练的PaLI-X优于所有先前的VLM,在包括MMBench、OK-VQA、A-OKVQA、TallyQA、POPE和Hateful Memes等复杂视觉任务中实现了最先进的性能。与人工标注者的评估也证实,VPD提高了模型响应的事实性和一致性。最后,在内容审核方面的实验表明,VPD也有助于适应数据有限的实际应用。

🔬 方法详解

问题定义:现有方法在解决复杂视觉任务时,通常利用大型语言模型(LLM)生成程序,该程序会调用多个专门的视觉模型来完成任务。然而,这种方法存在几个痛点:一是生成的程序容易出错,例如遗漏必要的步骤或包含不必要的步骤;二是当专业模型给出错误输出时,程序无法恢复;三是需要加载多个模型,导致高延迟和高计算成本。

核心思路:VPD的核心思路是通过蒸馏的方式,将LLM的推理能力转移到单个视觉-语言模型(VLM)中。具体来说,利用LLM生成多个候选程序,然后通过执行和验证这些程序来筛选出正确的程序。接着,将正确的程序转化为自然语言描述的推理步骤,最后将这些推理步骤蒸馏到VLM中,使其具备直接进行复杂视觉推理的能力。

技术框架:VPD框架主要包含以下几个阶段:1) 程序生成:使用LLM生成多个候选程序,每个程序代表一种可能的解决任务的步骤序列。2) 程序执行与验证:执行生成的程序,并根据预定义的标准(例如,是否得到正确的答案)来验证程序的正确性。3) 推理步骤描述:将正确的程序转化为自然语言描述的推理步骤,例如“首先识别图像中的物体,然后计算物体的数量”。4) 知识蒸馏:使用指令调优的方法,将推理步骤的描述作为指令,训练VLM,使其能够直接根据图像和指令生成正确的答案。

关键创新:VPD最重要的创新点在于它将程序化的推理过程转化为自然语言描述,并通过指令调优的方式将这些描述蒸馏到VLM中。这使得VLM能够学习到LLM的推理能力,而无需依赖外部的专业模型或复杂的程序执行过程。与现有方法相比,VPD能够显著降低计算成本和延迟,并提高模型的鲁棒性和泛化能力。

关键设计:在程序生成阶段,可以使用不同的采样策略来生成多样化的候选程序。在程序验证阶段,可以根据任务的特点设计不同的验证标准。在知识蒸馏阶段,可以使用不同的损失函数和训练技巧来提高VLM的学习效率和性能。例如,可以使用对比学习损失来鼓励VLM学习到正确的推理步骤的表示,并使用数据增强技术来增加训练数据的多样性。

📊 实验亮点

实验结果表明,VPD训练的PaLI-X在MMBench、OK-VQA、A-OKVQA、TallyQA、POPE和Hateful Memes等多个复杂视觉任务上取得了state-of-the-art的性能,显著优于之前的VLM模型。例如,在MMBench上,VPD取得了X%的提升(具体数值未知)。人工评估也证实,VPD提高了模型响应的事实性和一致性。

🎯 应用场景

VPD具有广泛的应用前景,例如智能客服、自动驾驶、医疗诊断等领域。它可以帮助模型更好地理解图像内容,并进行复杂的推理和决策。此外,VPD还可以应用于内容审核,自动识别和过滤有害信息,提高内容平台的安全性。

📄 摘要(原文)

Solving complex visual tasks such as "Who invented the musical instrument on the right?" involves a composition of skills: understanding space, recognizing instruments, and also retrieving prior knowledge. Recent work shows promise by decomposing such tasks using a large language model (LLM) into an executable program that invokes specialized vision models. However, generated programs are error-prone: they omit necessary steps, include spurious ones, and are unable to recover when the specialized models give incorrect outputs. Moreover, they require loading multiple models, incurring high latency and computation costs. We propose Visual Program Distillation (VPD), an instruction tuning framework that produces a vision-language model (VLM) capable of solving complex visual tasks with a single forward pass. VPD distills the reasoning ability of LLMs by using them to sample multiple candidate programs, which are then executed and verified to identify a correct one. It translates each correct program into a language description of the reasoning steps, which are then distilled into a VLM. Extensive experiments show that VPD improves the VLM's ability to count, understand spatial relations, and reason compositionally. Our VPD-trained PaLI-X outperforms all prior VLMs, achieving state-of-the-art performance across complex vision tasks, including MMBench, OK-VQA, A-OKVQA, TallyQA, POPE, and Hateful Memes. An evaluation with human annotators also confirms that VPD improves model response factuality and consistency. Finally, experiments on content moderation demonstrate that VPD is also helpful for adaptation to real-world applications with limited data.