图像描述生成
图像描述生成(Image Captioning)是给定一张图片,自动生成一段描述其内容的自然语言文本的任务。它是视觉和语言的交叉任务,既要求模型”看懂”图像中的物体、动作、场景,又要求”写得出”流畅准确的描述文字。本页聚焦描述生成的技术演进,与视觉问答的关系见视觉问答与图像描述。前置阅读:CNN 主线、RNN 循环神经网络、Transformer 架构、注意力机制。
图像描述就像”看图说话”:
- 编码器 = 眼睛和视觉皮层:看照片,提取出”有只猫、在沙发上、阳光照进来”这样的视觉概念。
- 解码器 = 作文老师:把视觉概念组织成通顺的句子——“一只橘色的猫正趴在米色的沙发上,阳光从窗外洒进来”。
- 训练 = 大量看图配文练习:给模型看几百万张已经配好描述的图片,让它学会从”看到的像素”到”该用的词”的映射。
从编码器-解码器(Encoder-Decoder,先将输入编码为特征表示、再从特征解码出输出的经典框架)的角度看,所有图像描述模型都在回答同一个问题:如何最有效地把视觉信息”翻译”成语言?
第一代:CNN 编码器 + RNN 解码器(Show and Tell)
Section titled “第一代:CNN 编码器 + RNN 解码器(Show and Tell)”Show and Tell(Vinyals et al., 2015)是深度学习图像描述的开山之作。架构极其直观:
- CNN 提取图像特征:用预训练的 CNN(如 Inception-V3、ResNet-101)处理输入图像。CNN 的卷积层逐层提取特征——浅层捕捉边缘和纹理,深层捕捉物体部件和整体语义。最终在全局平均池化(Global Average Pooling,对整个特征图取平均,把 H×W×C 的特征压缩成 C 维向量)后,得到一个固定维度的全局特征向量(如 Inception-V3 输出 2048 维,ResNet-101 输出 2048 维)。
- 特征注入解码器:将特征向量经过一个线性变换(W_init · v + b_init)映射到与 RNN 隐状态相同的维度(如 512 维),然后作为 LSTM 的初始隐状态和初始细胞状态(cell state)。这相当于把”图像信息”作为解码器的”启动信号”。
- RNN 自回归生成:LSTM(Long Short-Term Memory,一种能记忆长距离依赖的 RNN 变体,通过遗忘门、输入门、输出门三个门控单元控制信息流动)自回归(Autoregressive,即”根据已生成内容预测下一个词”)地逐词生成描述。每一步,LSTM 根据当前隐状态和上一个词的嵌入向量,输出下一个词在词表上的概率分布。
- 教师强制训练:训练时用教师强制(Teacher Forcing,即每步喂入真实词而非模型预测的词作为下一步输入),使训练信号稳定、收敛快。推理时则用模型自己上一步预测的词作为输入。
LSTM 的门控机制细节:在每个时间步 t,LSTM 接收当前输入 x_t 和上一时刻的隐状态 h_{t-1}、细胞状态 c_{t-1},通过三个门更新状态:
其中 表示逐元素乘法, 表示向量拼接。这套门控机制让 LSTM 能选择性地保留或遗忘信息,从而在长序列中保持有效记忆。
这是标准的编码器-解码器范式,相当于把图像特征视为一种”翻译源”,把描述视为”翻译目标”。训练目标是最大化真实描述的对数似然,等价于最小化交叉熵损失:
其中 是第 个真实词, 是前缀, 是图像特征向量, 是描述长度。
注意力机制的引入(Show, Attend and Tell)
Section titled “注意力机制的引入(Show, Attend and Tell)”全局特征向量丢失了空间细节——一个 2048 维的向量把”猫在沙发上”和”沙发上有只猫”压成了同一种表示,无法区分空间关系。Show, Attend and Tell(Xu et al., 2015)引入注意力机制(Attention Mechanism,让模型动态决定”看哪里、各看多少”的加权聚合机制):解码器在生成每个词时,动态地”关注”图像中与该词最相关的区域。例如生成”猫”时注意力集中在猫的位置,生成”沙发”时移到沙发上。
注意力权重的计算:设 CNN 最后一个卷积层输出 L 个空间位置的特征,每个位置是 D 维向量,组成特征矩阵 A = {a_1, a_2, …, a_L},其中 a_i ∈ R^D(如 7×7=49 个位置,每个 2048 维)。在生成第 t 个词时:
其中 是上一步隐状态, 是第 个图像区域特征,、、 是可学习参数; 且 。上下文向量 编码了”当前该看哪里”。
这是空间注意力在图像描述中的首次成功应用。论文还展示了”硬注意力”(hard attention,按概率随机选取一个位置)和”软注意力”(soft attention,如上式对所有位置加权平均)两种变体,实践中软注意力更易训练。详见注意力机制。
自底向上注意力(Bottom-Up Attention)
Section titled “自底向上注意力(Bottom-Up Attention)”BUTD(Anderson et al., 2018)改变了视觉特征的粒度:先用 Faster R-CNN 检测图像中的物体(如人、猫、车),取每个检测框的区域特征作为视觉 token。具体来说,Faster R-CNN 的 Region Proposal Network 生成候选框,对每个框用 RoI Pooling 提取固定大小的特征(通常 2048 维),保留置信度最高的 10-36 个区域。这样注意力是在”物体级别”而非”网格像素级别”上进行的,更符合人类描述图像的方式(我们说”猫在沙发上”而不是”左上角的像素”)。
BUTD 的”自底向上”(Bottom-Up)指用目标检测模型自底向上地提取物体级特征,“自顶向下”(Top-Down)指用任务驱动的注意力机制自顶向下地选择相关特征。BUTD 特征在多年内是图像描述和 VQA 的标准视觉表示,直到 ViT 和 CLIP 的出现。
Transformer 时代
Section titled “Transformer 时代”Transformer 替代 RNN 后,图像描述模型变为”ViT/CLIP 视觉编码器 + Transformer 文本解码器”。编码器输出图像 patch token 序列(如 ViT 把 224×224 的图像切成 14×14=196 个 patch,每个 patch 编码为 D 维向量),解码器通过跨注意力(Cross-Attention,让一种模态的 token——这里是文本——去查询另一种模态的 token——这里是图像——的注意力机制)在生成每个词时查询图像 token。
Transformer 相比 RNN 的优势在于:能完全并行训练(所有位置同时计算,而非逐时间步迭代)、能直接建模任意长距离依赖(不依赖逐步传递的隐状态)、且堆叠深层后梯度传播更稳定(得益于残差连接)。残差连接(Residual Connection)的核心思想是:让输入直接跳过某些层,与该层输出相加(output = Sublayer(x) + x),使梯度可以”绕过”深层结构直接回传,有效缓解深层网络梯度消失问题。
代表模型:
- Meshed-Memory Transformer(M2, Cornia et al., 2020):在编码器中引入”记忆”机制(一组可学习的先验 token),在解码器的跨注意力中让不同层关注不同粒度的视觉信息。
- Oscar(Li et al., 2020):利用图像标签作为”锚点”(anchor)桥接视觉和语言模态,在大规模图文对上预训练。
- BLIP 系列:见下节。
BLIP 系列:统一的视觉语言预训练
Section titled “BLIP 系列:统一的视觉语言预训练”BLIP(Li et al., 2022)提出了统一的视觉语言预训练框架,同时学习三个任务:
- 图文对比学习(ITC, Image-Text Contrastive):对齐图像和文本的全局表示。通过 InfoNCE 损失拉近匹配的图文对、推远不匹配的图文对,使编码器学到跨模态对齐能力。
- 图文匹配(ITM, Image-Text Matching):二分类判断图文是否匹配,用跨注意力进行细粒度的图文交互。训练时使用难负样本挖掘(hard negative mining,刻意挑选”相似但不匹配”的图文对作为负样本),提升判别能力。
- 图像描述生成(LM, Language Modeling):自回归生成描述文本。
BLIP 引入 Captioner 和 Filter 机制:用模型生成描述并过滤噪声,自动扩充训练数据(Bootstrapping)。具体做法是用 Captioner(仅用高质量图文对训练的描述模型)为网络爬取的无标注图片生成伪描述,再用 Filter(图文匹配模型)过滤掉与图片不匹配的低质量伪描述,最终得到干净的大规模训练集。这一数据自举策略有效解决了高质量图文对数据稀缺的问题。
BLIP-2 与 Q-Former:BLIP-2(Li et al., 2023)进一步引入 Q-Former(Querying Transformer)桥接冻结的 ViT 和冻结的 LLM。Q-Former 的结构细节如下:
- Q-Former 是一个轻量级 Transformer,包含一组可学习的 query token(通常 32 个)。
- 它通过自注意力让 query token 之间互相交互,同时通过跨注意力从冻结的 ViT 中提取与语言最相关的视觉信息。
- 训练分两阶段:第一阶段在冻结的 ViT 上学习”视觉-语言表示”(图文对比、图文匹配、图文生成三个任务);第二阶段把 Q-Former 输出的 32 个视觉 token 经线性层投影到冻结的 LLM 的词嵌入空间,驱动 LLM 生成文本。
- 这种”两阶段冻结 + 轻量桥接”策略大幅降低了训练成本——只需训练 Q-Former 和投影层,两个最大的组件(ViT 和 LLM)参数全部冻结。
详见视觉问答与图像描述。
图像描述的评估借鉴机器翻译的指标:
- BLEU-N:计算生成描述与参考描述的 N-gram 精确率(N=1 到 4)。BLEU-4 是最常用的版本。计算公式为:
其中 是修正后的 n-gram 精确率,BP 是长度惩罚因子(防止过短的描述获得高分):
其中 为生成长度, 为参考长度。
-
CIDEr-D:专门为图像描述设计的指标,用 TF-IDF 加权 N-gram,奖励与参考描述一致的视觉内容描述,惩罚在所有图片中频繁出现的”万能词”(如 “a photo of”)。计算过程:
- 对候选描述 和参考描述 ,计算 n-gram()的 TF-IDF 权重: ,其中 TF 是 n-gram 频率,, 是图片总数, 是包含该 n-gram 的图片数
- 计算候选与参考之间的余弦相似度,对每个 单独计算再加权求和:
- CIDEr-D 加入长度惩罚和基于概率分布的截断,使其更鲁棒。
-
METEOR:考虑同义词和词序的匹配指标,引入 WordNet 同义词集和词干提取,对匹配的连续词组给予额外奖励。
-
ROUGE-L:基于最长公共子序列(LCS)的指标,衡量候选描述覆盖了参考描述中的多少关键内容。
-
SPICE:基于场景图(Scene Graph,由物体、属性、关系三元组构成的图结构)的语义匹配指标。它先从描述中解析出场景图,再计算候选场景图和参考场景图的 F1 分数。SPICE 更关注语义而非表面词匹配,与人类判断相关性最高。
现代评估还使用 CLIPScore(用 CLIP 计算图文相似度,不需要参考描述)和基于 LLM 的评估(让 GPT-4 等大模型从准确性、完整性、流畅度等维度评分描述的质量)。
图像描述模型演进
Section titled “图像描述模型演进”编码器-解码器结构
Section titled “编码器-解码器结构”注意力在图像描述中的工作方式
Section titled “注意力在图像描述中的工作方式”训练技巧与工程实践
Section titled “训练技巧与工程实践”学习率预热(Warmup)
Section titled “学习率预热(Warmup)”图像描述模型通常采用学习率预热策略:训练开始时用一个很小的学习率(如 1e-7),在前 N 步(如 10000 步)线性增长到峰值学习率(如 2e-4),之后按余弦曲线(cosine decay)或步阶衰减逐步降低。预热的目的是:在训练初期模型参数随机初始化、梯度方向噪声很大,大学习率会导致训练发散;用小学习率先让参数”稳定下来”,再加速收敛。Transformer 类模型对预热尤其敏感,缺少预热容易导致训练早期 loss 突然飙升。
视觉端的数据增强能有效提升泛化能力,常用方法包括:
- RandomResizedCrop:随机裁剪图像的一个区域并缩放到目标尺寸,让模型学习不同尺度和位置的物体。
- ColorJitter:随机调整亮度、对比度、饱和度、色调,增强对颜色变化的鲁棒性。
- RandomHorizontalFlip:随机水平翻转(注意垂直翻转会改变语义,如”向上飞”变成”向下坠”)。
- RandAugment / AutoAugment:从一组增强操作中自动组合,搜索最优增强策略。
文本端可使用回译(back-translation,将描述翻译成另一种语言再翻回来)或同义词替换来扩充训练数据,但需注意保持语义一致性。
Label Smoothing
Section titled “Label Smoothing”标签平滑(Label Smoothing)是一种正则化手段:训练时不把正确词的概率目标设为 1.0,而是设为 1-ε(如 0.9),其余词共享 ε/(V-1) 的概率(V 是词表大小)。这能防止模型对训练数据中的某一个词过度自信——图像描述本质上有多个正确答案(“一只猫坐在沙发上”和”沙发上有只猫”都正确),标签平滑让模型学到更平滑的概率分布,通常提升 0.5-1 个 CIDEr 点。损失函数变为:
其中 通常取 0.1, 是词表大小。
Beam Search vs Nucleus Sampling
Section titled “Beam Search vs Nucleus Sampling”生成描述时的解码策略直接影响输出质量:
| 策略 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| Beam Search | 每步保留得分最高的 k 个候选序列(束宽 beam width 通常 3-5),最终选总对数概率最高的 | 描述准确、安全、与参考描述风格一致,CIDEr/BLEU 分数高 | 容易生成”平淡”描述,缺乏多样性和创造性;束宽太大时计算量增加 |
| Nucleus Sampling(Top-p) | 从概率累积前 p(如 0.9)的候选词中随机采样 | 描述多样、有创意,能生成更生动丰富的描述 | 个别描述可能偏离图像内容;CIDEr/BLEU 分数通常低于 beam search |
| Top-k Sampling | 从概率最高的 k 个候选词中随机采样 | 控制采样范围,介于 beam search 和自由采样之间 | k 是固定值,无法自适应不同分布形状 |
实践中:正式评测(刷分)用 beam search(束宽 3-5);实际应用(如无障碍描述、内容管理)可根据需要选择——要求准确选 beam search,要求生动多样选 nucleus sampling。
SCST:直接优化评估指标
Section titled “SCST:直接优化评估指标”交叉熵损失只优化”逐词预测准确率”,而 CIDEr/BLEU 等评估指标是非线性的(逐词对了不代表整句描述好)。SCST(Self-Critical Sequence Training, Rennie et al., 2017)用 REINFORCE 算法直接优化 CIDEr 分数:
算法流程:
- 用当前模型(自回归采样)生成一条描述
- 用 beam search 生成基准描述 (作为 baseline,不更新梯度)
- 计算 reward 差异作为梯度信号:
- 梯度更新(REINFORCE):
如果采样描述比 beam search 基准好(reward > 0),增加采样描述的概率;如果更差(reward < 0),降低其概率。
SCST 通常能提升 2-5 个 CIDEr 点,是描述生成训练的重要里程碑。但 SCST 训练不稳定,需要较小的学习率和谨慎的超参调节。
RLHF / DPO 微调
Section titled “RLHF / DPO 微调”在大模型时代,直接偏好优化(Direct Preference Optimization, DPO)和基于人类反馈的强化学习(RLHF)也被用于图像描述质量优化。思路是:收集人类对描述对的偏好标注(描述 A 比描述 B 好),然后用 DPO 损失直接微调模型,使其生成更符合人类偏好的描述。与 SCST 相比,RLHF/DPO 使用人类偏好信号(而非自动指标)作为优化目标,能捕捉更主观的质量维度(如描述的生动性、信息量)。
Python:用 BLIP 做图像描述
Section titled “Python:用 BLIP 做图像描述”import torch # pip install transformersfrom transformers import BlipProcessor, BlipForConditionalGenerationfrom PIL import Image
# 加载 BLIP 模型(同时支持描述生成和 VQA)processor = BlipProcessor.from_pretrained( "Salesforce/blip-image-captioning-base")model = BlipForConditionalGeneration.from_pretrained( "Salesforce/blip-image-captioning-base")
image = Image.open("beach.jpg").convert("RGB")
# 无条件描述生成(不需要提示文本)inputs = processor(image, return_tensors="pt")with torch.no_grad(): out = model.generate(**inputs, max_new_tokens=50)caption = processor.decode(out[0], skip_special_tokens=True)print(caption)# 如 "a woman and child on a beach with an umbrella"Python:带提示的可控描述生成
Section titled “Python:带提示的可控描述生成”# 用文本提示引导描述风格image = Image.open("sunset.jpg").convert("RGB")
for prefix in ["a photo of", "a drawing of", "the image shows"]: inputs = processor(image, text=prefix, return_tensors="pt") with torch.no_grad(): out = model.generate(**inputs, max_new_tokens=30) caption = processor.decode(out[0], skip_special_tokens=True) print(f"[{prefix}] {caption}")# [a photo of] a photo of a sunset over the ocean# [a drawing of] a drawing of a colorful sky at dusk# [the image shows] the image shows a beach at sunsetPython:Beam Search vs Nucleus Sampling 对比
Section titled “Python:Beam Search vs Nucleus Sampling 对比”# 同一张图,对比不同解码策略的输出差异image = Image.open("park.jpg").convert("RGB")inputs = processor(image, return_tensors="pt")
with torch.no_grad(): # Beam Search:准确但可能平淡 beam_out = model.generate( **inputs, max_new_tokens=50, num_beams=5, early_stopping=True ) beam_cap = processor.decode(beam_out[0], skip_special_tokens=True)
# Nucleus Sampling:多样且更有创意 sample_out = model.generate( **inputs, max_new_tokens=50, do_sample=True, top_p=0.9, temperature=0.7 ) sample_cap = processor.decode(sample_out[0], skip_special_tokens=True)
print(f"[Beam] {beam_cap}")print(f"[Sample] {sample_cap}")- 视觉编码器选型:CLIP 视觉编码器是最通用的选择,因为它天然与语言对齐。EVA-CLIP、SigLIP 等新版本效果更好。详见视觉Transformer ViT。
- Beam Search vs Nucleus Sampling:生成描述时,beam search(束宽 3-5)通常给出更准确、更安全的描述;nucleus sampling(top-p 0.9)给出更多样、更有创意的描述。正式评测通常用 beam search。
- CIDEr 优化训练:SCST 用 CIDEr 分数作为奖励做 REINFORCE 微调,能直接优化评估指标,通常提升 2-5 个 CIDEr 点。注意训练不稳定,需要小学习率。
- 多模态预训练先于任务微调:先在大规模图文数据上预训练,再在特定领域微调。BLIP 系列已提供强基线,直接微调即可获得不错效果。
- 多样性与准确性权衡:单一参考描述会限制模型表达多样性。使用多个参考描述(COCO 每张图 5 个)或 GPT-4 改写扩充参考集,能让模型学到更丰富的表达。
- 数据质量是关键:BLIP 的 Bootstrapping 策略证明,自动生成并过滤的描述也能有效扩充训练数据。但低质量描述(如重复、不准确)会严重拖累模型,务必做好数据清洗。
- 批量归一化(Batch Normalization)的影响:CNN 视觉编码器中的批量归一化层(对每个 mini-batch 的特征做标准化,减均值除标准差,缓解内部协变量偏移)在推理时依赖训练时的统计量。微调视觉编码器时需要小心处理 BN 层的运行统计量更新。
- 无障碍辅助:Apple 的 VoiceOver、Be My Eyes 等自动描述图片内容,帮助视障用户”看到”图片。
- 社交媒体与内容管理:Facebook、Instagram 自动为图片生成 alt 文本,用于无障碍和 SEO。
- 电商商品描述:自动为商品图片生成描述文本,降低人工标注成本。
- 新闻图说生成:为新闻配图自动生成简要图说(caption),辅助编辑工作流。
- 视频内容理解:对视频关键帧生成描述,用于视频检索、摘要、推荐。详见光流与视频理解。
- 医学影像报告:为 X 光、CT 等医学影像自动生成初步报告文本(需专业数据训练)。
- 智能相册管理:Google Photos 等自动为照片生成描述并建立搜索索引(搜索”海边”即可找到相关照片)。
最新进展(2024-2026)
Section titled “最新进展(2024-2026)”大模型时代:多模态大模型(MLLM)重塑图像描述
Section titled “大模型时代:多模态大模型(MLLM)重塑图像描述”2023 年以来,多模态大模型(Multimodal Large Language Model, MLLM)将图像描述能力推向了前所未有的高度。这类模型用预训练的视觉编码器提取图像特征,经投影层或 Q-Former 注入大语言模型(LLM),使 LLM 能够”看到”图像并用自然语言描述。
- LLaVA 系列(Liu et al., 2023-2024):用简单的 MLP 投影将 CLIP ViT 特征映射到 LLM(如 LLaMA、Vicuna)的词嵌入空间,配合 GPT-4 生成的图文指令数据微调。LLaVA 的成功证明”简单投影 + 高质量指令数据”足以获得强大的多模态能力。LLaVA-1.5/1.6 在多个描述和 VQA 基准上接近或超过闭源模型。详见视觉问答与图像描述。
- Qwen-VL / Qwen2-VL(阿里巴巴,2023-2024):支持任意分辨率图像输入的视觉语言模型,在图像描述、文档理解、OCR 等任务上表现优异。Qwen2-VL 引入动态分辨率机制,能处理高分辨率图像中的细粒度细节。
- InternVL 系列(上海 AI 实验室,2024):用超大规模视觉编码器(InternViT-6B)搭配大语言模型,在多项多模态基准上达到开源模型最优水平。
闭源多模态大模型
Section titled “闭源多模态大模型”- GPT-4o / GPT-4V(OpenAI):具有强大的图像理解和描述能力,能生成详细、准确、上下文感知的图像描述,甚至理解图像中的文字、表格、图表和幽默。
- Gemini 系列(Google):原生多模态架构,支持图像、视频、文本的统一理解。Gemini 1.5 Pro 支持 100 万 token 的超长上下文,能对长视频逐帧描述。
- Claude 3.5 Sonnet(Anthropic):强大的视觉理解能力,擅长分析图表、截图、文档等复杂图像。
Florence-2:统一的视觉基础模型
Section titled “Florence-2:统一的视觉基础模型”Florence-2(Microsoft, 2024)提出用单一架构统一多种视觉任务:图像描述(caption)、目标检测(detection)、图像分割(segmentation)、OCR、指称表达(grounding)等。它使用序列到序列(seq2seq)框架,把所有视觉任务的输出统一表示为结构化文本(如检测框坐标用 <box> token 表示),用一个模型同时完成。这种”大一统”设计让 Florence-2 在参数量较小(0.2B-0.7B)的情况下,在多项视觉语言任务上媲美甚至超越更大的专用模型。
Molmo:高质量开源多模态模型
Section titled “Molmo:高质量开源多模态模型”Molmo(Allen AI, 2024)专注于构建高质量的全开源多模态模型,强调数据质量和透明度。它使用了精心策划的 PixMo 数据集(包含详细描述、问答、指向标注),在图像描述和视觉问答任务上表现优异。Molmo 的贡献在于证明了”高质量数据 + 简洁架构”可以与更大规模的模型竞争。
RLHF/DPO 用于描述质量优化
Section titled “RLHF/DPO 用于描述质量优化”大模型时代,RLHF(基于人类反馈的强化学习)和 DPO(直接偏好优化)被广泛用于优化图像描述的主观质量。通过收集人类对描述的偏好数据(“描述 A 比描述 B 更好,因为 A 更详细/更准确/更生动”),用 DPO 或 PPO 算法微调模型。这使模型生成的描述不仅在自动指标上表现好,更符合人类对”好描述”的主观感受。
长描述与细粒度描述生成
Section titled “长描述与细粒度描述生成”- 长描述(Dense Captioning):传统 COCO 描述只有一句话,而现代模型能生成多句详细描述,涵盖图像中的主要物体、场景、动作、空间关系、氛围等。LLaVA-Next、GPT-4o 等能生成数百字的详尽图像描述。
- 细粒度描述:结合 OCR(光学字符识别)能力,模型能描述图像中的文字内容(如路标、商品标签、文档标题)。对于图表和表格,模型能解析数据并生成结构化描述。详见OCR 文字识别。
- 区域描述(Region Captioning / Dense Captioning):对图像中每个区域或物体生成独立描述,如”左侧穿红衣的人在跑步""右下角有一只黄色的狗”。这是 SOLO、GLIP、Florence-2 等模型擅长的任务。
评估的新趋势
Section titled “评估的新趋势”传统指标(BLEU、CIDEr)依赖人工标注的参考描述,而参考描述本身具有多样性局限。2024-2026 年的评估趋势:
- CLIPScore:不需要参考描述,直接用 CLIP 计算生成描述与图像的语义相似度,适合零参考场景。
- 基于 LLM 的评估(LLM-as-a-Judge):用 GPT-4 或 Claude 作为评判,从准确性、完整性、简洁性、流畅度等维度给描述打分。这种评估方式与人类判断的一致性远高于传统 n-gram 指标。
- Pollinations / VQA-based 评估:用生成描述做 VQA,检验描述中是否包含了图像的关键信息。
- 知识蒸馏(Knowledge Distillation)辅助评估:用大模型的评分作为”教师信号”蒸馏到小模型,形成高效自动评估器。知识蒸馏指让小模型(学生)学习大模型(教师)的输出分布,从而在参数更少的情况下接近大模型的能力。
典型类库与工具
Section titled “典型类库与工具”| 类库 | 语言 | 说明 |
|---|---|---|
| transformers | Python | HuggingFace 库,支持 BLIP、BLIP-2、Git、OFA 等主流描述生成模型 |
| LLaVA | Python | 开源多模态模型,支持基于图像的自由文本生成(含描述) |
| pycocoevalcap | Python | COCO 官方评估工具,提供 BLEU/CIDEr/METEOR/SPICE 等指标 |
| Google Cloud Vision API | REST | 云服务,提供预训练的图像标注和描述生成 |
| Azure Computer Vision | REST | 微软云服务,提供图像描述(Image Captioning)功能 |
| Florence-2 | Python | 微软统一视觉基础模型,一个模型支持描述、检测、分割、OCR 等任务 |
| Qwen-VL / InternVL | Python | 开源多模态大模型,支持高质量图像描述和对话 |
| 术语 | 英文 | 解释 |
|---|---|---|
| 图像描述生成 | Image Captioning | 给定图片自动生成描述性文本的任务 |
| 编码器-解码器 | Encoder-Decoder | 先将图像编码为特征、再解码为文本的经典框架 |
| 教师强制 | Teacher Forcing | 训练时每步喂入真实词(而非模型预测词)的策略 |
| 自回归 | Autoregressive | 根据已生成内容逐步预测下一个词的生成方式 |
| 束搜索 | Beam Search | 每步保留 top-k 候选序列的解码策略,平衡质量和效率 |
| 核采样 | Nucleus Sampling / Top-p Sampling | 从概率累积前 p 的候选词中随机采样的解码策略 |
| 自底向上注意力 | Bottom-Up Attention | 用检测结果(区域特征)作为视觉 token 的注意力方法 |
| 跨注意力 | Cross-Attention | 让一种模态的 token(如文本)查询另一种模态 token(如图像)的注意力机制 |
| 残差连接 | Residual Connection | 让输入跳过某些层直接与输出相加,缓解深层网络梯度消失 |
| 位置编码 | Positional Encoding | 给序列中每个位置添加固定或可学习的位置信号向量,让模型感知顺序 |
| 批量归一化 | Batch Normalization | 对每个 mini-batch 的特征做标准化,缓解内部协变量偏移 |
| 知识蒸馏 | Knowledge Distillation | 让小模型学习大模型的输出分布,以更少参数接近大模型能力 |
| 图文对比学习 | Image-Text Contrastive, ITC | 对齐图像和文本全局表示的预训练任务 |
| 图文匹配 | Image-Text Matching, ITM | 判断图文是否匹配的二分类预训练任务 |
| CIDEr | Consensus-based Image Description Evaluation | 专为图像描述设计的评估指标,用 TF-IDF 加权 N-gram |
| SPICE | Semantic Propositional Image Caption Evaluation | 基于场景图的语义匹配指标,与人类判断相关性最高 |
| 自评判序列训练 | Self-Critical Sequence Training, SCST | 用评估指标(如 CIDEr)作为奖励做强化学习微调 |
| 直接偏好优化 | Direct Preference Optimization, DPO | 用人类偏好数据直接微调模型的算法,简化 RLHF 流程 |
| 多模态大模型 | Multimodal Large Language Model, MLLM | 能同时理解和生成多种模态(图像、文本等)的大型语言模型 |
| 场景图 | Scene Graph | 由物体、属性、关系三元组构成的图结构表示 |
| 密集描述 | Dense Captioning | 对图像中每个区域或物体分别生成描述的任务 |
- Vinyals et al.,「Show and Tell: A Neural Image Caption Generator」(CVPR 2015):Show and Tell 论文,CNN+LSTM 的图像描述开山之作,证明深度学习能端到端学习图像描述。
- Xu et al.,「Show, Attend and Tell: Neural Image Caption Generation with Visual Attention」(ICML 2015):注意力机制引入图像描述的经典论文,可视化注意力学习到了直观的物体定位。
- Anderson et al.,「Bottom-Up and Top-Down Attention for Image Captioning and VQA」(CVPR 2018):BUTD 论文,物体级视觉特征成为标准,影响深远。
- Cornia et al.,「Meshed-Memory Transformer for Image Captioning」(CVPR 2020):M2 Transformer,将记忆机制引入图像描述的 Transformer 编码器。
- Li et al.,「BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation」(ICML 2022):BLIP 论文,统一的三任务预训练框架 + 数据自举机制。
- Li et al.,「BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models」(ICML 2023):BLIP-2 论文,Q-Former 桥接冻结视觉编码器和冻结 LLM 的高效设计。
- Rennie et al.,「Self-Critical Sequence Training for Image Captioning」(CVPR 2017):SCST 论文,用 CIDEr 做强化学习微调,是描述生成训练的重要里程碑。
- Liu et al.,「Visual Instruction Tuning」(NeurIPS 2023):LLaVA 论文,简单 MLP 投影 + 指令微调,开创了开源多模态对话模型的范式。
- Xiao et al.,「Florence-2: Advancing a Unified Representation for a Variety of Vision Tasks」(2024):微软统一视觉基础模型,用单一 seq2seq 架构统一多种视觉语言任务。
- 注意力机制的深入解析见注意力机制;Transformer 的完整讲解见Transformer 架构;多模态模型的综述见多模态模型。