博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算机视觉与卷积神经网络
阅读量:4187 次
发布时间:2019-05-26

本文共 2098 字,大约阅读时间需要 6 分钟。

2017年第一篇博文,为自己加油!!!

人工神经网络到卷积神经网络

如下图所示一个典型的人工神经网络:

这里写图片描述

关于更多的人工神经网络请参考:

人工神经网络同样能应用到计算机视觉中,但是对于一副图像来说,假如其大小为227*227*3,即使对其做采样到32*32*3其输入的维度依然很高。如果用人工神经网络来对图片进行分类的话,它将面临这主要的两个问题:

  1. w参数的量级将会非常大,会消耗大量的计算资源
  2. 将会引起过拟合

怎样解决上述的问题呢,答案也就是我们的卷积神经网络了。

卷积神经网络概述

卷积神经网络的层次结构

这里写图片描述

来源:七月在线

从上图中可以看到,其主要的层次结构有几下的几种:

1. 数据输入层/ Input layer

2. 卷积计算层/ CONV layer
3. ReLU激励层 / ReLU layer
4. 池化层 / Pooling layer,也成为下采样层
5. 全连接层 / FC layer
6. Batch Normalization层(可能有)

下面对其进行介绍。

数据输入层(INPUT layer)

常见的数据输入层的操作分为:

1. 去均值

把输入数据各个维度都中心化到0

2. 归一化

幅度归一化到同样的范围

3.PCA/白化

用PCA降维
白化是对数据每个特征轴上的幅度归一化

在对图像进行处理的时候只用做去均值操作即可,因为R,G,B三个通道的数值都是在(0,255)之间的数,不必做归一化处理。

如下图所示的不同方式的处理效果:

这里写图片描述

这里写图片描述

卷积层(CONV layer)

其实卷积层做的工作非常的简单,熟悉图像处理的同学应该知道卷积就是用一个模板作用于一副图像上,然后模板边滑动边与图像进行点乘的操作.

关于卷积的更多操作可以参考:

卷积层做的工作就是用许多的卷积模板,卷积层中的神经元对图像做卷积的操作。如下图所示:

这里写图片描述

上图中的蓝色圈圈表明的是一个个神经元,也就是参与卷积的核。

深度就是神经元的个数。
步长就是卷积核在图像上滑动的大小。

注意为什么需要填充值呢?

  1. 如果不对图像进行填充,则图像会变小,信息会减少
  2. 是卷积核能够从左边滑到最右边

计算的过程如下图所示(卷积过程):

这里写图片描述

因为加入了卷积的机制,其具有如下特性:

1. 参数共享机制

假设每个神经元连接数据窗的权重是固定的,即我们可以看到,一个神经元的权重W是不变的,其和图像进行卷积。

2. 固定每个神经元连接权重,可以看做模板

每个神经元只关注一个特性

3. 需要估算的权重个数减少

这个很容易理解,如果没有卷积的话,那么每一个像素都会有一个权重,而加入卷积,则大大减少了权重的个数。如AlexNet 1亿 => 3.5w

激励层(ReLU)

将卷积层输出的结果做非线性的映射。如下图所示一些常用的激励函数:

这里写图片描述

其中,人工神经网络中重用sigmoid函数,而卷积神经网络常用的是ReLU

这里说一下sigmoid的缺点。

从sigmoid函数的图像中可以看到,如果x稍微大点的话,其值接近为1,则在进行反向传播算法的过程中对其求导的导师非常的接近0,因此会导致梯度为0的梯度消失的现象。

同时在图中可以看到ReLU训练的非常快,因此要小心的使用。

池化层(Pooling layer)

池化层是夹在连续的卷积层之间的层次,其主要的工作是用来对数据进行下采样,从而压缩数据和参数哦的量,减少过拟合。

池化层常用的两种方法为:

1. Max pooling
2. average pooling

其类似于卷积的操作,如下图所示:

这里写图片描述

因此其可以实现压缩数据和减少过拟合的问题。

全连接层(FC layer)

即人工神经网络中的层级结构,两层之间所有的神经元都有权重的连接,通常全连接层在卷积神经网络的尾部。

卷积神经网络的训练算法

其同人工神经网络类似,定义Loss Function,表达其输出与输入的损失,然后最小化该损失。其用SGD(随机梯度下降)更新w,b的值,用BP算法进行误差的反向传递。

可以参考:

正则化与Dropout

如何防止过拟合问题是机器学习中的一个重要的问题。正则化,其实就是损失函数加上一个惩罚项,其具有L1,L2等正则项。

关于更多可以参考:

Dropout

dropout即随机失活正则化,如下图所示:

这里写图片描述

a图中为标准的神经网络结构,b图中应用了dropout,可以看到,在应用过后会有一部分神经元失活了,没有与其他的神经相连,因此可以有效的减少过拟合现象,注意这里的失活为随机失活,即下次,这个失活的神经元可能又会被重新的开启。

如下图所示对dropout防止过拟合的理解:

这里写图片描述

这里写图片描述
来源:七月在线

卷积神经网络的优缺点

优点:

1.因为有了卷积层,达到了共享的卷积核,对高维的数据处理无压力

2.不需要手动的选择特征,训练完成后,即可得到特征,这一点也是深度学习流行的原因
3.深层次的网络对于图像来说,表达效果好,因为图像的信息过于丰富

缺点:

1.需要调参,需要大量的样本,计算量大

2.其物理的含义不明确,即你不能很好的说明为什么要这么做,这也是不同于一些理论性很强的算法如SVM的原因。

你可能感兴趣的文章
JAVA编写HTTP代码并发布在网上
查看>>
JDBC连接数据库的原理和步骤
查看>>
开发微信公众平台的基本功能
查看>>
JSP内置对象的学习
查看>>
用java写文件输入输出流,实现复制粘贴的方法
查看>>
学习JSP的方法步骤(参考)
查看>>
JSP中常见TOMCAT错误代码原因
查看>>
MyEclipse中WEB项目加载mysql驱动方法
查看>>
常见编写JAVA报错总结
查看>>
org.gjt.mm.mysql.Driver和com.mysql.jdbc.Driver的区别
查看>>
UTF-8和GBK有什么区别
查看>>
增加MyEclipse分配内存的方法
查看>>
头痛与早餐
查看>>
[转]在ASP.NET 2.0中操作数据::创建一个数据访问层
查看>>
Linux命令之chmod详解
查看>>
【java小程序实战】小程序注销功能实现
查看>>
leetcode Unique Paths II
查看>>
几个大数据的问题
查看>>
CareerCup Pots of gold game:看谁拿的钱多
查看>>
CarreerCup Sort Height
查看>>