计算机视觉与模式识别(CVPR) 期末复习

高斯核,中值滤波,双边滤波,fourier变换,频域和空间域的关系,图像变换和逆变换,插值,Gauss金字塔和Laplace金字塔(4题)

tiny边缘检测,计算图像梯度,NMS,角点检测(平移不变性,旋转不变性),shift描述子(如何描述平移不变性和旋转不变性),UISIKe(3题)

相机标记,数目视觉,对极几何(4题)

运动场和光流场的区别,光流场反应的运动,光流约束,Gauss大运动转化为小运动(1题)

计算机视觉部分请见PDF:

下面为模式识别部分:

传统分类器

KNN

中间空的区域原理K1K\neq 1的情况.

image-20230216082130478

决策边界是两个不同分类区域之间的边界,决策边界可能是有噪声的;它会受到离群点的影响,如何平滑决策边界?使用更多的近邻!

当K>1时,不同类之间可能会出现间隙,这需要用某种方式消除!

贝叶斯分类器

贝叶斯规则(贝叶斯公式)

image-20230215162533241 image-20230215162600296

多元高斯分布,确定 x\boldsymbol{x} 的概率分布

image-20230215162856082 image-20230215162921390 image-20230215163106362

线性分类器

打分机制,从三种不同视角查看分类器结果(代数视角,视觉视角,几何视角)

image-20230215163632931 image-20230215163655099 image-20230215163813887

支持向量机

image-20230215164017473 image-20230215164047599

打分函数:Hinge损失

image-20230215164109866

多分类的计算结果;交叉熵损失

image-20230215164248396

交叉熵损失 vs SVM损失

image-20230215164404184 image-20230215164426561

深度神经网络

如何描述非线性可分问题的解决思路(通过非线性变换)

image-20230215164735971

神经网络作为可学习的特征转换

image-20230215165326217

实现非线性变化的原理:激活函数(Sigmoid, tanh, ReLU)掌握梯度计算结果(用于梯度下降法).

image-20230215165404247

梯度下降法(重点)

通过上游梯度计算下游梯度,掌握梯度反向传播原理. 可能考察标量和矢量计算,不会考察矩阵计算.

image-20230215170336025

流式传播可以便于求解梯度,计算速度更快.

image-20230215171233691 image-20230215171253019

其他激活函数的梯度

image-20230215171315062 image-20230215171942275 image-20230215172301822

优化算法

数值梯度,解析梯度.

image-20230216092258290

随机梯度下降法(SGD)

image-20230216092213394 image-20230216092425016 image-20230216092724864 image-20230216092809655

动量(Momentum)的定义,掌握Adam算法原理,解释优化的道理.

image-20230216093028143

上述定义中 α\alpha 称为学习率(步长),两种动量定义:

image-20230216093419050

牛顿动量:使用速度更新到达新的一点,计算这一点的梯度并与速度混合作为当前的更新方向,x~\tilde{x} 为Newton动量中的参数位置,主要因为只想去更新 x~,f(x~)\tilde{x},f(\tilde{x})

image-20230216094939693

AdaGrad归一化原理:缩放每个参数反比于其所有梯度历史平方值总和的平方根,也称为“参数学习率”或“自适应学习率”。特点:沿着“陡峭”方向的前进受到阻碍; 沿“平坦”方向前进加快 .

ws(i)ws(i1)+w(i)22,vi=αw(i)ws(i)w_s^{(i)} \leftarrow w_s^{(i-1)} + ||\nabla w^{(i)}||_2^2,\quad \boldsymbol{v_i} = -\alpha\frac{\nabla w^{(i)}}{\sqrt{w_s^{(i)}}}

其中 w(i)w^{(i)} 表示第 ii 次更新前的梯度值,ws(i)w^{(i)}_s 表示第 ii 次更新前全部梯度的二范数平方.

image-20230216095158817

