赞
踩
通过设计不同的filter(kernel),让它去跟图片做卷积,就可以识别出图片中的某些特征,如检测边界。
CNN,即卷积神经网络,主要就是通过一个个的filter,不断提取特征,从局部的特征到总体的特征,从而进行图像识别等等功能。
padding填白,因为图像在filter卷积之后会变小,从而可以通过提前补一圈空白的方法使卷积后图像大小不变,我们把上面这种“让卷积之后的大小不变”的padding方式,称为 “Same”方式, 把不经过任何填白的,称为 “Valid”方式。这个是我们在使用一些框架的时候,需要设置的超参数。
stride步长,前面我们所介绍的卷积,都是默认步长是1,但实际上,我们可以设置步长为其他的值。
pooling池化,pooling,是为了提取一定区域的主要特征,并减少参数数量,防止模型过拟合。 比如下面的MaxPooling,采用了一个2×2的窗口,并取stride=2:
对多通道图片的卷积:
当输入图片是三维时,如(8,8,3),这个时候,我们的filter的维度就要变成(3,3,3)了,它的 最后一维要跟输入的channel维度一致。 这个时候的卷积,是三个channel的所有元素对应相乘后求和因此,输出的维度并不会变化。还是(6,6)。
但是,一般情况下,我们会 使用多了filters同时卷积,比如,如果我们同时使用4个filter的话,那么 输出的维度则会变为(6,6,4)。
我特地画了下面这个图,来展示上面的过程:
用我们前面学过的神经网络的符号来看待CNN的话,
一个CNN有三种层组成:
1.卷积层:由滤波器filters和激活函数构成。 一般要设置的超参数包括filters的数量、大小、步长,以及padding是“valid”还是“same”。当然,还包括选择什么激活函数。
2.池化层:这里里面没有参数需要我们学习,因为这里里面的参数都是我们设置好了,要么是Maxpooling,要么是Averagepooling。 需要指定的超参数,包括是Max还是average,窗口大小以及步长。 通常,我们使用的比较多的是Maxpooling,而且一般取大小为(2,2)步长为2的filter,这样,经过pooling之后,输入的长宽都会缩小2倍,channels不变。
3.全连接层:就是我们之前学的神经网络中的那种最普通的层,就是一排神经元。因为这一层是每一个单元都和前一层的每一个单元相连接,所以称之为“全连接”。 这里要指定的超参数,无非就是神经元的数量,以及激活函数。
卷积神经网络的优点:
1.参数共享机制:有几个单元就几个参数。
2.连接的稀疏性:由卷积的操作可知,输出图像中的任何一个单元,只跟输入图像的一部分有关系。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。