Advertisement

Deep Learning for Computer Vision 课程笔记

阅读量:

Deep Learning for Computer Vision 课程笔记

Lecture 1

计算机视觉(C)与机器学习(M)均归类于人工智能(A)。深度学习(D)作为机器学习的一个分支领域,在某种程度上也与计算机视觉交叉领域,并在更广泛的AI范畴内占据重要地位。

计算机视觉的发展始于20世纪60年代初期,在这一领域中,“Block World”是 Larry Roberts 的经典著作,并被视为计算机视觉领域的开篇之作。“Block World”将观察对象简化为基本几何图形,并旨在通过分析这些图形来识别其属性及相互关系。该研究方向在随后的研究中不断深化,并成为计算机视觉的重要组成部分。

另一个关键性的贡献(Brooks&Binford, 1979;Fischler & Elschlager, 1973),在那个时代背景下提出了一个关键问题:如何超越简单的块状结构并开始探索如何识别并表征物体。在那个时代缺乏数据支持的情况下,计算机运算速度较慢。

上世纪八十年代初,在样本数量有限的情况下进行物体识别是一项极具挑战性的任务。当物体识别难度较大时,则需要首先完成目标分离任务——将图像中的每个像素点根据其特征分类到有意义的区域中去。然而由于无法预判这些像素点的整体形态特征,在实际操作中我们只能尝试将属于同一主体的部分从背景区域中分离出来这一过程被称为图像分割技术。与此同时研究人员开发了一种基于图论算法的图像分割方法这一方法不仅解决了当时的难题还开创了面部检测这一领域成为计算机视觉领域的重要研究方向之一

在1999至2000年间,机器学习领域中统计机器学习方法逐渐加速发展,并衍生出一系列的方法。其中最为显著的是支持向量机模型、提升方法以及图论模型等技术的应用。值得注意的是,在这一时期有一项重要工作脱颖而出,在这项研究中研究者成功地将Adaboost算法应用于实时面部检测系统中以提高检测效率,并由Paul Viola和Michal Jones两位学者共同完成

上世纪九十年代末至二千年间的前十载间出现了一个具有重要影响力的思想方法,在目标识别领域具有重要地位的是基于特征的目标识别技术称为SIFT特征其核心在于通过匹配整个目标来实现识别。

可以观察到自20世纪60年代至80年代期间

Lifeifei启动了一个名为ImageNet的项目,并致力于收集各种图片资源以涵盖自然界万物。该计划旨在构建一个规模庞大的数据集合,并借助名为WorldNet的数据分类系统进行排序和清洗工作。为了便于后续分析和应用需求,在完成数据整理后会对每张图片进行分类标注。最终形成的这个ImageNet数据库将被划分为22000个类别化的场景和领域。自2009年项目启动以来,在这项基础上已经形成了多个国际知名的版本,并于每年举办一次叫做ImageNet大规模视觉识别竞赛(ILSVRC)的比赛活动。从最初的1 million张图像逐步发展到如今超过4千万张图片的数量级,在这一过程中卷积神经网络算法的表现得到了显著提升,在这一领域中展现了强大的技术实力

Lecture 2 Image Classification

图像分类任务在计算机视觉领域占据核心地位。一组标准化数据样本中包含不同类别如猫狗树等常见动物类别对于人类而言具有显著识别能力然而对机器学习系统而言却是一项具有挑战性的任务

语义鸿沟: images captured by computers' visual data and human subjects' comprehension of visual semantics do not align, resulting in the semantic distance between low-level and high-level retrieval requirements.

在实际识别过程中,则会面临以下五个方面的挑战:1. 光照问题;2. 形变现象;3. 物体遮挡;4. 背景 cluttering问题;5. 同类物体间的差异。\n\n算法需具备对这些方法的适应性能力。\n\n除了能够分类猫这一物种外,则应能识别世界上的其他种类动物(保持足够的类间区分度)。\n\n这则构成巨大的挑战

具有更强鲁棒性的方案

