这是本文档旧的修订版!


第十一章 计算机视觉

什么是计算机视觉

计算机视觉(Computer Vision, CV)是人工智能的一个重要分支,旨在使计算机能够从图像或多维数据中“理解”视觉世界。其核心任务包括: - 从数字图像中提取有意义的信息 - 理解场景的内容和结构 - 做出基于视觉信息的决策

计算机视觉与人类视觉

人类视觉系统的特点: - 并行处理大量信息 - 具有先验知识和推理能力 - 对光照、视角变化具有鲁棒性 - 可以处理模糊和不完整的输入

计算机视觉的挑战: - 从2D图像恢复3D信息是病态问题 - 光照、遮挡、形变等因素增加复杂性 - 需要大量数据学习视觉概念

计算机视觉的主要任务

1. 图像分类:给整张图像打标签 2. 目标检测:定位并识别图像中的物体 3. 语义分割:像素级别的类别标注 4. 实例分割:区分同一类别的不同实例 5. 目标跟踪:追踪视频中的目标 6. 图像生成:创造新的图像 7. 图像恢复:去噪、超分辨率、去模糊

1.2.1 经典网络架构演进

LeNet(1998): - 首个成功的卷积神经网络 - 5层结构:2个卷积层 + 3个全连接层 - 应用于手写数字识别(MNIST) - 奠定了CNN的基础架构

AlexNet(2012): - 深度学习的里程碑 - 8层网络,首次使用ReLU和Dropout - GPU加速训练,大规模数据(ImageNet) - 错误率比传统方法降低10%以上

VGGNet(2014): - 探索网络深度的影响 - 使用更小的3×3卷积核替代大卷积核 - VGG-16和VGG-19成为标准架构 - 证明深度是提升性能的关键因素

ResNet(2015): - 引入残差连接解决梯度消失 - 可以训练超过100层的深层网络 - ResNet-152在ImageNet上取得突破性成果 - 成为后续网络的标配组件

EfficientNet(2019): - 系统研究网络的深度、宽度、分辨率平衡 - 使用复合系数统一缩放三个维度 - 在精度和效率之间取得最佳平衡

1.2.2 图像分类的核心技术

数据增强: - 几何变换:翻转、旋转、裁剪、缩放 - 颜色变换:亮度、对比度、色调调整 - 高级增强:Mixup、CutMix、AutoAugment

正则化技术: - Dropout:随机丢弃神经元 - Batch Normalization:批归一化 - Label Smoothing:标签平滑 - Stochastic Depth:随机深度

迁移学习: - 在大规模数据集(ImageNet)上预训练 - 在目标任务上微调 - 小样本场景下的有效策略

1.3.1 目标检测的任务定义

目标检测需要同时解决两个子问题: 1. 定位:确定物体的位置(边界框) 2. 分类:确定物体的类别

输出格式:$(x, y, w, h, class, confidence)$ - $(x, y)$:边界框中心坐标 - $(w, h)$:边界框宽度和高度 - $class$:物体类别 - $confidence$:置信度

1.3.2 两阶段检测器

R-CNN系列

R-CNN(2014): 1. 使用Selective Search生成候选区域(约2000个) 2. 每个候选区域缩放到固定尺寸 3. 使用CNN提取特征 4. SVM分类 + 边界框回归

局限性:每个候选区域单独前向传播,速度极慢。

Fast R-CNN(2015): 1. 整张图像输入CNN得到特征图 2. ROI Pooling从特征图提取候选区域特征 3. 全连接层同时进行分类和回归

改进:共享卷积计算,显著提速。

Faster R-CNN(2015): 1. 引入区域提议网络(RPN)替代Selective Search 2. RPN与检测网络共享特征 3. 端到端训练

特点:首个接近实时的两阶段检测器。

1.3.3 单阶段检测器

YOLO(You Only Look Once): - 将检测视为回归问题 - 图像划分为$S \times S$网格 - 每个网格预测$B$个边界框和类别概率 - 单次前向传播完成检测和分类

