深度学习之四:卷积神经网络基础

计算机视觉在深度学习的帮助下取得了令人惊叹的进展,其中发挥重要作用的是卷积神经网络。本节总结了卷积神经的原理与实现方法。

1 卷积神经网络

1.1 计算机视觉与深度学习

计算机视觉要解决的问题是如何让机器理解现实世界的现象。目前主要处理的问题如图像分类,目标检测,风格变换等。

对于小型图片,如MNIST的图片处理,图像大小为64*64,使用全连接神经网络还可以处理。如果图像较大,如1000*1000*3时,单个输入层就需要3M的节点,全连接情况下,单层的权重就可能多达数十亿的待训练参数。这将导致神经网络无法进行有效训练。因此业界提出卷积神经网络解决参数过多的问题。

先看一个卷积神经网络的结构,在卷积神经网络中包括三种类型的层:卷积层,池化层和全连接层。下面几节介绍卷积神经网络的基本概念。
此处输入图片的描述

1.2 过滤器

在卷积神经网络中,过滤器也称为卷积核,通常是3*3或5*5的小型矩阵(先忽略每个点可能有多个通道)。过滤器的作用是和输入图像的各个区域逐次进行卷积。

所谓卷积运算是计算两个矩阵的对应元素(Element-wise)乘积的和。卷积本质是两个向量的内积,体现了两个向量的距离。

下图展示了过滤器在输入图像上的卷积计算的过程:
输入图像与过滤器的卷积计算过程

因此过滤器可以捕获图像中与之类似模式的图像区域。例如下图展示了一个过滤器的数值矩阵与图形。
此处输入图片的描述

当使用这个过滤器在图像上移动并计算卷积时,不同的区域会有不同的卷积结果。
此处输入图片的描述

在类似于的模式下过滤器与图像区域的卷积会产生较大的值。
此处输入图片的描述
不相似的区域则产生较小的值。
此处输入图片的描述

此外在一层上捕获的模式可以组合为更复杂的模式并输入到下一层,从而使得下一层能识别更复杂的图像模式。

训练CNN在一定意义上是在训练每个卷积层的过滤器,让其组合对特定的模式有高的激活,以达到CNN网络的分类/检测等目的。

1.3 Padding

对于一个shape为 [n,n] [ n , n ] 的图像,若过滤器的 shape为 [f,f] [ f , f ] ,在卷积时每次移动1步,则生成的矩阵shape为 [nf+1,nf+1] [ n − f + 1 , n − f + 1 ] 。这样如果经过多层的卷积后,输出会越来越小。另一方面图像边界的点的特征不能被过滤器充分捕获。

通过对原始图像四个边界进行padding,解决上面提到的两个问题。术语Same填充,会保证输出矩阵与输入矩阵大小相同,因此其需要对输入图像边界填充 f12 f − 1 2 个象素。另一个术语Valid填充表示不填充。

通过下图体会Padding对输出的影响
此处输入图片的描述

下面的代码展示了使用0填充,向X边界填充pad个像素的方法

def zero_pad(X, pad):
    X_pad = np.pad(X, ((0, 0), (pad, pad), (pad, pad), (0, 0)), 'constant', constant_values=0)

    return X_pad

1.4 卷积步长

另一个影响输出大小的因素是卷积步长(Stride)。
对于一个shape为 [n,n] [ n , n ] 的图像,若过滤器的 shape为 [f,f] [ f , f ] ,卷积步长为s,边界填充p个象素,则生成的矩阵shape为 [n+2pfs+1,n+2pfs+1] [ n + 2 p − f s + 1 , n + 2 p − f s + 1 ]

1.5 卷积层记法说明

对于第 l l 层的卷积层, n c [ l ] 为该层的卷积核数,其输入矩阵的维度为

[n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值