什么是计算机视觉
计算机视觉(Computer Vision, CV)是人工智能的一个重要分支,旨在使计算机能够从图像或多维数据中“理解”视觉世界。其核心任务包括:
计算机视觉与人类视觉
人类视觉系统的特点:
计算机视觉的挑战:
计算机视觉的主要任务
1. 图像分类:给整张图像打标签
2. 目标检测:定位并识别图像中的物体
3. 语义分割:像素级别的类别标注
4. 实例分割:区分同一类别的不同实例
5. 目标跟踪:追踪视频中的目标
6. 图像生成:创造新的图像
7. 图像恢复:去噪、超分辨率、去模糊
1.2.1 经典网络架构演进
LeNet(1998):
AlexNet(2012):
VGGNet(2014):
ResNet(2015):
EfficientNet(2019):
1.2.2 图像分类的核心技术
数据增强:
正则化技术:
迁移学习:
1.3.1 目标检测的任务定义
目标检测需要同时解决两个子问题:
1. 定位:确定物体的位置(边界框)
2. 分类:确定物体的类别
输出格式:$(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):
优点:速度快,适合实时应用
缺点:小目标和密集目标检测效果较差
YOLO演进:
SSD(Single Shot MultiBox Detector):
RetinaNet:
1.3.4 Anchor-Free检测器
传统方法依赖预定义的Anchor Box,存在超参数敏感问题。
CenterNet:
FCOS(Fully Convolutional One-Stage):
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:
PANet(Path Aggregation Network):
SOLO(Segmenting Objects by Locations):
1.5.1 目标跟踪的任务定义
给定视频第一帧中目标的位置,在后续帧中持续定位该目标。
主要挑战:
1.5.2 跟踪算法分类
基于相关滤波的跟踪:
基于Siamese网络的跟踪:
基于Transformer的跟踪:
1.6.1 从CNN到ViT
CNN在计算机视觉中的局限:
Transformer在NLP的成功启发了视觉领域的探索。
ViT(Vision Transformer):
图像分块(Patch Embedding):
Transformer编码器:
1.6.2 ViT的关键发现
归纳偏置的权衡:
数据规模的重要性:
1.6.3 ViT的改进变体
DeiT(Data-efficient Image Transformer):
Swin Transformer:
PVT(Pyramid Vision Transformer):
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:
MAE(Masked Autoencoder):
1.7.4 自监督学习的应用
1.8.1 图像生成
VAE和GAN:
扩散模型:
1.8.2 文本到图像生成
DALL-E / DALL-E 2:
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内容生成
题目:给定两个边界框:
计算IoU(Intersection over Union)。
分析过程:
步骤1:确定边界框参数
Box A:
Box B:
步骤2:计算交集区域
交集的左下角:
交集的右上角:
交集宽度:$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%)。
分析:
题目:语义分割网络输出特征图尺寸为$8 \times 8$,类别数为21。需要上采样到原始图像尺寸$256 \times 256$。使用双线性插值和1×1卷积,计算输出尺寸和参数数量。
分析过程:
步骤1:1×1卷积调整通道数
输入特征图:$8 \times 8 \times C$(假设$C$为通道数)
1×1卷积将通道数映射到类别数:
步骤2:双线性插值上采样
上采样因子:$256 / 8 = 32$
使用双线性插值将$8 \times 8$上采样到$256 \times 256$:
步骤3:最终输出
对每个空间位置,21个通道对应21个类别的概率(经过softmax)。
尺寸总结:
参数总结:
分析:
题目: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$参数
总结:
分析:
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$
交集:
并集:$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。