优点:速度快,适合实时应用 缺点:小目标和密集目标检测效果较差

YOLO演进: - YOLOv2/v3:引入Batch Norm、Anchor Box、多尺度预测 - YOLOv4/v5:各种优化技巧的组合 - YOLOv8:Anchor-Free、解耦头、CIOU Loss

SSD(Single Shot MultiBox Detector): - 多尺度特征图预测 - 使用不同尺度和长宽比的默认框(Default Boxes) - 在多个层同时进行检测

RetinaNet: - 引入Focal Loss解决正负样本不平衡 - Focal Loss降低易分样本的权重,聚焦难分样本

1.3.4 Anchor-Free检测器

传统方法依赖预定义的Anchor Box,存在超参数敏感问题。

CenterNet: - 将目标表示为中心点 - 预测中心点偏移、尺寸、方向等 - 无需NMS后处理

FCOS(Fully Convolutional One-Stage): - 逐像素预测 - 引入中心度(Center-ness)抑制低质量预测 - 完全避免Anchor相关计算

1.4.1 语义分割

为图像中每个像素分配类别标签。

FCN(Fully Convolutional Network): - 首个端到端分割网络 - 将全连接层替换为卷积层 - 使用转置卷积(上采样)恢复分辨率 - 跳跃连接融合不同层次特征

U-Net: - 编码器-解码器结构 - 跳跃连接保留空间细节 - 在医学图像分割中广泛应用

DeepLab系列

空洞卷积(Atrous/Dilated Convolution): - 在卷积核中插入空洞 - 扩大感受野而不增加参数 - 保留高分辨率特征图

ASPP(Atrous Spatial Pyramid Pooling): - 使用不同空洞率的并行卷积 - 捕获多尺度上下文

PSPNet(Pyramid Scene Parsing Network): - 金字塔池化模块 - 聚合不同区域的上下文

1.4.2 实例分割

同时完成检测和分割,区分同一类别的不同实例。

Mask R-CNN: - 在Faster R-CNN基础上增加Mask分支 - ROI Align替代ROI Pooling,解决量化误差 - 同时输出类别、边界框、分割掩码

PANet(Path Aggregation Network): - 增强信息传播路径 - 自适应特征池化

SOLO(Segmenting Objects by Locations): - 将实例分割转化为位置分类 - 引入坐标卷积(CoordConv)

1.5.1 目标跟踪的任务定义

给定视频第一帧中目标的位置,在后续帧中持续定位该目标。

主要挑战: - 遮挡、形变、尺度变化 - 光照变化、运动模糊 - 相似物体干扰 - 实时性要求

1.5.2 跟踪算法分类

基于相关滤波的跟踪: - MOSSE、KCF、CSR-DCF - 利用循环矩阵性质加速训练 - 速度快,但精度有限

基于Siamese网络的跟踪: - SiamFC、SiamRPN、SiamMask - 孪生网络提取模板和搜索区域的特征 - 相关操作定位目标 - 端到端训练,精度高

基于Transformer的跟踪: - TransT、STARK、MixFormer - 利用自注意力和交叉注意力建模模板与搜索区域关系 - 当前SOTA方法

1.6.1 从CNN到ViT

CNN在计算机视觉中的局限: - 局部感受野限制长距离建模 - 平移等变性可能不是最佳选择 - 需要大量归纳偏置

Transformer在NLP的成功启发了视觉领域的探索。

ViT(Vision Transformer)

图像分块(Patch Embedding): - 将图像分割为固定大小的patch(如16×16) - 每个patch展平并线性投影为向量 - 加入位置编码

Transformer编码器: - 标准的多头自注意力 + MLP结构 - 在大规模数据集上预训练 - 在下游任务上微调

1.6.2 ViT的关键发现

归纳偏置的权衡: - CNN具有局部性、平移等变性等归纳偏置 - ViT依赖自注意力学习空间关系 - 在小数据集上CNN更好,在大数据集上ViT可以超越