算法
  • 最近邻(Nearest Neighbor)
    该算法会将测试图像与训练集中的每一幅图像进行比较,并将其视为最相似的训练图像的标签赋予该测试图像。
    为了衡量两张图像之间的相似性,通常会计算它们之间的L1(曼哈顿)距离

d_1(I_1,I2)=\sum_p{|I^p_1-I^p_2|}

此外,还可以通过计算它们之间的L2(欧几里得)距离来进一步分析:

d_2(I_1,I2)=\sqrt{\sum_p{(I^p_1-I^p_2)^{~~2}}}

k近邻(k-Nearest Neighbors)
与传统最近邻方法不同的是,在这里我们不仅关注单个最相似的图像(pixel),而是寻找与测试图像最相似的前k个样本,并通过这些样本对测试图像进行分类。
在实际应用中我们需要解决的问题还包括如何确定最优合适的k值以及不同距离度量的选择也会影响模型性能等问题。这些关键参数统称为超参数(hyperparameter)

设置超参数:

  1. 挑选表现最优的超参数设置。
  2. 将数据划分为90%的训练集与10%的评估集。
  3. 通过评估集上的验证选取最优超参,在独立的测试集合上进行模型性能评估。
  4. 进行交叉验证:将有限的数据划分为训练集合、验证集合与独立的测试集合(而非重复迭代)。具体操作如下:
复制代码
a. 将数据随机等分成k份。
b. 选取其中一份作为当前轮次的验证集合用于评估模型性能。
c. 剩余k-1份作为新的训练集合用于模型迭代。
d. 重复上述步骤k次(每次使用不同的子作为新一次的有效样本),最终综合所有轮次的结果(如平均得分)来衡量当前模型在该问题上的优劣性。(最常用)

该算法在CIFAR-10数据集上的准确率达到近40%。然而,在实际应用中存在两方面的局限性:其一是需大量存储训练数据;其二是测试阶段计算开销较大。然而,在特殊情况下(如样本点分布较为稀疏的情况),该算法仍能取得较好的效果。这主要源于高维空间中的几何特性:通常情况下,在高维空间中两个随机向量之间的距离相差不大。

Lecture 3 Linear Classifiers

评估机制(score mechanism): 原始图像数据经过特征提取后映射至各类别分数的过程

评分函数

可以把图像视为在这一高维空间中的一个独特位置,在这种情况下整个数据集则构成由这些位置组成的集合体,在这个集合体中每一个这样的位置都附加了一个分类标记

偏差与权重的整合技巧
在分类评分模型中:
f(x_i, W, b) = Wx_i + b
分别处理权重矩阵W和偏置项b显得繁琐。
通常的方法是将它们整合进一个统一的矩阵,并在此基础上增加一个额外维度。
该额外维度被设定为常量1,默认作为偏差项参与计算。
进而简化为:
f(x_i, W) = W x_i

图像数据预处理:归一化,零均值的中心化

损失函数
  • Multiclass Support Vector Machine Loss
    在正确的分类情况下(即真实类别与预测类别一致时),其得分数值总是高于误判的情况下所对应的分数值一个固定边距\Delta
    该损失函数的形式可表示为max(0, -)函数,并通常被称作折叶损失(hinge loss)。

  • softmax 分类器模型
    在该模型中的线性变换操作Wx_i保持不变。然而,在这一操作的结果上进行处理的方式有所变化:将其视为各分类的非归一化对数值,并采用交叉熵损失替代 hinge 损失。softmax 分类器的作用即在于最小化预测概率分布与真实分布之间的 cross-entropy 散度。这种机制使得 softmax 分类器能够为每个类别赋予相应的生成可能性。

Lecture 4 Optimization

最优性Optimization旨在寻找使损失函数值达到最小的参数W的方法论。

通过max运算,在损失函数中有一些不可导的点;这些不可导点导致损失函数无法求导;然而,在这种情况下,次梯度仍然存在并被广泛采用。

最优化技巧

一种拙劣的初步方案:随机采样过程。在构建权重矩阵W的过程中发现,在该轮次中部分元素具有较低损失度(即误差较小),而其余部分则表现出较高的误差水平(即损失度较大),最终从该轮次随机采样过程中筛选出表现最佳的权重矩阵W作为候选模型。

