经典卷积神经网络——VGG16
从今天开始,我会在微信公众号:人工智能Corner 发布一个专题,名称叫做:经典卷积神经网络。我会更新常见的卷积神经网络,希望大家能够多多支持,多多交流。
VGG是由Simonyan 和Zisserman在文献《Very Deep Convolutional Networks for Large Scale Image Recognition》中提出卷积神经网络模型,其名称来源于作者所在的牛津大学视觉几何组(Visual Geometry Group)的缩写。
该模型参加2014年的 ImageNet图像分类与定位挑战赛,取得了优异成绩:在分类任务上排名第二,在定位任务上排名第一。
-
模型一览
上图是我从论文中截取的VGG的网络结构图,可以看出作者提出了很多种设计方案,目前使用最广泛的为D选项所示的网络结构,它由13个卷积层和3个全连接层组成,一共16层,所以被称为VGG16。
-
模型亮点
该模型的亮点表现在作者使用了2个3*3的卷积核来替代1个5*5的卷积核,用3个3*3的卷积核代表1个7*7的卷积核,为什么要这么做呢?因为使用3个3*3的卷积核能够保证和7*7的卷积核有着同样的感受野之外,还有最重要的一点是能够减少参数量,下面先讲解一下什么是感受野。
感受野从直观上看就是视觉感受区域的大小。在卷积神经网络中,感受野的定义是决定某一层输出结果中一个元素所对应的输入层的区域大小,这个很好理解,下面给出公式:
其中F(i+1)代表上一层的感受野,其他的变量上图都有解释,在这里不再赘述。
下面来看一下为什么使用3*3的卷积核能够减少参数量:
对于一个7*7的卷积核,我们假设channel为C,所需要的参数量为w=
7*7*C=49C,而使用3个3*3的卷积核,所需要的参数量为w=3*3*C+3*3*C+3*3*C=27C,这样就能解释为什么3个3*3的卷积核能够减少参数量了。
-
注意的点
在Conv层中,作者使用的stride为1,padding为1
在Pooling层中,作者使用的stride为2,kernel size为2
-
根据文章所学的知识,推导一下每个层的维度变换,这样才能彻底搞懂VGG16。
人工智能Corner 提了一个问题
计算VGG16网络的维度,把计算过程留在讨论区,让更多的小伙伴学习到吧
参与讨论
人工智能Corner交流群已经创建啦,群号:1147776174,欢迎各位进群交流,各大高校的大佬萌新都在这,就差你啦。