数据规模的重要性: - ViT需要大规模数据(如JFT-300M)预训练 - 在ImageNet上从头训练效果不如ResNet

1.6.3 ViT的改进变体

DeiT(Data-efficient Image Transformer): - 使用知识蒸馏从CNN迁移知识 - 在ImageNet上从头训练即可达到好效果

Swin Transformer: - 层次化金字塔结构 - 移位窗口(Shifted Window)自注意力 - 线性复杂度,适合高分辨率图像

PVT(Pyramid Vision Transformer): - 金字塔结构降低计算复杂度 - 空间缩减注意力(Spatial Reduction Attention)

1.7.1 自监督学习的动机

标注数据昂贵且耗时,如何利用海量无标注数据?

自监督学习通过设计预训练任务,从无标注数据学习有用表示。

1.7.2 对比学习

核心思想:学习使相似样本接近、不相似样本远离的表示。

SimCLR: 1. 对每个样本生成两个增强视图 2. 使用同一网络编码两个视图 3. 最大化同一样本不同视图的相似度 4. 最小化不同样本的相似度

InfoNCE Loss

$$\mathcal{L} = -\log \frac{\exp(sim(z_i, z_j)/\tau)}{\sum_{k} \exp(sim(z_i, z_k)/\tau)}$$

其中$z_i, z_j$是正样本对,$\tau$是温度系数。

MoCo(Momentum Contrast): - 使用动量编码器维护动态字典 - 解决大批量训练的需求 - 引入队列存储负样本

BYOL和SimSiam: - 无需负样本的对比学习 - 使用非对称结构防止平凡解 - 在线网络和目标网络

1.7.3 掩码图像建模(Masked Image Modeling)

受BERT启发,在图像上进行掩码预测。

BEiT: - 使用离散VAE将图像转换为视觉token - 掩码部分patch,预测离散token

MAE(Masked Autoencoder): - 高掩码率(75%) - 非对称编码器-解码器 - 仅编码可见patch,解码器重建完整图像

1.7.4 自监督学习的应用

- 预训练后微调下游任务 - 数据高效的迁移学习 - 特征表示的可视化和分析

1.8.1 图像生成

VAE和GAN: - 生成高质量图像 - 支持条件生成(类别、文本、草图)

扩散模型: - DDPM、Stable Diffusion - 逐步去噪生成图像 - 当前最高质量的生成方法

1.8.2 文本到图像生成

DALL-E / DALL-E 2: - GPT风格的文本编码 - 自回归或扩散模型生成图像

Stable Diffusion: - 在潜在空间进行扩散 - 大幅降低计算成本 - 开源,社区生态丰富

ControlNet: - 在扩散模型上添加条件控制 - 支持边缘、姿态、深度等多种条件

1.8.3 神经辐射场(NeRF)

从多视角图像学习场景的隐式3D表示:

$$\mathbf{c}, \sigma = \text{MLP}(\mathbf{x}, \mathbf{d})$$

其中$\mathbf{x}$是3D坐标,$\mathbf{d}$是视角方向,输出颜色$\mathbf{c}$和体密度$\sigma$。

通过体渲染合成新视角图像。

应用:3D重建、新视角合成、3D内容生成

题目:给定两个边界框: - Box A:左上角$(0, 0)$,右下角$(4, 4)$ - Box B:左上角$(2, 2)$,右下角$(6, 6)$

计算IoU(Intersection over Union)。

分析过程

步骤1:确定边界框参数

Box A: - 左下角:$(0, 0)$ - 右上角:$(4, 4)$ - 宽度:$w_A = 4$,高度:$h_A = 4$ - 面积:$Area_A = 4 \times 4 = 16$

Box B: - 左下角:$(2, 2)$ - 右上角:$(6, 6)$ - 宽度:$w_B = 4$,高度:$h_B = 4$ - 面积:$Area_B = 4 \times 4 = 16$

步骤2:计算交集区域