RMSProp: “Leaky Adagrad”,带有衰减系数的Adagrad,令衰减系数为 δ(0,1)\delta\in (0,1).

ws(i)δws(i1)+(1δ)w(i)22,vi=αw(i)ws(i)w_s^{(i)} \leftarrow \delta w_s^{(i-1)} + (1-\delta)||\nabla w^{(i)}||_2^2,\quad \boldsymbol{v_i} = -\alpha\frac{\nabla w^{(i)}}{\sqrt{w_s^{(i)}}}

image-20230216100342662

自适应矩估计(Adam):RMSProp + Momentum,Adam同时兼顾了动量 v1\boldsymbol{v}_1 和RMSProp(动量修正 v2v_2)的优点.

v1\boldsymbol{v}_1 称为一阶矩(向量),v2v_2 称为二阶矩(常量)

{v1β1v1+(1β1)wv2β2v2+(1β2)w22v=αvv2\left\{\begin{aligned} &\boldsymbol{v}_1\leftarrow \beta_1\boldsymbol{v}_1 + (1-\beta_1)\nabla w\\ &v_2\leftarrow \beta_2v_2+(1-\beta_2)||\nabla w||_2^2 \end{aligned}\right. \quad \Rightarrow \quad \boldsymbol{v} = -\alpha\frac{\boldsymbol{v}}{\sqrt{v_2}}

t=0t=0 时,算法无法启动 v2v_2 几乎为 00,所以还需进行偏置修正(修正从原点初始化的一阶矩和二阶矩的估计):

{v1=v11β1tv2=v21β2tv=αvv2\left\{\begin{aligned} &\boldsymbol{v}_1'= \frac{\boldsymbol{v}_1}{1-\beta_1^t}\\ &v_2'= \frac{v_2}{1-\beta_2^t} \end{aligned}\right. \quad \Rightarrow \quad \boldsymbol{v} = -\alpha\frac{\boldsymbol{v'}}{\sqrt{v_2'}}

image-20230216101728613

Adam算法中取beta1 = 0.9, beta2 = 0.999, learning_rate = 1e-3, 5e-4, 1e-4对于很多模型来说是一个好的起始点!

image-20230216102352560
  • Adam 在很多情况下都是不错的默认选择
  • SGD+Momentum 可以优于Adam,但是需要更多的调整
  • 如果你可以进行完整的批量更新,可以尝试使用 L-BFGS (不要忘记禁用所有噪声源)

二阶牛顿法难于计算不考.

卷积神经网络 CNN

卷积的计算

卷积核加入填充(padding),步伐(stride)后计算输出结果的大小.

image-20230216110159320

掌握例子:

image-20230216105653924 image-20230216105843862 image-20230216105949854

1x1卷积:堆叠1x1卷积层等价于对每个位置进行 全连接层。

image-20230216110110263

池化的原理

池化层: 另外一种下采样(downsmaple)方式,输出结果的大小:

image-20230216110702869

RNN的经典架构

经典架构:[Conv, ReLU, Pool] x N, flatten, [FC, ReLU] x N, FC

[Conv, ReLU, Pool]:称为一个卷积块,由卷积层,非线性函数(ReLU)和池化层组成.

flatten:将卷积的输出图像 3×H×W3\times H\times W 展平为一维向量.

[FC, ReLU]:全连接层(Full connect)与非线性函数(ReLU)构成的全连接块.

FC:最后用一个全连接层作为输出层.

image-20230216111312108 image-20230216111444429

归一化原理

批归一化(Batch Normalization)

image-20230216112234516

前面一层的输出维度为 DD,如果是图像 3×H×W3\times H\times W,则可以将 H×WH\times W 展平后视为 DDNN 表示 mini-batch的大小.

image-20230216112302840 image-20230216112527751

估计参数时依赖整个mini-batch的数据,但在测试时不能这样做! 所以在测试时需利用训练数据的平均值进行代替.

image-20230216112633117 image-20230216114155617

批归一化优点

  • 使得网络更加容易训练!
  • 允许使用更大的学习率,使网络收敛速度加快;
  • 网络对于不同初始化值更加鲁棒;
  • 归一化在训练的过程中起到正则化的作用;
  • 测试时零开销: 可以与卷积层融合!

批归一化缺点

  • 至今为止没有很好的理论上的解释;(仅能解释为减少“内部方差偏移”)
  • 训练和测试上的操作行为不一致: 这是日常代码中一种常见的bug来源!

层归一化(Layer Normalization)

image-20230216113344574

实例归一化(Instance Normalization)

image-20230216113416765

CNN 网络结构

神经网络架构:AlexNet,VGG,GoogleNet,ResNet.

掌握道理,每个神经网络解决了什么问题?通过神经网络结构判别神经网络架构.

AlexNet

227 x 227 的输入,5 个卷积层,最大池化层,3 个全联接层,ReLU 非线性激活函数.

特点

  • 多数存储开销是在位置靠前的卷积层;
  • 接近所有参数都在全联接层;
  • 大多数浮点运算计算量出现在卷积层上.

VGG

VGG-16比AlexNet大得多!VGG 设计规则:

  • 所有卷积层为 3x3 大小,stride为1,pad为1
  • 所有最大池化层为 2x2 大小,stride为2;
  • 池化层后,通道数加倍.
image-20230216114751376

GoogLeNet

GoogLeNet为了实现高效性的创新: 减少参数量,存储空间和计算量.

Stem network:在开始阶段积极地对输入进行下采样(回想在 VGG-16: 大多数计算集中在初始阶段)

Inception 模块局部单元由多个分支组成,局部结构在网络中重复出现多次,使用 1x1 “Bottleneck” 来在卷积操作前减少通道数.

image-20230216115216699

Global Average Pooling(全局均值池化层):不再在最后使用大型FC层! 改为使用 global average pooling 来进行维度压缩,并使用一个liner层计算分数.

Auxiliary Classifiers(辅助分类器):使用loss没有将网络的靠后位置训练好:网络太大了,梯度无法精准传播,使用“auxiliary classifiers” 在网络的几个中间节点来对图片分类和接收loss. 但是,使用 BatchNorm 就不需要这个技巧了.

ResNet 残差网络

Residual Networks(ResNet) 是从一个问题上发现的:更深的网络比前层网络表现差!事实上,深层网络表现的是欠拟合,因为其在训练集上的效果仍然比浅层网络差. 但是理论上深层神经网络可以通过恒等变换来模拟浅层网络,至少比浅层网络效果要好. 所以考虑加入快捷通道,直接让神经网络自动选择是否直接使用恒等变换(复制上一层的结果).

问题:更深的模型更难优化,而且实际中无法得到恒等变换(identity functions)来模拟浅层网络.

解决:改变网络结构使多余的层能够容易的利用 identity functions!

残差层(Residual Block)加入shortcut通道直接跨过卷积层. Residual network 是多个residual blocks的堆叠

image-20230216115818769

瓶颈模块(Bottleneck Block):通过 1x1 的卷积层,减少卷积计算量:

image-20230216120216016

其他特点

  • 类似 GoogleNet 使用同样的 aggressive stem来在residual block;
  • 类似 GoogLeNet, 没有大型全联接层: 而是在模型末端使用 global average pooling 和一个linear 层;

优点

  • 可以训练非常深的网络;
  • 更深的网络表现比浅层网络好 (同预期中一样);
  • 在所有 ILSVRC 和 COCO 2015 比赛获得第一名;
  • 现在还是广泛应用!
image-20230216120324917

比赛总结

  • VGG: 最多的存储和计算量
  • Inception-v4: Resnet + Inception:效果最好,利用Resnet加上Inceptio模块达到的.
  • GoogLeNet: 非常高效!
  • AlexNet: 低计算量, 高参数量.
  • ResNet: 简单设计, 比较高效,高准确率.
image-20230216120809776

年度 ImageNet在2017后不再举办,改为Kaggle.

CNN Architectures 总结

  • 早期工作 (AlexNet -> ZFNet -> VGG) 表明更大的网络效果更好
  • GoogLeNet 最开始关注于 efficiency (aggressive stem, 1x1 bottleneck convolutions, global avg pool 代替 FC layers)
  • ResNet 告诉我们如何训练超大型网络– 被 GPU 的内存所限制!
  • ResNet之后: Efficient networks 更加受重视: 我们应该如何在不增加复杂度的基础上提升准确率?
  • 很多tiny networks 聚焦于移动设备: MobileNet, ShuffleNet, etc
  • Neural Architecture Search 自动实现网络设计

网络使用建议

  • 如果非常在意精度,可以使用 ResNet-50 或者 ResNet-101
  • 如果想要一个高效网络(比如要求实时,或移动端运行) 可以尝试 MobileNets 或者 ShuffleNets.

开放性问题:根据题目条件选择网络结构.

人脸识别

Viola-Jones人脸识别算法:

  • 使用AdaBoost进行高效的特征选择
  • 矩形特征+积分图像可以用于快速图像分析
  • 快速分类产生级联分类器

灰度图像最快速已知人脸检测器

Adaboost(Adaptive Boosting)

Adaboost算法关键点:

  • 强(非线性)分类器是由所有弱(线性)分类器的组合构建的。
  • 前一个错误分类的样本将在以后的轮次中得到更多的强调。
image-20230216151554206

特征,积分图像

image-20230216152031702 image-20230216152045588

级联处理

把二个以上的设备通过某种方式连接起来,能起到扩容的效果就是级联

image-20230216152337372

语义分割

没啥想考的,理解对网络的要求

image-20230216153808894 image-20230216153831448

目标检测

image-20230216154101351

上述算法问题在于如果图中存在多个目标时,每张图片具有不同数量的输出值,难以处理.

滑动窗口

将 CNN 应用于图像的许多不同裁剪(滑动窗口裁剪结果),CNN 将每个裁剪分类为对象或背景.

提问:考虑边界框的大小为h×w,在大小为H×W的图像中有多少个可能的边界框?

位置x的可能性: W – w + ,位置y的可能性: H – h + 1,全部可能的位置: (W – w + 1) * (H – h + 1)

可能的边界总数:

h=1Hw=1W(Ww+1)(Hh+1)=H(H+1)2W(W+1)2\sum_{h=1}^H\sum_{w=1}^W(W-w+1)(H-h+1) = \frac{H(H+1)}{2}\frac{W(W+1)}{2}

遍历所有可能的区域太慢,所以需要生成候选区域:找到一小组的候选框尽可能地覆盖所有的目标对象;基于启发式:例如寻找类似斑点的图像区域;运行速度相对较快:例如在CPU上能几秒钟地选择性搜索出 2000 个候选区域.

检测评估标准

image-20230216164126309 image-20230216164203178 image-20230216164232790 image-20230216164249470

R-CNN

R-CNN(Region-based CNN)是基于区域的CNN. 分为四种:

  • “Slow” R-CNN: 每个区域独立通过CNN
  • Fast R-CNN: 将可区分裁剪应用于共享的图像特征
  • Faster R-CNN: 利用CNN来计算候选区域
  • Single-Stage:全卷积检测器

image-20230216164537272

深度学习:R-CNN,每个版本解决了什么问题(要非常清楚). 细节:计算IoU,NMS,AP,mAP原理.

Transformer

比较新,前沿知识,知道原理,问答题借鉴它的思路.


计算机视觉与模式识别(CVPR) 期末复习
https://wty-yy.github.io/posts/23744/
作者
wty
发布于
2023年2月16日
许可协议