从卷积出发,思考经典卷积神经网络Alexnet

【码上一课】该专栏于每日不定时更新,更新内容主要为人工智能与深度学习领域的论文开源源代码,欢迎大家关注订阅小编,让知识分享于你我他之间!

经典网络回顾与思考:Alexnet

图像卷积的内涵

图像卷积的本质,是提取图像不同『频段』的特征;当我们把图像跟多种卷积核作用时,能得到不同频段的信号,这也就是卷积神经网络中,卷积层的本质作用。对于图像而言,离散卷积的计算过程是模板翻转,然后在原图像上滑动模板,把对应位置上的元素相乘后加起来,得到最终的结果。

假设两个时域信号f1和f2『卷积』的结果是f3,则f3的频谱,是f1的频谱函数和f2的频谱函数,对应频率『相乘』的结果

这种频域相乘的特性可以用于快速求一些特定函数的积分,因为『卷积』的本质是积分,而很多特定函数存在傅里叶变换和反变换,所以与其直接求解积分函数,不如把他们变换到频域,直接进行频谱函数『相乘』,然后再反变换回来,就得到积分结果了。

CNN中卷积核的设计规则

1)卷积核的大小一般是奇数,这样的话它是按照中间的像素点中心对称的,所以卷积核一般都是3x3,5x5或者7x7。有中心了,也有了半径的称呼,例如5x5大小的核的半径就是2。

2)卷积核所有的元素之和一般要等于1,这是为了原始图像的能量(亮度)守恒。其实也有卷积核元素相加不为1的情况,下面就会说到。

3)如果滤波器矩阵所有元素之和大于1,那么滤波后的图像就会比原图像更亮,反之,如果小于1,那么得到的图像就会变暗。如果和为0,图像不会变黑,但也会非常暗。

4)对于滤波后的结构,可能会出现负数或者大于255的数值。对这种情况,我们将他们直接截断到0和255之间即可。对于负数,也可以取绝对值。

网络输出的计算以及卷积的变种

输入层:224*224*3; C1层:96*11*11*3 (卷积核个数/宽/高/通道)

C1后的输出尺寸是55*55*1,(224-11+3)/4+1=55

那么为何卷积核选择为11*11大小的呢?有没有其它的卷积核大小?有没有不是长方形的卷积核?有没有一些可以不改变卷积核大小的情况下有更大的感受野区域?

这里可以参考我历史文章:卷积核的十大变种以及十大操作。

Alxnet中池化的方式以及池化的变种

池化操作(Pooling)用于卷积操作之后,其作用在于特征融合和降维,其实也是一种类似卷积的操作,只是池化层的所有参数都是超参数,都是不用学习得到的。

上图是个最大池化的展示形式,那么有什么其它形式的池化方式呢?在分类任务中,在检测任务中,以及是否需要使用池化操作呢?

Alexnet的网络参数以及优化

AlexNet中60M参数: AlexNet只有8层,但是它需要学习的参数有60000000(看看这数量级)个,相比如他的层数,这是一个很可怕的数字了。那么如何减少网络学习的参数呢,以及如何压缩网络呢?这里提几个方向:

1)全连接层的替换(使用全卷积来进行替换)

2)卷积核大小的修改(类似inception)

3)通道分组卷积(类似shufflenet)

4)通道、权重剪枝(类似Channel pruing)

了解更多的知识与内容,赶紧关注小编吧:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181017G1VOE500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券