核心逻辑:逐步改进。 我们采用的方法是从随机赋值开始,在反复优化后选取最优解,并最终实现了更低的损失目标。

随机局部搜索算法 从任意选定的初始点W_0出发,在每一步迭代中引入一个小幅的扰动\Delta W。算法仅在当前点处的损失值较初始点更低时才进行更新。

遵循梯度:通过计算得出最好的方向。
这个方向就是通过数学方法计算出最陡峭的方向。
该方向即为损失函数的梯度(gradient)。
在输入空间中,在各维度上的斜率构成一个向量(亦称导数derivatives)。

梯度计算

基于有限差分法计算梯度,在每一个维度上依次遍历并引入一个极小的增量h。通过观察对应的函数值变化量来推导该维度的偏导数值。

沿着梯度负方向进行参数更新:以计算新的参数W_new为目标,在参数更新过程中应沿梯度df的反方向进行调整;因为我们的目标是最小化损失函数值。

**步长的作用:**梯度表明函数在某个方向上的变化幅度最大。然而,在这个方向上前进的具体距离并未被指定;而这个距离即为步长(亦称学习率)。

梯度下降

小批量数据梯度下降(Mini-batch gradient descent)
在大规模的应用场景中,训练数据的数量通常达到百万级别。如果按照整个训练集进行计算,则会导致仅更新一个参数时的计算资源消耗过高。常用的做法是通过分批处理的方式来减少计算负担。
在小批量数据处理策略中存在一种特殊情况:当每个批次仅包含单个样本时,则被称为随机梯度下降(Stochastic Gradient Descent 简称SGD)

Lecture 5 Neural Networks

激活函数

在这里插入图片描述

历史上,使用最多的是Sigmoid,但Sigmoid有三个问题:

第一个问题,在机器学习中如果神经元饱和会导致梯度消失,在机器学习中被称作vanishing gradients问题。
第二个问题是Sigmoid函数无法使输出zero-centered。
第三个问题是exp函数用于消耗大量计算资源。

采用relu激活函数时,请注意谨慎选择learning_rate参数的值。
试探性地尝试其他类型的激活函数可能会遇到问题。
避免使用sigmoid函数可能会带来更好的模型性能。

Lecture 6 Backpropagation

函数关于每个变量的导数指明了整个表达式对于该变量的敏感程度。

在深度学习中常见的函数导数部分如下所示:
f(x,y) = xy 达成的结果是 \frac{\partial f}{\partial x} = y\frac{\partial f}{\partial y} = x
f(x,y) = x + y 则导致 \frac{\partial f}{\partial x} = 1\frac{\partial f}{\partial y} = 1
f(x,y) = max(x + y) 的求导结果则为 \frac{\�ial f}{∂x} = 1~(x ≥ y)\frac{∂f}{∂y} = 1~(x ≤ y)

请记住一个关键点:我们需要确保计算出的变量梯度向量与原始变量向量在维度和规模上保持一致。对于实际应用中的模型验证和完整性检验具有重要意义。完成梯度计算后,在模型训练过程中定期评估各层参数的梯度模长,并根据这一指标进行优化操作以确保模型性能的一致性和稳定性。每个梯度元素反映了该参数对最终输出结果的影响程度。

Lecture 7 Convolutional Networks

一般由卷积层、池化层、全连接层组成。

在这里插入图片描述

参数共享: 在卷积层中使用参数共享是用来控制参数的数量

1x1卷积
扩张卷积

归一化层
全连接层

全连接层中的神经元会对前一层的所有激活数据进行全局连接,在常规神经网络架构中这一特性同样适用。其激活值可通过矩阵乘法计算得出,并加入偏置值以增强模型表现。

Lecture 8 CNN Architectures

在这里插入图片描述

VGG, google et, ResNet都广泛使用,ResNet当前最佳。

Lecture 9 Hardware and Software

