大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)

深度学习 - 卷积神经网络

  • 图片分析步骤
  • 视觉词袋法流程 (Bag-of-Visual-Word)
  • 深度学习 (Deep Learning)
    • 神经网络知识背景
    • 其他名词
      • 损失函数(loss function)
      • 激活函数
      • 多层感知
      • 全连接层 (Fully Connected Layer)
    • 挑战
      • 网络结构设计
      • 学习算法
    • 为什么选择卷积神经网络?
    • 深度学习模型 (Deep Learning Model)
      • 卷积神经网络
      • 卷积层 (Convolution Layer)
      • 池化层 (Pooling Layer)
      • 典型架构
      • SGD训练过程
      • 超参数 (Hyperparameter)
        • 如何调试?
        • 学习率 (learning rate)
        • Dropout 正则化
      • 其他操作
        • 数据扩充 (Data Augmentation)
        • 使用预训练模型 (pre-trained CNNs model)
      • 一些数据集
      • 缺陷
      • 应用

图片分析步骤

  1. 收集原始数据 (collect raw image): 在其他流程开始之前,数据应该先被收集。可以从多个源头收集代表性图像或者视频 (representative images or videos)。这意味着我们将处理非结构化数据。
    公有API和网页爬虫都可以用于收集数据。
  2. 表示图片 (representing image): 传统表示是手动选择的特征,全局特征 (如强度,颜色,纹理,形状和结构等)。新的表示方法是 SIFT, HOG等方式来表示图片,其对角度,比例,明度等都是具有不变性。而最新的表示方式则是深度学习图片中包含的特征来表示。

视觉词袋法流程 (Bag-of-Visual-Word)

大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第1张图片

深度学习 (Deep Learning)

是神经网络的一个现代变体。其改进了多层感知器网络 (Multilayer perception network, MLP)。具有最佳的图像处理能力,其拥有更好的性能,准确性和对输入图像失真 (distrotions in the input images) 具有一定程度的不变性 (invariance)。

神经网络知识背景

神经元(neuron):
在这里插入图片描述
输入变量 (receives inputs) 累加:
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第2张图片
输入链接是带权重的 (incoming links are weighted):
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第3张图片
处理输入 (激活函数 activation function):
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第4张图片
创建输出:
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第5张图片
输出被传到其他的神经元中:
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第6张图片
神经元以层级的形式进行组织:
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第7张图片
学习算法(learning algorirthm) 更新链接上的权重:
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第8张图片

其他名词

损失函数(loss function)

损失函数衡量分类器的优良程度。给定一个带有N个样本的数据集:
在这里插入图片描述
其中,xi 代表了一张图片,yi代表该图片的标签 (整数)。则整个数据集的损失(loss over the dataset)是:
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第9张图片

激活函数

大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第10张图片

  • 建议使用ReLU,然后要注意学习率 (learning rate)
  • 试用 Leaky ReLU/ Maxout/ ELU
  • 试用 tanh,但不要有太高的期待。
  • 不要使用sigmoid

多层感知

大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第11张图片
两层神经网络 (2-layer Neural Net) 或者 一个隐藏层神经网络 (1-hidden-layer Neural Net)
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第12张图片
三层神经网络 (3-layer Neural Net) 或者 两个隐藏层神经网络 (2-hidden-layer Neural Net)。

全连接层 (Fully Connected Layer)

如将 32 x 32 x 3 的图像伸展为 3072 x 1,然后输入到MLP中。
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第13张图片

挑战

网络结构设计

  • 我们要怎么组织神经元?
  • 我们要选用什么激活函数?
  • 需要多少层数,每一层有多少神经元?

学习算法

  • 我们要怎么更新权重?
  • 如何高效地更新权重?

为什么选择卷积神经网络?

  • 全连接神经网络中,每张图片的可训练参数(trainable parameters)太多了。
    大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第14张图片
  • 全连接神经网络对图像变形 image distortion(如位移 shift,缩放 scale)等敏感。
    大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第15张图片
  • 神经网络忽略了输入数据的拓扑结构 (topology of the input data)
    大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第16张图片

深度学习模型 (Deep Learning Model)

卷积神经网络CNN是一种前馈网络 (feed-forward network),可以从图像中提取拓扑属性(topological properties)。像几乎所有其他神经网络一样,它也使用反向传播算法 (back-propagation algorithm) 进行训练。
卷积神经网络旨在通过使用最少的预处理 (minimal preprocessing) 直接从像素图像中识别视觉模式 (visual patterns)。他们可以识别具有极大可变性 (extreme variability) 的模式 (例如手写字符)。

