概述
这一讲讨论的是 图像理解(Image Understanding)。它回答的核心问题是:
机器如何从一张由像素组成的图片中,逐步理解“这是什么场景、有哪些物体、物体在哪里、这张图能用一句话怎么描述”?
这一讲的逻辑主线:
- 先理解 数字图像的本质:图像在计算机里不是“画面”,而是矩阵或张量;
- 再理解 图像预处理:为什么要先灰度化、归一化、增强对比度、做几何变换;
- 接着按照视觉理解能力从浅到深,依次学习四类任务:
- 图像分类(image classification):整张图属于哪一类;
- 图像识别 / 目标检测(image recognition / object detection):图里有哪些物体,它们大致在哪里;
- 图像分割(image segmentation):每个像素属于哪个物体或区域;
- 图像描述(image captioning):把图像内容转化为自然语言;
- 最后通过 猫狗分类器实训 串起完整流程:数据准备、特征选择、模型选择、模型训练、模型评估和模型使用。
图像理解 = 把像素矩阵转化为语义信息。
目录
- 概述
- 数字图像基本概念
- 图像预处理
- 从手工特征到深层特征
- 图像分类
- 图像识别:从类别到位置
- 图像分割:从边界框到像素级理解
- 图像描述:从视觉到语言
- 模型训练实战:猫狗图像分类器
- 四类图像理解任务对比
- 这一讲最该记住的内容
- 参考文献
数字图像基本概念
图像在计算机中是什么
在计算机中,图像是一组数字。
更准确地说:
- 灰度图像可以表示为一个二维矩阵;
- 彩色图像通常可以表示为三个矩阵组成的三维张量;
- 视频可以看作一系列图像帧按时间排列形成的序列。
如果一张灰度图像的高为 、宽为 ,则可以表示为:
其中矩阵中每一个元素对应一个像素点的灰度值。
如果是一张 RGB 彩色图像,则可以表示为:
其中最后一维的 3 分别表示:
- R:Red,红色通道;
- G:Green,绿色通道;
- B:Blue,蓝色通道。
像素
像素(pixel) 是数字图像的最小显示和记录单位。
每个像素保存的是该位置的视觉信息。
对于灰度图像:
- 一个像素通常只保存亮度;
- 例如 0 表示黑色,255 表示白色。
对于彩色图像:
- 一个像素通常保存多个颜色通道;
- RGB 图像中,一个像素可以写成 ;
- 例如 表示纯红色。
分辨率
图像分辨率通常写成:
例如 表示:
- 宽度方向有 1920 个像素;
- 高度方向有 1080 个像素;
- 总像素数为 。
分辨率越高,图像记录的信息越多,但计算成本也更高。
这也是图像模型常常要先统一图像大小的原因。
色彩空间
色彩空间(color space) 是对颜色进行数学表示的方式。
常见色彩空间包括三类。
1. RGB
RGB 使用红、绿、蓝三个通道表示颜色。
它基于人类视觉对三种基本颜色的感知,广泛用于:
- 手机屏幕;
- 电脑显示器;
- 摄像头图像;
- 深度学习模型输入。
对大多数图像理解任务来说,RGB 是最常见的输入格式。
2. HSV
HSV 分别表示:
- Hue:色相,表示颜色类型;
- Saturation:饱和度,表示颜色纯度;
- Value:亮度,表示颜色明暗。
HSV 更接近人类描述颜色的方式。
3. CMYK
CMYK 分别表示:
- Cyan:青;
- Magenta:洋红;
- Yellow:黄;
- Key / Black:黑。
它主要用于印刷行业,基于颜料混合的减色原理。
图像预处理
图像预处理是图像分析和识别流程中的第一步。
它的目标是:
改善图像质量,统一数据格式,让后续模型更容易学习。
现实图像往往不干净:
- 大小不统一;
- 光照不同;
- 角度不同;
- 有噪声;
- 对比度不足;
- 背景复杂。
如果直接把这些图像输入模型,模型会把大量无关差异也当成学习对象,训练效果可能变差。
灰度化
灰度化(grayscale conversion) 是把彩色图像转换为灰度图像。
它的作用是:
- 减少数据量;
- 简化计算;
- 只保留亮度信息;
- 在颜色不重要的任务中降低干扰。
例如手写数字识别通常不关心颜色,只关心笔画形状,因此灰度图就足够。
但如果任务需要颜色信息,例如识别水果成熟度、区分红绿灯、识别皮肤病变,则不应随意灰度化。
归一化
归一化(normalization) 是把像素值缩放到统一范围。
常见做法是把 缩放到 :
也可以标准化为均值为 0、方差为 1:
归一化的意义是:
- 避免像素值尺度过大;
- 让梯度优化更稳定;
- 加快模型收敛;
- 减少不同图像之间数值尺度差异带来的影响。
直方图均衡化
直方图均衡化(histogram equalization) 是一种增强图像对比度的方法。
它通过调整像素值分布,让图像的亮暗层次更加均匀。
适用场景:
- 图像整体偏暗;
- 图像整体偏亮;
- 目标和背景对比度不足;
- 医学影像、遥感影像中需要增强细节。
直观理解:
把原本挤在一小段亮度范围里的像素值拉开,让细节更容易被模型看到。
几何变换
几何变换(geometric transformation) 包括:
- 旋转;
- 缩放;
- 平移;
- 裁剪;
- 翻转。
它有两类作用。
第一,统一输入格式。
第二,增强模型鲁棒性。
从手工特征到深层特征
手工特征
早期图像理解依赖人类设计特征。
常见手工特征包括:
- 像素值;
- 边缘;
- 角点;
- 纹理;
- 颜色直方图;
- SIFT;
- HOG。
这些特征的思路是:
人先假设哪些视觉模式有用,再把这些模式编码成数学特征。
例如:
- HOG 关注局部梯度方向,适合描述轮廓和形状;
- SIFT 关注尺度不变的局部关键点,适合做图像匹配;
- 颜色直方图关注颜色分布,适合粗略区分图像风格或物体颜色。
手工特征的优点:
- 可解释性较强;
- 计算量通常较小;
- 在小数据、规则明确的任务中仍有价值。
手工特征的局限:
- 依赖专家经验;
- 很难覆盖复杂视觉变化;
- 对光照、遮挡、姿态变化敏感;
- 特征设计和任务强绑定,迁移能力有限。
深层特征
深度学习出现后,特征可以由模型自动学习。
以 CNN 为例:
- 底层卷积层学习边缘、线条、颜色变化;
- 中间层学习纹理、局部形状;
- 高层学习物体部件和整体语义;
- 最后输出分类、检测或分割结果。
这类由神经网络自动学习出的特征,称为 深层特征(deep features)。
它的核心优势是:
不再完全依赖人手工设计特征,而是让模型从大量数据中学习更适合任务的表示。
两者的关系
手工特征和深层特征不是完全对立的。
| 维度 | 手工特征 | 深层特征 |
|---|---|---|
| 特征来源 | 人类专家设计 | 神经网络自动学习 |
| 代表方法 | SIFT、HOG、颜色直方图、像素值 | CNN、ViT、深度检测/分割模型 |
| 可解释性 | 通常更强 | 通常较弱 |
| 表达能力 | 受人工设计限制 | 更强,能学习复杂模式 |
| 数据需求 | 较低 | 通常更高 |
| 典型用途 | 小规模任务、传统视觉任务、教学入门 | 大规模分类、检测、分割、描述 |
图像分类
图像分类解决什么问题
图像分类(image classification) 的目标是:
输入一张图像,输出一个类别标签。
图像分类的基本流程
图像分类通常包含三步:
1. 输入
输入是一张图片。
在模型内部,图片会被表示为矩阵或张量。
2. 模型
模型负责从图像中提取特征,并计算各类别的可能性。
常见模型包括:
- KNN;
- CNN;
- ViT;
- 其他预训练图像分类模型。
3. 输出
输出是一个标签,也可以是每个类别的概率。
例如:
| 类别 | 概率 |
|---|---|
| 客厅 | 0.91 |
| 卧室 | 0.06 |
| 厨房 | 0.03 |
最终取概率最高的类别作为预测结果。
CNN:局部观察者
卷积神经网络(Convolutional Neural Network, CNN) 是最经典的图像分类模型之一。
CNN 的核心思想是:
用卷积核在图像上滑动,自动提取局部视觉特征。
CNN 有两个关键设计。
1. 局部连接
一个卷积核只观察图像的一小块区域。
这适合图像任务,因为图像中的很多特征本来就是局部的:
- 边缘;
- 角点;
- 纹理;
- 猫的胡须;
- 狗的耳朵;
- 椅子的边缘。
2. 权重共享
同一个卷积核会在整张图像上重复使用。
这意味着:
同一种特征不管出现在图像左边还是右边,都可以被同一个卷积核识别。
因此 CNN 特别适合处理具有局部结构和空间平移特征的数据。
在 CNN 中:
- 卷积层负责提取特征;
- 池化层负责降低维度、压缩信息;
- 多层卷积逐步把低级特征组合成高级特征;
- 最后的分类层输出类别概率。
ViT:全局观察者
Vision Transformer(ViT) 是把 Transformer 思想引入图像识别的一类模型。
它的关键做法是:
把图像切成许多小块,把每个图像块当作类似语言中的 token,再用 Transformer 处理这些图像块之间的关系。
例如一张图片可以被切成多个 patch:
每个 patch 被嵌入成向量,加入位置信息后送入 Transformer。
ViT 的优势在于:
- 通过自注意力机制建模图像块之间的全局关系;
- 更适合捕捉整体结构;
- 在大规模数据预训练后效果很强。
CNN 和 ViT 的对比:
- CNN 像 局部观察者,擅长看局部细节;
- ViT 像 全局观察者,擅长看图像块之间的整体关系。
| 维度 | CNN | ViT |
|---|---|---|
| 基本单元 | 卷积核 | 图像 patch |
| 关注方式 | 局部区域 | 全局关系 |
| 核心机制 | 卷积、池化、权重共享 | 自注意力、多头注意力 |
| 优势 | 局部细节、边缘、纹理 | 长距离依赖、整体结构 |
| 典型问题 | 大范围关系建模较弱 | 通常依赖较大数据规模 |
TensorFlow.js Classifier
其特点是:
- 用户可以上传或拍摄照片;
- 模型可以在浏览器中直接运行;
- 不一定需要把图片上传到服务器;
- 响应速度快;
- 对隐私更友好。
这类工具适合用来理解:
图像分类模型可以从研究算法走向实际可交互应用。
图像识别:从类别到位置
图像识别解决什么问题
它的目标是:
不仅判断图像里有什么物体,还要指出物体大致在哪里。
图像分类只输出一个整体标签:
- 客厅。
图像识别 / 目标检测会输出:
- 椅子:位置框;
- 茶几:位置框;
- 沙发:位置框。
也就是说,它的输出通常包括:
- 类别标签;
- 边界框(bounding box);
- 置信度(confidence score)。
例如:
| 物体 | 边界框 | 置信度 |
|---|---|---|
| 椅子 | 0.93 | |
| 茶几 | 0.88 |
图像识别的基本流程
1. 输入
输入是一张图像,例如室内客厅场景。
2. 模型
模型识别图像中的物体,并估计每个物体所在位置。
3. 输出
输出是一张带标注的图像:
- 物体被边界框框出;
- 边界框旁边标注类别名称;
- 有时还会显示置信度。
R-CNN:先找候选区域,再分类
R-CNN(Region-based Convolutional Neural Networks) 是目标检测中的重要模型。
它的核心思想是:
先从图像中找出可能包含物体的候选区域,再对每个候选区域使用 CNN 提取特征并分类。
传统的全图滑动窗口方法效率较低,因为需要对大量位置和尺度重复扫描。
R-CNN 引入 区域候选(region proposal),先缩小搜索范围。
工作流程可以概括为:
- 输入一张图像;
- 提取若干可能包含物体的候选区域;
- 对每个候选区域用 CNN 计算特征;
- 对候选区域进行分类;
- 输出物体类别和边界框。
Fast R-CNN 与 Faster R-CNN
R-CNN 的主要问题是速度慢。
原因是:
- 每个候选区域都要单独送入 CNN;
- 重复计算很多;
- 训练和推理成本都较高。
Fast R-CNN 的改进方向是:
- 先对整张图像计算一次卷积特征图;
- 再在特征图上对候选区域进行分类和回归;
- 减少重复卷积计算。
Faster R-CNN 进一步引入 区域建议网络(Region Proposal Network, RPN):
- 用神经网络自动生成候选区域;
- 与检测网络共享特征;
- 使候选区域生成更快、更端到端。
可以这样理解三者关系:
| 模型 | 核心思想 | 主要改进 |
|---|---|---|
| R-CNN | 候选区域 + CNN 分类 | 深度学习目标检测的早期重要框架 |
| Fast R-CNN | 整图共享卷积特征 | 减少重复计算,提高速度 |
| Faster R-CNN | 用 RPN 自动生成候选区域 | 进一步接近实时检测 |
RTOD 实时检测工具
RTOD(real-time object detection) 实时物体检测平台。
它可以:
- 上传图像或调用摄像头;
- 实时检测行人、车辆等物体;
- 用边界框标出目标;
- 显示类别和置信度。
这类工具体现了目标检测的工程价值:
- 自动驾驶要实时识别行人和车辆;
- 安防系统要实时检测异常目标;
- 智能零售要识别货架商品;
- 工业质检要定位缺陷区域。
图像分割:从边界框到像素级理解
图像分割解决什么问题
图像识别只能给出物体的大致位置,通常用矩形边界框表示。
但很多任务需要更精确的边界。
例如:
- 自动驾驶要知道道路、行人、车辆的精确范围;
- 医学影像要分割病灶边界;
- 图像编辑要把人物从背景中抠出来;
- 艺术分析要计算人物和背景的面积比例。
这时就需要 图像分割(image segmentation)。
图像分割的目标是:
为图像中的每个像素分配类别或实例标签。
与目标检测相比:
- 目标检测输出边界框;
- 图像分割输出像素级区域。
图像分割的基本流程
图像分割通常包含三步。
1. 输入
输入是一张待处理图像。
2. 模型
模型判断每个像素属于哪个类别或哪个实例。
3. 输出
输出是一张标注图。
其中:
- 每个像素都有标签;
- 不同类别或实例用不同颜色显示;
- 物体边界比检测框更精确。
三类图像分割
三种分割方式:
- 语义分割;
- 实例分割;
- 全景分割。
1. 语义分割
语义分割(semantic segmentation) 给每个像素分配类别标签。
例如图像中所有猫的像素都标成“猫”。
它关心的是:
这个像素属于什么类别。
但它不区分同类中的不同个体。
适合任务:
- 道路区域分割;
- 天空、建筑、树木分割;
- 医学组织区域分割;
- 场景理解。
代表模型:FCN。
2. 实例分割
实例分割(instance segmentation) 不仅识别类别,还区分同一类别中的不同个体。
它关心的是:
这个像素属于哪个具体对象。
适合任务:
- 人群中区分每个人;
- 自动驾驶中区分每辆车;
- 工业检测中区分每个零件;
- 图像编辑中单独抠出某个对象。
代表模型:Mask R-CNN。
3. 全景分割
全景分割(panoptic segmentation) 结合语义分割和实例分割。
它希望图像中每个像素都有完整解释:
- 对可数物体,区分不同实例;
- 对不可数背景区域,只标注类别。
例如:
- 人、车、动物:区分每个个体;
- 天空、道路、草地:标注语义类别。
它关心的是:
整张图中每个像素属于什么,同时可数物体还要区分具体实例。
代表模型:Panoptic FPN。
| 分割类型 | 是否逐像素分类 | 是否区分实例 | 典型例子 | 代表模型 |
|---|---|---|---|---|
| 语义分割 | 是 | 否 | 所有道路像素标为“道路” | FCN |
| 实例分割 | 是 | 是 | 区分每一个人、每一辆车 | Mask R-CNN |
| 全景分割 | 是 | 对可数物体区分实例 | 同时理解道路、天空、人、车 | Panoptic FPN |
FCN
FCN(Fully Convolutional Network,全卷积网络) 是语义分割中的经典模型。
它的核心思想是:
把分类网络改造成可以输出空间位置预测的网络,让模型对每个像素做分类。
传统 CNN 分类模型最后通常输出一个类别标签。
FCN 则输出一张与图像空间相关的预测图,让每个位置都有类别结果。
这使得深度学习可以从“整图分类”扩展到“像素级分类”。
Mask R-CNN
Mask R-CNN 是实例分割中的经典模型。
它可以看作在 Faster R-CNN 的基础上增加了一个 mask 分支。
原来的 Faster R-CNN 主要输出:
- 类别;
- 边界框。
Mask R-CNN 进一步输出:
- 每个实例的分割掩码。
所以它能够做到:
- 检测图中有哪些物体;
- 框出它们的位置;
- 分割出每个物体的精确轮廓。
Panoptic FPN
Panoptic FPN 是全景分割的重要模型。
它的目标是统一两类任务:
- 实例分割:处理人、车、动物等可数对象;
- 语义分割:处理天空、道路、墙壁等背景区域。
它适合更完整的场景理解。
自动驾驶中就很需要这类能力,因为系统不仅要知道“有车”,还要知道:
- 哪块是道路;
- 哪块是人行道;
- 哪些是行人;
- 哪些是车辆;
- 每个车辆和行人分别在哪里。
Segment Anything
Segment Anything Model(SAM) 是 Meta AI 提出的图像分割基础模型。
特点:
- 能快速分割图像中的任意物体;
- 支持用户指定目标;
- 不需要针对每个新物体重新训练;
- 具有较强的零样本泛化能力;
- 可用于图片编辑、内容创作、目标检测辅助、视觉研究等场景。
可以把 SAM 理解为:
一个通用的“图像抠图 / 分割”基础工具。
图像描述:从视觉到语言
图像描述解决什么问题
图像描述(image captioning) 的目标是:
输入一张图像,输出一段自然语言描述。
例如输入一张客厅图片,模型输出:
这是一张现代风格的客厅照片,左右两边分别有木制椅子,中间有一个茶几。
图像描述比分类、识别、分割更进一步,因为它需要跨模态能力:
- 先理解视觉内容;
- 再组织语言;
- 最后生成符合人类表达习惯的句子。
它连接了两个领域:
- 计算机视觉;
- 自然语言处理。
图像描述的基本流程
图像描述通常包括:
- 输入一张图像;
- 视觉模型提取图像特征;
- 语言模型根据视觉特征生成文字;
- 输出一句或一段描述。
在早期经典模型中,常见结构是:
- CNN 负责“看图”;
- RNN / LSTM 负责“说话”;
- 注意力机制负责“决定描述每个词时该看图中的哪里”。
Show, Attend and Tell
它的核心创新是引入 注意力机制(attention mechanism)。
直观理解:
模型不是一次性看完整张图再机械生成句子,而是在生成每个词时动态关注图像中的关键区域。
例如生成“椅子”这个词时,模型应关注椅子所在区域;生成“茶几”这个词时,应关注茶几所在区域。
这使图像描述更细致、更准确。
它通常结合:
- CNN:提取图像特征;
- RNN:生成文字序列;
- Attention:在生成过程中选择关注区域。
可以把它理解为一个“会看图的讲解员”:
- 一边看图;
- 一边关注关键部分;
- 一边组织语言描述。
Image Caption Generator
它的功能是:
- 上传图片;
- 自动生成图片说明;
- 支持多语言;
- 面向社交媒体用户、博主、内容创作者等。
应用价值包括:
- 帮助视觉障碍人士理解图片;
- 为社交媒体图片生成文案;
- 给图片库自动生成检索标签;
- 辅助新闻、广告、创意内容生产;
- 为多模态模型提供图文对齐数据。
图像描述的局限
图像描述模型也有明显局限。
1. 容易停留在显性物体
模型通常擅长描述:
- 有什么物体;
- 物体大致在哪里;
- 场景是什么。
但它不一定能准确描述:
- 氛围;
- 情绪;
- 隐喻;
- 审美风格;
- 文化含义。
例如人类可能说“这个房间看起来很舒适”,而模型可能只说“房间里有沙发和茶几”。
2. 可能出现错误描述
如果模型误识别了物体,就会生成错误文字。
例如把“猫”误识别为“狗”,描述就会跟着错。
3. 难处理复杂关系
当图像中存在遮挡、重叠、多人物互动、复杂动作时,模型可能难以准确描述物体关系。
4. 依赖训练数据
训练数据如果偏向某类场景或某种表达方式,模型生成的描述也会受到影响。
猫狗图像分类器
这个案例使用的是比较基础的方案:
- 数据:猫狗图片;
- 特征:图像像素值;
- 模型:KNN;
- 任务:二分类。
它适合作为入门案例,因为流程清晰,但性能不一定高。
第一步:数据准备
准备猫狗图像数据集。
数据来源是 Kaggle 的 Dogs vs. Cats 数据集。
数据准备时要关注:
- 图片数量是否足够;
- 猫狗类别是否平衡;
- 图片质量是否可靠;
- 是否有错误标签;
- 是否覆盖不同光线、角度、姿态和背景;
- 训练集和测试集是否严格分开。
例如:
- 训练集中猫的图片全是白天拍摄;
- 测试时出现夜晚拍摄的猫;
- 模型可能因为分布变化而分类错误。
这就是数据分布偏差带来的泛化问题。
第二步:特征选择
使用图像的像素值作为特征。
如果把图片统一成 ,那么每张图片可以展开成一个长向量:
像素特征的优点是:
- 简单;
- 容易理解;
- 适合教学入门。
但它的问题很明显:
- 维度高;
- 对位置变化敏感;
- 对光照变化敏感;
- 难以表达高级语义;
- 距离度量不一定符合人类视觉相似性。
因此如果想提升效果,可以使用更复杂的特征:
- SIFT;
- HOG;
- CNN 深层特征;
- ViT 特征;
- 预训练模型 embedding。
第三步:模型选择
选择 KNN(K-Nearest Neighbors, K 近邻) 分类器。
KNN 的思想非常直观:
要判断一张新图属于哪一类,就看训练集中和它最像的 张图大多数属于哪一类。
流程如下:
- 给定一张待分类图片;
- 计算它与训练集中每张图片的距离;
- 找到距离最近的 张图片;
- 统计这 张图片的类别;
- 采用多数投票输出类别。
常见距离是欧氏距离:
KNN 的优点:
- 思想简单;
- 不需要复杂训练;
- 适合理解分类基本逻辑。
KNN 的局限:
- 高维图像上距离度量效果可能差;
- 预测时要和大量样本比较,效率低;
- 对噪声和数据分布敏感;
- 不能自动学习高级视觉特征。
所以 KNN 更适合作为图像分类入门基线。
第四步:模型训练
KNN 的“训练”主要是保存训练数据和标签。
一般训练流程包括:
- 读取图像;
- 统一尺寸;
- 归一化像素值;
- 展平成特征向量;
- 划分训练集和测试集;
- 用训练集拟合 KNN;
- 在测试集上评估。
注意:
训练集和测试集不能重叠。
如果测试图片已经出现在训练集中,评估结果就会虚高。
第五步:模型评估
示例结果准确率约为 0.44。
这个结果并不高,恰好说明:
只用原始像素值 + KNN,很难处理真实图像分类任务。
图像分类常用指标包括准确率、精确率、召回率和 F1-score。
准确率
表示总体预测正确的比例。
但当类别不平衡时,准确率可能有误导性。
精确率
表示被模型预测为正类的样本中,有多少是真的正类。
如果我们特别希望“预测为猫”的结果尽量准确,就要关注 precision。
召回率
表示所有真正正类样本中,有多少被模型找出来。
如果我们特别希望不要漏掉猫,就要关注 recall。
F1-score
F1 是 precision 和 recall 的调和平均,适合同时关注查准率和查全率的任务。
第六步:模型使用
模型训练和评估完成后,就可以用于新图片分类。
输入一张新图后,模型输出:
- cat;
- dog;
- 或对应概率 / 置信度。
为什么这个案例效果不高
KNN 示例准确率约为 0.44,低于理想效果。
原因主要有:
-
像素不是稳定语义特征
- 同一只猫平移几像素,像素向量就会明显变化。
-
图像维度太高
- 高维空间中距离度量容易失效,KNN 很难找到真正语义相似的图片。
-
背景干扰强
- KNN 可能把背景、光照、颜色当成主要差异。
-
缺少层次特征学习
- 模型没有学到耳朵、胡须、眼睛、轮廓等更高级特征。
-
泛化能力弱
- 遇到训练集中没覆盖的姿态、光照和品种时容易出错。
改进方向:
- 使用 CNN 或 ViT;
- 使用预训练模型提取 embedding;
- 增加数据增强;
- 清洗错误标签;
- 平衡类别数量;
- 引入验证集调参;
- 使用更合适的评价指标。
四类图像理解任务对比
| 任务 | 输入 | 输出 | 解决的问题 | 典型模型 / 工具 |
|---|---|---|---|---|
| 图像分类 | 一张图像 | 一个类别标签 | 这张图是什么 | KNN、CNN、ViT、TensorFlow.js Classifier |
| 图像识别 / 目标检测 | 一张图像 | 类别 + 边界框 | 图里有什么,在哪里 | R-CNN、Fast R-CNN、Faster R-CNN、RTOD |
| 图像分割 | 一张图像 | 每个像素的标签或实例 mask | 每个物体的精确边界在哪里 | FCN、Mask R-CNN、Panoptic FPN、SAM |
| 图像描述 | 一张图像 | 自然语言描述 | 如何用语言描述这张图 | Show, Attend and Tell、Image Caption Generator |
四者的关系可以理解为视觉理解能力逐步加深:
- 分类:粗粒度理解整张图;
- 识别 / 检测:找到具体物体及其大致位置;
- 分割:精确理解物体边界和像素归属;
- 描述:把视觉语义转化为语言表达。
从分类到描述,AI 不断从“看见”走向“理解”。