CNN速度复习

传统BP处理图像时的问题:
1、权值太多,计算量太大
2、权值太多,需要大量样本进行训练
例如一张图是640X480,那么就有30万个像素,然后假设是RGB三通道,那就要90万个输入神经元
所以,CNN应运而生

CNN是如何减少计算量呢?从两个方面入手(卷积并不能减小计算量)
一是局部感受野,就是对区域按5X5的方式进行划分,每25个像素与一个神经元相连,如此像把神经元的数量缩少为1/25,然后每一个神经元连着图片的25个像素,所以就有25个权值,这就引申出第二个技术——权值共享,每个神经元连出的25个权值是对应相等的,A神经元与其控制的左上角像素权值与B神经元与其控制的左上角像素权值对应相等,这就把权值直接降到可两位数

卷积的运算并不难,一般是取3X3,5X5,7X7的核对图片进行运算,我们不用人为对核进行过多考虑,因为在训练时模型会自行调整权值,与基本的BP是一样的(只是每次到卷积层都会有局部感受野&卷积,并用权值共享连接卷积层神经元)

使用越大的步长进行卷积,得到的卷积层输出的图片会越小

上面提到卷积核又叫滤波器,因为对同一张图,会用不同的卷积核提取不同的特征,因此常会用不同的核对同一图像进行卷积以提取不同的特征

卷积层后接池化层,通常是2X2步长为2的窗口(就是缩小为原图1/4),得到的图也叫特征图(feature map)。池化功能:进一步特征提取,平移不变性

这就引出了padding,对边缘的讨论

padding,既可以用于卷积,也可用于池化,核的孔径及中心是可以控制的,same会视情况补0,之所以说视情况,例如把核中心定在左上角,孔径3*3,则左边与上边肯定不用在边外补0,下边与右边可能要(何时不要?如果刚好可以分配完就不用)

例如下图步为2且长宽为偶数时,也不会补0

下面是完整的卷积神经网络结构:输入层32X32,用5X5卷积后变成了28X28,图中6@28X28是指用了6种不同的卷积核得到了6张特征图,第二个卷积层10X10不难理解,但为什么会生出16张特征图呢?
http://scs.ryerson.ca/~aharley/vis/conv/flat.html或http://scs.ryerson.ca/~aharley/vis/conv/可以查看16个特征图的生成
其实没有为什么,都是人为设计的,这几个图的像素连到同一个神经元
注意在6->16的时候每个卷积图对下面6个池化层中的若干图求卷积时权值是不共享的,权值共享只是对同一张图而言

见下图以第二个卷积层最右边的一个特征图而言,他有75个权值,因为每个图有5X5的窗口就有25个权值

最上方三个层(包括输出层)都是全连接

特别说明:在现在比较新的CNN中第二个卷积层都是采用最左边的这个图的卷积方式(就是要对全部上一池化层特征图卷积!

PS:imagenet训练集

猜你喜欢

转载自blog.csdn.net/cj1064789374/article/details/88203475
CNN