中央处理器(CPU)负责计算机的各种任务与操作活动。而图形处理器(GPU)则专注于与视觉相关的数据运算。尽管处于闲置状态的中央处理器(CPUs)也能承担一些辅助任务但整体效能较低。

在这里插入图片描述

Lecture 10&11 Training Neural Networks

数据预处理 Data Preprocessing

中心化(零均值化)是最常见的预处理方式

  • 减去图像平均值
  • 减去每个通道的平均值
权值初始化 Weight Initialization

Xavier Initialization 常用

训练过程监控 Babysitting the Learning Process
超参数优化 Hyperparameter Optimization
  • 学习速率初始化
  • 学习速率衰变常数
  • 正则化强度

Lecture 12 Recurrent Neural Networks

普通神经网络仅限于分别处理单个输入,并且前后两个输入之间没有关联关系。然而,在某些特定领域如自然语言处理(NLP)中,则需要能够更好地管理序列信息之间的关联性

传统的神经网络仅在相邻层之间通过加权连接。

相对于传统神经网络而言,RNN的独特之处在于其各层之间的神经元同样通过加权连接。

典型的递归神经网络模型具有以下主要特点:

  1. 每个输入单元仅通过自身路径与其对应的神经元建立权重连接。
  2. 权重矩阵在各时间步保持一致。
    循环神经网络的训练方法:BPTT

Lecture 13 Attention

在进行文本caption时使用RNN模型其缺点在于图像数据仅在初始阶段被利用有限。首先它能够捕获序列数据中的 temporal dependencies从而提升 caption 的质量然而由于其递归结构可能会导致计算复杂度较高影响其效率。此外RNN模型对初始输入较为敏感容易受到噪声干扰影响捕捉到的重要特征因此在实际应用中存在一定的局限性。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Lecture 14 Visualizing and Understanding

浅层特征主要表现为具体的细节特征(如边、角、色块等),而高层特征则更加抽象化和概括化。在神经网络中,全连接层的作用是将输入图像经过处理后转化为统一维度的一维向量表示,并与各个类别标签进行对比分析。若仅进行像素级别的最近领域分类操作,则由于缺乏高层次的表征能力而导致分类精度较低;但通过将图像编码后再进行分类,则能显著提高准确性。适合用主成分分析(PCA)进行可视化的是模型训练过程中最后几层的重要特征提取环节;而深度学习领域中更高级别的可视化方法则是采用t-SNE技术来实现对复杂数据分布关系的表现;此外,在研究神经网络工作机理时,观察非线性激活函数输出的变化情况也是有重要价值的途径。

DeepDream : 试图放大网络中某个层的神经元激活来扩大现存特征。

Lecture 15 Object Detection

1.经过一系列深入研究与技术优化后发现, 目前广泛采用区域建议框方法(R-CNN系列)已成为图像目标检测领域的主流方案, 其代表模型包括RCNN、SPP-Net、Fast-RCNN及其改进版本Faster-RCNN, 同时还有基于微软亚洲研究院提出的R-FCN架构也属于该类方法范畴。
2.在不依赖于区域建议框方法的前提下, 近年来发展迅速的YOLO算法和SSD算法成为图像检测领域的重要替代方案。

Lecture 16 Detection+Segmentation

Semantic Segmentation主要任务是将每个像素(pixel)做分类

Lecture 17 3D Vision

Lecture 18 Videos

Video = 2D + Time

Video Classification

3D CNN 3D Conv
2D Conv和3D Conv的区别:

在这里插入图片描述
Dataset

Sports-1M

Lecture 19&20 Generative Models

监督学习与无监督学习区别:

在这里插入图片描述

Generative Model包括Discriminative Model,Generative Model。

Lecture 21 Reinforcement Learning

强化学习:学习如何采取行动使回报最大化。

马尔可夫决策过程(Markov Decision Processes,MDPs)

马尔可夫决策过程(MDP)是一种智能体通过执行特定动作进而转换自身状态并从环境中获取奖励,在与环境交互的过程中形成一个连续的过程。

Lecture 22 Course Recap Open Problems in Computer Vision

ImageNet 1000个类别,1431167张图像。

在这里插入图片描述
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~