重要属性:局部连接、权值共享、平移不变性
局部连接:每个神经元不再和上一层的所有神经元相连,而只和一小部分神经元相连,从而可显著降低网络参数量。
权值共享:不同位置处的神经元共享同一组权重(滤波器),可进一步降低网络参数量
平移不变性:滤波器可捕获与图像空间位置无关的区域特征
三种基础组件
• 卷积层(Convolutional Layer)
• 激活层 (Activation Layer)
• 池化层 ( Pooling Layer )
一 卷积层
(1)卷积运算
![](https://i-blog.csdnimg.cn/blog_migrate/7480f4659a485a84c5c16c720f2c56c7.png)
继续做同样的元素乘法,然后加起来,直到遍历了整个矩阵
![](https://i-blog.csdnimg.cn/blog_migrate/257b6a247eeb46d5e310ee74fc25dbea.png)
当输入图像为三通道时,卷积操作如下
![](https://i-blog.csdnimg.cn/blog_migrate/51981bcf65be33101e72769573136b1d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7f24f1fcb85575057375f6fbc3ca8813.png)
推广到n channel
![](https://i-blog.csdnimg.cn/blog_migrate/1230f4c97365e50862bc60bc53fc2c27.png)
输入的通道数是多少,filter的通道数就为多少,对应的通道 分别做卷积,得到的结果再相加。则得到了一个通道数为1的结果。
推广到 N Input Channels and M Output Channels
![](https://i-blog.csdnimg.cn/blog_migrate/7d1314f32328f09c8eb7dd62bed39697.png)
用多个filter分别进行卷积,把卷积结果cat到一起得到最终 结果
(2)padding
➢ 填充是构建卷积层的一个基本操作
➢ 在空间维度上,对卷积层输入的四周各填充 𝑝 个像素
first:
![](https://i-blog.csdnimg.cn/blog_migrate/7275f0251e98ce2bb4f765ea5da80f5b.png)
second:一般情况?
![](https://i-blog.csdnimg.cn/blog_migrate/f31272171e238eb3173a01088ba6444b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9042578fb53833c3bf829c624ceaf43d.png)
third:当满足下述关系时,卷积的输出在空间维度上与输入保持一致
![](https://i-blog.csdnimg.cn/blog_migrate/75caad66a8c57eefd35eea68842b8548.png)
(3)stride(步幅)
作用:成倍地缩小卷积输出的空间尺寸,且缩小倍数等于Stride的值
![](https://i-blog.csdnimg.cn/blog_migrate/2106a46fd0bb07fa3d1791e22f4d9cb8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9128d7f50ad1dc33fcc8cd7572a6c12d.png)
如图所示,stride=2,每次把kernel平移两格
(4)如何在pytorch中实现?
![](https://i-blog.csdnimg.cn/blog_migrate/6d30aa72ec0483a3bd37b94e738b98cd.png)
(5)一个计算题
![](https://i-blog.csdnimg.cn/blog_migrate/46b6f33d3f594a4eace589ef93177018.png)
![](https://i-blog.csdnimg.cn/blog_migrate/00dc7dcc0281d39456081e4e1a97da1b.png)
(6)卷积层小结
![](https://i-blog.csdnimg.cn/blog_migrate/99c4e7ab97f65d9ee0051f5ad7b5875e.png)
(7)补充:1x1的卷积
What is 1x1 convolution?
![](https://i-blog.csdnimg.cn/blog_migrate/477d64b74bc867f6c3d4b7454ce0ed1f.png)
Why is 1x1 convolution?
![](https://i-blog.csdnimg.cn/blog_migrate/f76fabac6c38ad9bcebc2b0eea44ce9b.png)
可以看出,先使用1x1的卷积显著减少了计算量
1 × 1卷积通常用于特征降维,即在通道数方向上进行压缩
是减少网络计算量和参数的重要方式
二 池化层
使用某一位置的相邻区域的总体统计特性来代替网络在该位置的输出, 在保留有用信息的同时,减少特征图的空间大小增大网络的感受野,且进一步减少后续层的参数。
(1)最大池化(Max Pooling)
![](https://i-blog.csdnimg.cn/blog_migrate/ce2ce452088423ea4680bd055abfbf72.png)
(2)平均池化(Average Pooling)
![](https://i-blog.csdnimg.cn/blog_migrate/180827500abe0687a8ab7939a82d74c0.png)
(3)池化层小结
![](https://i-blog.csdnimg.cn/blog_migrate/0774e8983a37050d587651d38c1956f0.png)
三 激活层
![](https://i-blog.csdnimg.cn/blog_migrate/549bdb0d9b94c4ee5b77514e8c33054f.png)
四、感受野
神经网络中的感受野,指网络中神经元对原输入图像的感受范围大小
卷积层数越深,相应神经元的感受野越大
![](https://i-blog.csdnimg.cn/blog_migrate/61f4962165deeedba5f7d334c85b0f52.png)
池化层:在不增加网络参数的情况下,增大网络感受野
![](https://i-blog.csdnimg.cn/blog_migrate/00749ceb2423553935fece6f76d8452b.png)
神经元感受野越大,表明其能看到的原始图像范围越大,也意味着更能捕获到更全局、语义层次更高的特征;反正,则表示所捕获的特征越趋向于局部和细节。
全连接层的感受野?
![](https://i-blog.csdnimg.cn/blog_migrate/8b4ac7e99043782d276d5c43f8be5051.png)
五、CNN Backbones
(1)VGG
对于VGG16 来讲他的网络结构是下面这样的:
![](https://i-blog.csdnimg.cn/blog_migrate/19281d4517239f89ef7f5c6fe488f6b0.png)
VGG采用连续多个3×3的卷积核代替AlexNet中的较大卷积核:
--使用3个3×3卷积核来代替7×7卷积核
--使用2个3×3卷积核来代替5×5卷积核
➢ 优点:在保证具有相同感知野的条件下,减小网络参数量,增大网络深度,提升神经网络性能
(2)GoogLeNet
Inception模块
➢同时使用多个大小不同的卷积核 (即1 × 1、3 × 3、5 × 5),且将得到的特征在通道维度上拼接(Concatenation)作为最终输出
➢ 采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合
➢采用1×1卷积进行降维 (Stride=1, Padding=0)
![](https://i-blog.csdnimg.cn/blog_migrate/8fe16340159e1d1890f38521d28dcaca.png)
》》如何在pytorch中实现?
![](https://i-blog.csdnimg.cn/blog_migrate/2fa3809c75d9d2658e002d20caa59842.png)
![](https://i-blog.csdnimg.cn/blog_migrate/361da10eed237af680b505f2c2ea0ae6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/28bdd6c5d06af0363160237c82a6fc8f.png)
GoogLeNet的网络结构
➢ 由多个Inception模块堆叠而成
➢ 没有全连接层
![](https://i-blog.csdnimg.cn/blog_migrate/63870af159cf54698d35f91ec7557733.png)
(3)ResNet
残差单元 : 给卷积层增加跳连(Skip Connetction),以提升信息的传播效率,使网络更容易优化
![](https://i-blog.csdnimg.cn/blog_migrate/74beffcb86e7a519c2ab0acb786fc28c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2f7d6066a31b8d1cd95ed494d1d8db3d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4c25906fbd9098ed4e9994ffc05026bb.png)
》》如何在pytorch中实现?
![](https://i-blog.csdnimg.cn/blog_migrate/72d4791d3c7a4733bf9cfdf2084fcdcc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/834888b2dd245b0bb7803241607077fa.png)