交集的左下角: - $x_1 = \max(0, 2) = 2$ - $y_1 = \max(0, 2) = 2$

交集的右上角: - $x_2 = \min(4, 6) = 4$ - $y_2 = \min(4, 6) = 4$

交集宽度:$w_{inter} = x_2 - x_1 = 4 - 2 = 2$ 交集高度:$h_{inter} = y_2 - y_1 = 4 - 2 = 2$

交集面积: $$Area_{inter} = 2 \times 2 = 4$$

步骤3:计算并集面积

$$Area_{union} = Area_A + Area_B - Area_{inter}$$ $$= 16 + 16 - 4 = 28$$

步骤4:计算IoU

$$IoU = \frac{Area_{inter}}{Area_{union}} = \frac{4}{28} = \frac{1}{7} \approx 0.143$$

结论:两个边界框的IoU约为0.143(14.3%)。

分析: - IoU是目标检测中评估定位精度的重要指标 - 通常IoU阈值设为0.5判断正负样本 - 此例中IoU较低,说明两个框重叠较少

题目:语义分割网络输出特征图尺寸为$8 \times 8$,类别数为21。需要上采样到原始图像尺寸$256 \times 256$。使用双线性插值和1×1卷积,计算输出尺寸和参数数量。

分析过程

步骤1:1×1卷积调整通道数

输入特征图:$8 \times 8 \times C$(假设$C$为通道数) 1×1卷积将通道数映射到类别数: - 权重尺寸:$1 \times 1 \times C \times 21$ - 输出:$8 \times 8 \times 21$ - 参数数量:$1 \times 1 \times C \times 21 = 21C$

步骤2:双线性插值上采样

上采样因子:$256 / 8 = 32$

使用双线性插值将$8 \times 8$上采样到$256 \times 256$: - 输出尺寸:$256 \times 256 \times 21$ - 双线性插值是确定性的,无需学习参数

步骤3:最终输出

对每个空间位置,21个通道对应21个类别的概率(经过softmax)。

尺寸总结: - 输入:$8 \times 8 \times C$ - 1×1卷积后:$8 \times 8 \times 21$ - 上采样后:$256 \times 256 \times 21$

参数总结: - 1×1卷积参数:$21C$ - 上采样层参数:0

分析: - 1×1卷积用于将特征映射到类别空间 - 上采样恢复空间分辨率 - 可以调换顺序:先上采样再1×1卷积,但计算量更大

题目:ViT处理$224 \times 224$的图像,patch大小为$16 \times 16$,嵌入维度为768。计算: 1. patch数量 2. patch嵌入后的序列长度 3. 可学习的线性投影参数数量

分析过程

步骤1:计算patch数量

图像尺寸:$224 \times 224$ Patch尺寸:$16 \times 16$

每行的patch数:$224 / 16 = 14$ 每列的patch数:$224 / 16 = 14$

总patch数:$14 \times 14 = 196$

步骤2:序列长度

每个patch展平后:$16 \times 16 \times 3 = 768$(假设RGB图像)

经过线性投影到768维后,每个patch对应一个768维的向量。

序列长度 = patch数 + 1(类别token)= 197

步骤3:线性投影参数

输入维度:$16 \times 16 \times 3 = 768$ 输出维度:$768$

线性投影矩阵:$768 \times 768$ 偏置向量:$768$

总参数:$768 \times 768 + 768 = 589,824 + 768 = 590,592$

步骤4:位置编码参数

可学习的位置编码:$197 \times 768 = 151,296$参数

总结: - Patch数量:196 - 序列长度:197(含类别token) - Patch嵌入参数:590,592 - 位置编码参数:151,296

分析: - ViT将图像转化为类似NLP的序列 - 计算复杂度高($O(n^2)$的自注意力) - 需要大规模数据预训练

1. Faster R-CNN中的RPN的作用是:

 A. 提取特征
 B. 生成区域提议
 C. 分类物体
 D. 分割实例

