Image Captioning
图像描述使用视觉语言模型为图像生成自然语言描述。本文介绍其用途、局限,以及如何利用 YOLO 为描述提供依据。
图像描述是一项 AI 任务,可自动生成对图像的自然语言描述。例如,给定一张街景照片,系统可能会生成:“一辆城市公交车正驶过路口的行人。”这项任务结合了视觉感知和语言生成,因此模型必须识别重要内容、理解对象之间的关系,并清晰地表达这些信息。
图像描述通常由视觉语言模型完成,这类模型能够处理视觉和文本数据。与人工撰写的照片说明不同,AI 生成的描述是基于从图像—文本对中学到的模式所做的预测。
图像描述的工作原理#
图像描述系统通常包含两个相互衔接的阶段:
- 视觉编码器将像素转换为特征表示,描述对象、纹理、位置和更广泛的场景信息。
- 语言解码器将这些视觉特征转换为一串文字。
许多系统使用 Transformer解码器。解码器从起始 token 开始,预测下一个 token,将其添加到序列中,然后重复此过程,直到生成结束 token 或达到长度限制。这种逐 token 生成的过程称为自回归生成。
完整的编码器—解码器循环如下:
注意力机制有助于解码器在选择每个词时关注相关图像区域。生成“公交车”时,它可能会重点关注车辆;生成“街道”时,则可能关注周围道路。完整的图像描述模型结合了图像特征、分词、交叉注意力和文本解码器。
训练通常需要将图像与一条或多条人工撰写的描述配对。多条描述很有用,因为同一张图像可以用不同方式准确描述,例如“一名孩子在和狗玩耍”和“一名年轻人把球扔给宠物”。
与相关视觉任务的区别#
图像描述与若干 AI 任务有所重叠,但产出的结果各不相同:
- 图像分类会为整张图像分配一个或多个标签,例如“海滩”。图像描述则生成一个句子,可能描述物体、动作、属性和上下文。
- 目标检测使用边界框识别并定位预定义目标。图像描述可以提及这些目标,还能描述目标之间的关系,例如“两名骑车人骑行在一辆汽车旁边”。
- 光学字符识别提取标志、文档或包装上可见的文字。图像描述会概括场景,而不是转录所有文字。
- 视觉问答回答有关图像的具体问题。图像描述无需问题即可生成一般性描述。
- 替代文本会结合特定上下文传达图像的用途。自动生成的描述可以作为草稿,但不一定能直接用作替代文本,因为根据 W3C 图像教程,装饰性、功能性和复杂图像需要不同的处理方式。
实际应用#
-
无障碍网页内容:发布平台可以为新上传的照片生成描述草稿。对于新闻图片,描述可以先指出主要人物、场景和动作,再由编辑检查其准确性和相关性。复杂图表仍需要结构化的长描述,而不是笼统的视觉摘要。
-
可搜索媒体库:零售商或媒体公司可以为大型图像集合生成描述,并为生成的文本建立索引。这样一来,即使文件从未经过人工标记,用户也可以搜索“帐篷旁边的红色背包”等短语。描述可以补充视觉嵌入和元数据,提升大型目录中的内容发现能力。
使用 Ultralytics YOLO 进行实用的视觉依据构建#
描述生成器可能会编造缺乏依据的细节,尤其是在拥挤或陌生的场景中。一种实用的设计是利用来自 Ultralytics YOLO26 的结构化观察结果为生成提供依据。下面介绍的 YOLO 预测工作流会提取检测到的对象名称,供下游语言组件作为视觉上下文使用:
from ultralytics import YOLO
# 检测可为下游描述生成器提供依据的对象
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# 将检测结果转换为简洁的文本上下文
detections = result.summary()
object_names = sorted({item["name"] for item in detections})
visual_context = ", ".join(object_names)
print(visual_context)这个工作流不会生成最终描述,而是提供可核验的对象标签,用来约束语言模型。对于自定义领域,Ultralytics Platform支持云端数据集标注、训练、部署和监控,为描述流水线中的感知组件提供服务。
局限性与评估#
描述可能会遗漏重要目标、混淆关系、重现数据集偏差,或臆造不可见的细节。由图像描述 API返回的置信度分数等信息有助于对候选描述排序,但语句流畅并不代表内容真实。
因此,评估应检查对象覆盖度、事实依据、可读性、偏差,以及对目标受众的实用性。由于多种描述都可能同样正确,团队应结合自动化测量和人工审核,并遵循生成式 AI 评估等实践以及更广泛的 NIST AI 风险管理框架。对于无障碍、医疗、安全关键或面向公众的内容,人工批准尤其重要。










