VGG16全卷积网络 以VGG代码为例

文章目录

  • 全卷积网络 以VGG代码为例
    • 发展历史
    • VGG
      • 全卷积VGG16的结构:
      • 卷积层代替全连接
    • 1X1的卷积的作用

全卷积网络 以VGG代码为例

发展历史

VGG16全卷积网络 以VGG代码为例_第1张图片

VGG

VGG之所以经典,是因为VGG第一次将深度学习做得非常“深”,达到了16-19层。同时,它用了非常“小”的卷积核(3X3)。
VGG与AlexNet差不多,不同之处就在于网络层数变深了。

下图VGG对原始VGG16做了一点变化,把后面三层FC层改为了conv层。可以将其称之为全卷积VGG16。

VGG16全卷积网络 以VGG代码为例_第2张图片

全卷积VGG16的结构:

全卷积网络:没有全连接,都是卷积操作

1、一张原始图片被resize到(224,224,3)。
2、conv1两次[3,3]卷积网络,输出的特征层为64,输出为(224,224,64),再2X2最大池化,输出net为(112,112,64)。
3、conv2两次[3,3]卷积网络,输出的特征层为128,输出net为(112,112,128),再2X2最大池化,输出net为(56,56,128)。
4、conv3三次[3,3]卷积网络,输出的特征层为256,输出net为(56,56,256),再2X2最大池化,输出net为(28,28,256)。
5、conv3三次[3,3]卷积网络,输出的特征层为256,输出net为(28,28,512),再2X2最大池化,输出net为(14,14,512)。
6、conv3三次[3,3]卷积网络,输出的特征层为256,输出net为(14,14,512),再2X2最大池化,输出net为(7,7,512)。
7、利用卷积的方式模拟全连接层,效果等同,输出net为(1,1,4096)。共进行两次。
8、利用卷积的方式模拟全连接层,效果等同,输出net为(1,1,1000)。
最后输出的就是每个类的预测。


卷积层代替全连接

卷积层和全连接层的区别:

  1. 卷积层为局部连接;
  2. 而全连接层则使用图像的全局信息。

Q:为什么能用卷积的方式模拟全连接?

发散思维,将局部最大化不就得到全局了吗?这首先说明了用卷积层来替代全连接层的可行性

A:卷积层和全连接层都是进行了一个点乘操作,它们的函数形式相同。因此全连接层可以转化为对应的卷积层。我们只需要把卷积核变成跟输入的一个feature map大小(h,w)一样就可以了,这样的话就相当于使得卷积跟全连接层的参数一样多。

比如VGG16中, 第一个全连接层的输入是77512, 输出是4096。这可以用一个卷积核大小 7x7, 步长(stride)为1, 没有填补(padding),输出通道数4096的卷积层等效表示,其输出为 1x1x4096,和全连接层等价。后续的全连接层可以用1x1卷积等效替代。

简而言之, 全连接层转化为卷积层的规则是:将卷积核大小设置为输入的空间大小。

好处:卷积支持多维,全连接只能是接收一维,使用卷积(接收任意维度)就不需要进行 Flatten() 操作。提升效率。

Q:既然全连接好,为什么不用卷积代替全连接呢?

  1. 这是因为全连接代表分类器,卷积不能代表分类器。一般情况下,说分类器,都指的全连接。
  2. 第二点是因为不同硬件做卷积和全连接的效率是不同的。

1X1的卷积的作用

实现特征通道的升维和降维

通过控制卷积核的数量达到通道数大小的放缩。而池化层只能改变高度和宽度,无法改变通道数。

你可能感兴趣的:(AI之旅,深度学习,神经网络)