视觉问答(Visual Question Answering)作为多模态AI领域的重要研究方向,其核心目标是让机器能够像人类一样理解图像内容并回答相关问题。当前主流VQA系统如LLaVA、GPT-4o等虽然在单图像理解上表现出色,但在处理多图像关联推理时仍面临显著瓶颈。这就像要求一个只擅长分析单幅画作的艺术评论家,突然要去解读整个美术馆展览的策展逻辑——传统VQA系统缺乏跨图像的语义整合能力。
在实际应用场景中,这种局限性尤为明显。以医疗影像分析为例,放射科医生需要对比患者多次检查的CT扫描序列来追踪病灶变化;城市规划者需通过历年卫星图像分析城市扩张趋势;电商平台要识别用户浏览多件商品的行为模式。这些任务都要求AI系统具备"多图像推理"(Multi-Image Reasoning)能力,而现有VQA模型对此几乎束手无策。
关键发现:我们测试了包括GPT-4o、Claude-3 Opus在内的主流模型,当图像数量超过50张时,模型准确率会骤降至随机猜测水平(约50%)。即使只提供5张关键图像,模型的跨图像推理能力也远低于人类表现。
为系统评估模型的多图像处理能力,我们设计了Visual Haystacks(VHs)基准测试。其核心思想借鉴了NLP领域的"大海捞针"(Needle-In-A-Haystack)测试范式,但将文本替换为视觉内容。测试集包含从COCO数据集精选的1,000个二元问答对,每个问题对应1-10,000张图像的集合。为确保测试有效性,我们采用了两项关键设计:
视觉干扰项控制:所有非关键图像(haystack)都经过严格筛选,确保它们包含与关键图像相似的视觉元素但语义无关。例如测试"含有足球的图像中是否出现狗"时,干扰项可能包含其他球类或动物。
答案不可推测性:问题设计确保无法通过常识或统计规律猜测答案。在二元选择题中,正负样本比例严格保持1:1,使随机猜测准确率恒定为50%。
测试格式:"在包含锚定物体(anchor object)的图像中,是否同时存在目标物体(target object)?"
示例问题:在100张厨房场景图中,只有一张包含微波炉。问题是:"这张有微波炉的图片里,是否同时出现了烤箱?"
扩展为更复杂的逻辑判断:
实操技巧:多针测试中,我们特意设置了锚定物体与目标物体间的非常规关联(如"所有出现键盘的图像中是否都有鼠标"),避免模型依赖常识性联想。
测试数据显示,当图像数量超过20张时,开源模型LLaVA的准确率下降37%;即使GPT-4o在100张图像场景下也会出现23%的性能衰减。这与纯文本NIAH测试形成鲜明对比——在Gemini的文本测试中,模型在10万字长文档中仍能保持90%+的检索准确率。
失效机理分析:
令人意外的是,简单的"LLaVA生成描述+Llama-3文本推理"级联方案,在5张以上图像的场景中反而优于端到端LMMs。这表明当前多模态模型的核心缺陷在于:
实验发现模型表现强烈依赖于关键图像的位置:
这与NLP领域观察到的现象高度一致,但视觉模态的位置敏感性更为显著。例如在医疗影像分析场景,若关键CT切片被放置在序列中间,模型漏诊率会异常升高。
MIRAGE(Multi-Image Retrieval Augmented Generation)采用检索增强生成范式,核心创新点包括:
查询感知压缩(Query-Aware Compression)
端到端检索器(Co-trained Retriever)
多图像训练数据
在VHs基准测试中,MIRAGE展现出显著优势:
| 测试场景 | GPT-4o | Gemini-1.5 | MIRAGE |
|---|---|---|---|
| 单针(100图) | 61.2% | 58.7% | 82.4% |
| 多针全称(50图) | 53.1% | 51.8% | 76.9% |
| 多针存在(50图) | 56.3% | 54.2% | 79.1% |
| 位置敏感性偏差 | 28.5% | 25.7% | <8.3% |
特别在计算效率方面,MIRAGE处理1000张图像仅需3.2GB显存(比原始LLaVA低7倍),推理速度达到18 images/sec。
推荐使用PyTorch 2.3+与CUDA 12.1环境:
bash复制conda create -n miqa python=3.10
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
pip install transformers==4.40 datasets==2.16
加载预训练模型进行多图像推理:
python复制from mirage import MIRAGEProcessor
processor = MIRAGEProcessor.from_pretrained("VisualHaystacks/MIRAGE-v1")
images = [load_image(f"frame_{i}.jpg") for i in range(100)]
question = "在这些包含电脑的图片中,是否都出现了键盘?"
inputs = processor(images, question, return_tensors="pt")
outputs = model.generate(**inputs)
print(processor.decode(outputs[0], skip_special_tokens=True))
对于垂直领域应用(如医疗影像),建议采用两阶段微调:
避坑指南:避免直接使用CLIP作为检索器——测试显示其在该任务中的召回率比MIRAGE内置检索器低34.7%。若必须使用,建议用领域数据重新训练对比学习目标。
虽然MIRAGE在VHs基准上取得突破,但在实际部署中我们发现三个待解决问题:
一个有趣的发现是:当配合外部知识图谱使用时,模型对抽象概念(如"找出所有表现孤独感的画作")的推理能力可提升41.2%。这提示我们多模态与符号推理的结合可能是下一个突破点。
项目所有资源已开源: