第 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):

      1. 特征提取:CNN(如 ResNet)→ 全局特征向量(embedding)。

      2. 降维:PCA / NetVLAD / GeM pooling。

      3. 索引:kd-tree / 局部敏感哈希(LSH)/ 乘积量化(PQ)。

      4. 检索:最近邻 / 近似最近邻(ANN)。

      实例识别 vs 分类
      • 实例识别:精确匹配(同一物体 / 同一地点);强特征 + ANN。

      • 分类:粗粒度类别(猫 / 狗);弱特征 + 全连接层。

      • 现代:实例识别也用深度学习(NetVLAD / AP-GeM)。

      When:图像检索;视觉定位;商品识别;以图搜图。

      Exampleopen_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。

      训练流程:

      1. 预训练:ImageNet(1.2M 图像 / 1000 类)。

      2. 迁移学习:微调到下游任务(小数据集)。

      3. 数据增强:随机裁剪 / 翻转 / 颜色抖动 / Mixup / CutMix。

      4. 正则化:Dropout / Weight Decay / Label Smoothing。

      分类的工程经验
      • ImageNet 预训练 + 微调是大多数 CV 任务的标准起点。

      • EfficientNet 是精度 / 效率最优(自动搜索)。

      • ViT 需大数据集;CNN 在中小数据更稳。

      • 数据 > 架构:标注数据越多越强。

      When:所有 CV 任务的 backbone;预训练迁移;小数据集快速建模。

      Exampletorchvision.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 单阶段检测
      • 两阶段:精度高(区域提议 + 精修);速度慢。

      • 单阶段:速度快(端到端);精度通常略低。

      • 现代:单阶段 + Anchor-free(FCOS / CenterNet)/ Transformer 已追平两阶段精度。

      When:自动驾驶感知;视频监控;工业质检;AR。

      Exampletorchvision.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 实例分割
      • 语义:每个像素 1 个类别;不区分同类不同实例。

      • 实例:每个目标 1 个 mask;区分"两个相邻的人"。

      • 全景(Panoptic):两者的结合。

      When:医学影像(U-Net);自动驾驶(语义 + 实例);AR(实例)。

      Exampletorchvision.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 图像的关键差异
      • 时间维:动作 / 事件在帧间展开。

      • 计算成本:视频比图像大 10-100 倍(FPS × 时长)。

      • 标注:比图像标注贵 10 倍。

      When:动作识别;视频描述;短视频应用;体育分析。

      Exampletorchvision.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:多模态大模型;通用视觉理解。

      多模态基础模型的影响
      • 零样本能力:CLIP 无需训练即可识别 ImageNet 1000 类。

      • 提示学习:CLIP 文本编码器支持 prompt 调整。

      • 通用接口:GPT-4V / Gemini 支持图像 + 文本混合输入。

      When:以文搜图(CLIP);图像描述(BLIP);VQA;多模态聊天。

      Exampleopen_clip 库;transformers.BlipForConditionalGenerationlangchain 多模态。

      三、关键图表

      视觉图表

      图 6-1
      Figure 1. 图 6-1:分类 CNN 架构
      图 6-2
      Figure 2. 图 6-2:Faster R-CNN 流程
      图 6-3
      Figure 3. 图 6-3:YOLO 网格检测
      图 6-4
      Figure 4. 图 6-4:U-Net 架构
      图 6-5
      Figure 5. 图 6-5:CLIP 对比学习

      非可视化条目

      非可视化条目(表 / 算法)
      编号 内容摘要

      表 6.1

      检测算法对比(R-CNN / YOLO / DETR)。

      表 6.2

      分割算法对比(FCN / U-Net / DeepLab / SAM)。

      表 6.3

      视频理解模型对比(C3D / I3D / Video Swin)。

      式 6-1 至 6-10

      分类 / 检测 / 分割损失函数。

      列表 6.1-6.x

      torchvision / ultralytics / HuggingFace 示例代码。

      核心公式对照表

      核心公式对照表
      概念 公式

      交叉熵损失

      \(L_{CE} = -\sum_c y_c \log \hat{y}_c\)

      IoU

      latexmath:[\text{IoU} = \frac{

      A \cap B

      }{

      A \cup B

      }]

      Focal Loss

      \(L = -\alpha (1-p)^\gamma \log p\)

      Dice Loss

      latexmath:[L = 1 - \frac{2

      A \cap B

      }{

      A

      +

      B

      }]

      CLIP 损失

      \(L = -\log \frac{\exp(s_{ii})}{\sum_j \exp(s_{ij})}\)

      四、思维导图

      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 用本章检测做闭环。