卷积神经网络

受视觉系统启发的特殊多阶段架构 (multi-stage architecture)。更高阶段计算更多的全局 (global) 和不变 (invariant) 的特征。
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第17张图片

卷积层 (Convolution Layer)

大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第18张图片
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第19张图片
假设我们有六个 5 x 5 的过滤器。
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第20张图片
我们会将他们叠起来并拥有一张 28 x 28 x 6 的 “新图片”。

ConvNet就是一系列卷积层!
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第21张图片

池化层 (Pooling Layer)

使图像表示更加小并易于管理。
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第22张图片
最大池化(Max Pooling),在池化窗口里面寻找最大值,该值作为该窗口的代表值。
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第23张图片

典型架构

M 个 (N 个(卷积层 + RELU) + 池化层) + K 个 (全连接RELU层),SOFTMAX

N 一般是 ~5。
M 可以很大。
K 可以在 0~2 之间。

SGD训练过程

循环:

  • 采样一批数据 (a batch of data)。
  • 从图中前向传播 (Forward Prop) 并计算损失。
  • 反向传播 (Backprop) 来计算梯度。
  • 使用梯度来更新参数值。

直到模型收敛。

潜在问题:

  • 沿浅维度方向 (shallow dimension) 进展非常缓慢,沿陡峭方向 (steep direction) 抖动(jitter)。
  • 卡在梯度为零的局部最小值或鞍点处 (saddle point)。
  • 迷你批次 (minibatches) 的噪声梯度

超参数 (Hyperparameter)

  • 网络架构
  • 学习速率,延迟时间,更新类型
  • 正则化(L2 / Dropout 强度)

如何调试?

在验证集中进行调参。
在这里插入图片描述
交叉验证方法:
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第24张图片
随机搜索和网格搜索
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第25张图片

学习率 (learning rate)

大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第26张图片

Dropout 正则化

在每个前向传播中,将一些神经元随机设置为零,Dropout的概率是一个超参数。通常可以选择0.5。(可以防止过拟合)
大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第27张图片

其他操作

数据扩充 (Data Augmentation)

从现有样本创建新样本

  • 对原图进行翻转 (flip),平移 (translation),旋转 (rotation),拉伸 (stretching),剪切 (shearing),镜头变形 (lens distortion),裁剪 (crops),比例 (scale)。
  • 随机化对比度和亮度。
  • 结合这些操作并生成新样本。
    大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第28张图片

使用预训练模型 (pre-trained CNNs model)

  • 直接使用预训练的CNN模型。(可以得到全连接层的结果,也可以是卷积层的结果)
  • 微调 (fine-tune) 预训练的CNN模型。合并新识别任务图像中的额外信息,并使预训练的CNN来适应该新任务。
    大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第29张图片
  • 基于CNN特征的BoVW模型 (Deep SIFT)
    大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第30张图片

一些数据集

  • ImageNet: 根据WordNet层次结构组织的图像数据库(当前仅名词),每个节点由500多个图像描绘。
  • COCO (Common Object in Context) Dataset:COCO是大规模的对象检测,分割数据集。
  • PASCAL Visual Object Classes:这是很著名的用于对象检测和分割的数据集。其中超过11k的图像组成了训练和验证数据集,而10k的图像专用于测试数据集。

缺陷

  • 从内存和容量的角度来看,CNN不会比常规的两层网络大很多。
  • 卷积运算在计算上很昂贵,并且占用约67%的时间。CNN比全连接的NN (相同大小) 慢大约3倍。
  • 较小的内核大小 (small kernel size) 使内部循环效率底下。
  • 缓存不友好的内存访问。反向传播需要对输入图像和内核进行按行和按列访问。
  • 2-D图像以逐行序列化 (row-wise-serialized) 的顺序表示。
  • 按列访问 (column-wise access) 数据可能导致较高的内存高速缓存未命中率 (high rate of memory cache misses)。

应用

  1. 物体检测 (Object Detection)
    大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第31张图片
  2. 面部识别
    大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第32张图片
  3. 姿势估计 (Pose Estimation)
    大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第33张图片
  4. 图像分割 (Image Segmentation)
    大数据分析和计算机视觉笔记 (8) - 卷积神经网络图像分析(Convolution Neural Network Image Analytic)_第34张图片

你可能感兴趣的:(cv笔记,大数据,计算机视觉,神经网络,机器学习,深度学习,卷积神经网络)