2. YOLO属于什么类型的检测器?

 A. 两阶段检测器
 B. 单阶段检测器
 C. 实例分割方法
 D. 目标跟踪方法

3. U-Net的跳跃连接主要用于:

 A. 加速训练
 B. 保留空间细节
 C. 减少参数量
 D. 增加深度

4. ViT将图像分割为16×16的patch,输入$224 \times 224$图像会产生多少个patch?

 A. 14
 B. 196
 C. 224
 D. 768

5. 对比学习中,InfoNCE损失的目标是:

 A. 最大化正样本对相似度,最小化负样本对相似度
 B. 最小化所有样本对的相似度
 C. 最大化所有样本对的相似度
 D. 保持所有样本对的相似度不变

6. 目标检测需要同时解决两个子问题。

7. IoU的全称是,用于评估边界框的重叠程度。

8. ResNet通过引入连接解决了深层网络的梯度消失问题。

9. 语义分割为图像中每个分配类别标签。

10. MAE(Masked Autoencoder)采用%的掩码率。

11. Box A:$(0,0,4,4)$,Box B:$(3,3,7,7)$(格式:$x,y,w,h$)。计算IoU。

12. 特征图尺寸$16 \times 16$,通过$3 \times 3$空洞卷积(dilation=2, padding=2),计算输出尺寸。

13. ViT处理$384 \times 384$图像,patch大小为$16 \times 16$,计算patch数量。

一、选择题答案:

1. 答案:B

 解析:RPN(Region Proposal Network)用于生成候选区域提议,替代传统的Selective Search。

2. 答案:B

 解析:YOLO是单阶段检测器,直接预测边界框和类别,速度快。

3. 答案:B

 解析:U-Net的跳跃连接将编码器的低层特征直接传递到解码器,保留空间细节。

4. 答案:B

 解析:$(224/16) \times (224/16) = 14 \times 14 = 196$个patch。

5. 答案:A

 解析:对比学习通过拉近正样本对、推远负样本对来学习有用表示。

二、填空题答案:

6. 答案:定位;分类

 解析:目标检测需要定位物体位置并分类物体类别。

7. 答案:Intersection over Union

 解析:IoU = 交集面积 / 并集面积。

8. 答案:残差(或Residual,或skip connection)

 解析:残差连接允许梯度直接传播,解决梯度消失。

9. 答案:像素

 解析:语义分割是像素级别的分类任务。

10. 答案:75(或75%)

  解析:MAE采用高掩码率75%,迫使模型学习强特征表示。

三、计算题答案:

11. 解答:

  
  Box A:$(0, 0)$到$(4, 4)$,面积$= 4 \times 4 = 16$
  
  Box B:$(3, 3)$到$(7, 7)$,面积$= 4 \times 4 = 16$
  
  交集:
  - 左下角:$(\max(0,3), \max(0,3)) = (3, 3)$
  - 右上角:$(\min(4,7), \min(4,7)) = (4, 4)$
  - 宽度:$4 - 3 = 1$
  - 高度:$4 - 3 = 1$
  - 交集面积:$1 \times 1 = 1$
  
  并集:$16 + 16 - 1 = 31$
  
  IoU:$1/31 \approx 0.032$

12. 解答:

  
  空洞卷积有效核大小:$k_{effective} = k + (k-1)(d-1) = 3 + 2 \times 1 = 5$
  
  输出尺寸公式:$H_{out} = \lfloor(H_{in} + 2p - k_{effective})/s\rfloor + 1$
  
  假设stride=1:
  $H_{out} = (16 + 2 \times 2 - 5)/1 + 1 = 16 + 4 - 5 + 1 = 16$
  
  输出尺寸:$16 \times 16$

13. 解答:

  
  $(384/16) \times (384/16) = 24 \times 24 = 576$
  
  共576个patch。

该主题尚不存在

您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。

  • 深度学习/计算机视觉.1772454606.txt.gz
  • 最后更改: 2026/03/02 20:30
  • 张叶安