第 6 章 识别 (Recognition)
核心结论
-
实例识别(§6.1):给定查询图像,在数据库中找匹配图像;图像检索 / 视觉定位的基础。
-
图像分类(§6.2):整图类别预测;CNN / ViT 是 SOTA;ImageNet 1.2M 图像 / 1000 类。
-
目标检测(§6.3):bounding box + 类别;两阶段(Faster R-CNN)/ 单阶段(YOLO / SSD)/ Transformer(DETR)。
-
语义分割(§6.4):像素级类别;FCN / U-Net / DeepLab / Mask2Former。
-
实例分割:每个目标的 mask;Mask R-CNN / SAM。
-
视频理解(§6.5):动作识别 / 时序建模;3D CNN / Video Swin / TimeSformer。
-
视觉与语言(§6.6):图像描述 / VQA / 视觉对话;CLIP / BLIP / GPT-4V。
|
本章主旨
本章是 CV 的"识别章"——把图像 / 视频映射到语义标签。识别是 CV 商业应用最广的领域(人脸识别 / 自动驾驶感知 / 医学影像);本章给出完整的算法谱系(实例识别 → 分类 → 检测 → 分割 → 视频 → 多模态)。 |
一、核心概念
本章围绕 7 个核心概念展开:实例识别 → 分类 → 检测 → 语义分割 → 实例分割 → 视频理解 → 视觉与语言。
| 概念 | 定义 + 重要性 | 实现提示 |
|---|---|---|
实例识别 |
在数据库中找匹配查询图像;图像检索 / 视觉定位。 |
§6.1;特征向量 + 最近邻搜索。 |
图像分类 |
整图类别;CNN / ViT SOTA;ImageNet 基准。 |
§6.2;所有视觉任务的基础。 |
目标检测 |
bounding box + 类别;R-CNN / YOLO / DETR。 |
§6.3;自动驾驶 / 安防核心。 |
语义分割 |
像素级类别;FCN / U-Net / DeepLab。 |
§6.4;医学影像 / 自动驾驶。 |
实例分割 |
每个目标的 mask;Mask R-CNN / SAM。 |
§6.4;AR / 自动驾驶精细感知。 |
视频理解 |
时序建模;3D CNN / Video Swin / TimeSformer。 |
§6.5;动作识别 / 视频描述。 |
视觉与语言 |
图像描述 / VQA;CLIP / BLIP / GPT-4V。 |
§6.6;多模态基础模型。 |
二、详细笔记
2.1 实例识别 (Instance Recognition)
What:给定查询图像,在大型图像数据库中找匹配。
Why:图像检索 / 视觉定位 / 重复图像检测的基础。
How:
实例识别流程(§6.1):
-
特征提取:CNN(如 ResNet)→ 全局特征向量(embedding)。
-
降维:PCA / NetVLAD / GeM pooling。
-
索引:kd-tree / 局部敏感哈希(LSH)/ 乘积量化(PQ)。
-
检索:最近邻 / 近似最近邻(ANN)。
|
实例识别 vs 分类
|
When:图像检索;视觉定位;商品识别;以图搜图。
Example:open_clip 提供 CLIP 特征;faiss 提供 ANN 索引;Google Image Search 用此技术。
2.2 图像分类 (Image Classification)
What:整图类别预测——给定图像输出 1 个或多个类别标签。
Why:所有视觉任务的基础;ImageNet 推动深度学习革命。
How:
分类算法(§6.2):
-
传统:SIFT + SVM / HOG + AdaBoost。
-
CNN:AlexNet / VGG / ResNet / EfficientNet。
-
Transformer:ViT / Swin / ConvNeXt。
训练流程:
-
预训练:ImageNet(1.2M 图像 / 1000 类)。
-
迁移学习:微调到下游任务(小数据集)。
-
数据增强:随机裁剪 / 翻转 / 颜色抖动 / Mixup / CutMix。
-
正则化:Dropout / Weight Decay / Label Smoothing。
|
分类的工程经验
|
When:所有 CV 任务的 backbone;预训练迁移;小数据集快速建模。
Example:torchvision.models.resnet50(weights='IMAGENET1K_V2');timm.create_model('efficientnet_b0', pretrained=True)。
2.3 目标检测 (Object Detection)
What:bounding box + 类别——多目标定位 + 分类。
Why:自动驾驶 / 安防 / 工业检测的核心任务;比分类更精细。
How:
检测算法演进(§6.3):
-
传统:HOG + DPM(deformable parts model)。
-
两阶段 CNN:R-CNN → Fast R-CNN → Faster R-CNN(区域提议 + R-CNN)。
-
单阶段 CNN:YOLO / SSD / RetinaNet(端到端密集预测)。
-
Transformer:DETR / Deformable DETR(集合预测,无 NMS)。
关键组件:
-
Anchor:预定义 box 模板;YOLO / Faster R-CNN 用。
-
NMS(非极大值抑制):去重检测框。
-
IoU(交并比):评估指标 + 损失函数。
|
两阶段 vs 单阶段检测
|
When:自动驾驶感知;视频监控;工业质检;AR。
Example:torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True);ultralytics 提供 YOLOv5 / YOLOv8;HuggingFace transformers 提供 DETR。
2.4 语义分割与实例分割 (Semantic & Instance Segmentation)
What:语义分割 = 像素级类别;实例分割 = 每个目标的像素 mask。
Why:医学影像 / 自动驾驶 / AR 需要精细的像素级理解。
How:
语义分割(§6.4):
-
FCN(2014):全卷积网络;上采样恢复分辨率。
-
U-Net(2015):encoder-decoder + 跳跃连接;医学影像标准。
-
DeepLab(2017):atrous convolution + CRF 后处理。
-
SegFormer(2021):Transformer 简单高效。
实例分割:
-
Mask R-CNN(2017):Faster R-CNN + mask 分支。
-
SAM(2023,Segment Anything):基础模型 + promptable segmentation。
|
语义 vs 实例分割
|
When:医学影像(U-Net);自动驾驶(语义 + 实例);AR(实例)。
Example:torchvision.models.segmentation.deeplabv3_resnet50(pretrained=True);segment-anything 仓库 SAM 模型。
2.5 视频理解 (Video Understanding)
What:从视频中提取时序信息——动作识别 / 视频描述 / 行为预测。
Why:监控 / 体育 / 自动驾驶 / 短视频应用需要时序建模。
How:
视频理解算法(§6.5):
-
3D CNN:C3D / I3D(3D 卷积,时间维扩展)。
-
Two-Stream:RGB + 光流双流网络。
-
Video Transformer:Video Swin / TimeSformer / ViViT。
-
应用:动作识别 / 视频描述 / 视频检索。
|
视频 vs 图像的关键差异
|
When:动作识别;视频描述;短视频应用;体育分析。
Example:torchvision.models.video.r3d_18(pretrained=True);mmaction2 框架;transformers 提供 VideoMAE。
2.6 视觉与语言 (Vision and Language)
What:联合理解图像 + 文本——图像描述 / VQA / 视觉对话 / 多模态检索。
Why:基础模型(CLIP / BLIP / GPT-4V)的核心;CV 与 NLP 融合。
How:
VLM 演进(§6.6):
-
Show and Tell(2015):CNN + LSTM 图像描述。
-
CLIP(2021):对比学习 + 文本对齐;零样本分类。
-
BLIP / BLIP-2:指令微调;图像描述 / VQA。
-
GPT-4V / Gemini:多模态大模型;通用视觉理解。
|
多模态基础模型的影响
|
When:以文搜图(CLIP);图像描述(BLIP);VQA;多模态聊天。
Example:open_clip 库;transformers.BlipForConditionalGeneration;langchain 多模态。
三、关键图表
视觉图表
四、思维导图
mindmap
root((第 6 章 识别))
实例识别
特征向量
ANN索引
检索
分类
CNNViT
ImageNet
迁移学习
检测
两阶段
单阶段YOLO
DETR
分割
语义FCNUNet
实例MaskRCNN
SAM
视频
3DCNN
VideoSwin
动作识别
视觉语言
CLIP
BLIP
GPT4V
五、重点与易错点
-
ImageNet 预训练 + 微调是 CV 标配:减少数据需求 + 提升精度。
-
YOLO 实时检测首选:自动驾驶 / 视频监控的默认选择;DETR 精度高但慢。
-
语义 vs 实例分割:根据任务选择——自动驾驶用全景;AR 用实例。
-
SAM 是分割的基础模型:零样本分割 + promptable;取代大量专用模型。
-
CLIP 零样本能力强大:无需训练即可识别新类别(用文本提示)。
-
视频模型贵 10-100 倍:训练需谨慎(数据 / 计算);用预训练 + 微调。
-
VLM 是未来方向:CLIP / BLIP / GPT-4V 正在改变 CV 应用模式。
-
跨章衔接:第 5 章深度学习是本章所有识别算法的基础;第 7 章特征匹配是实例识别的方法之一;第 11 章 SLAM 用本章检测做闭环。