一句话定义:图像描述(Image Captioning)就是让模型看完一张图后,用一句通顺的自然语言说出图里有什么、在发生什么,比如输入一张照片,输出"一只橘猫趴在窗台上晒太阳"。
它到底在干什么
这件事听起来简单,做起来却要跨越两种"语言"。模型看到的不是图,而是一堆像素数值;它要输出的是一串文字。所以主流做法是把任务拆成两半:
编码器(Encoder)负责"看懂"。它把图片压成一串向量,可以理解成给这张图写了一份内部摘要——哪里有物体、什么颜色、大概什么姿态、彼此什么关系。解码器(Decoder)负责"说出来",它像写作文一样一个词一个词地往外蹦:先输出"一只",再输出"橘猫",再输出"趴在"……每输出一个词,就把它接回输入,继续预测下一个。这套结构常被称为 encoder-decoder(AI 词典:编码器-解码器">编码器-解码器)框架。
打个生活化的比方:这就像你让一个从没学过中文的外国朋友看照片,然后让他用中文描述。他先在脑子里形成"画面理解",再一个词一个词地组织成句子——中间任何一步卡住,句子就会别扭。
训练时靠什么纠正它
关键是训练目标,通常用交叉熵(Cross-Entropy)。
具体来说:假设标准答案是"一只橘猫趴在窗台上"。模型在生成第一个词时,会对词表里成千上万个词各打一个分数,正确做法是给"一只"最高的概率。交叉熵干的事就是——你给正确词的分数越低,罚得越狠。第二个词同理,再罚一次。把所有位置的惩罚加起来,就是这次的总损失,反向传播去调参数。
可以想象成老师批改造句作业:每写一个词就对着标准答案看一眼,写歪了扣分,写对了基本不扣。反复练几百万张图文对,模型就学会了"看到这种像素模式,先说什么词"。
要注意训练和使用的差别:训练时模型每一步都能看到"标准答案的前半句"(这叫 teacher forcing),推理时没有答案可看,只能靠自己的前文,于是更容易累积错误。所以实际生成时常用 beam search(束搜索)之类的方法,同时保留几条候选句子,最后挑整体概率最高的一条。
和相邻概念的差别
| 任务 | 输入 | 输出 |
|---|---|---|
| 图像分类 | 一张图 | 一个类别标签,如"猫" |
| 目标检测 | 一张图 | 若干框 + 类别,如"这里有 2 只猫" |
| 视觉问答 | 一张图 + 一个问题 | 一句回答 |
| 图像描述 | 一张图 | 一句自由生成的描述 |
一句话区分:分类是"这是什么",检测是"它们在哪",描述是"这里发生了什么"。
对从业者和普通人的意义
对普通人,最直接的价值是无障碍:视障用户可以让工具把照片念出来。相册按内容搜索、电商自动生成商品文案、短视频自动配标题、内容审核初筛,背后都能用上它。
对从业者,图像描述是通往多模态大模型的经典练兵场:它逼着你把视觉和语言两个模态对齐到同一个表示空间里。搞懂了这里的编码器、解码器和交叉熵,再看今天那些能看图聊天的模型,思路会顺很多。
需要提醒两点现实局限:一是幻觉,模型可能说出图里根本没有的东西;二是评估本身很难,一句话对不对往往没有唯一答案。具体的模型能力、评测口径和接口细节,请以官方页面为准。
