参考论文:Very Deep Convolutional Networks for Large-Scale Image Recognition
论文中提供的6种网络配置:
整个网络有5个vgg-block块和5个maxpool层逐个相连,然后进入FC层,直到最后1000个softmax输出。多种VGG网络设计都很统一,都有相同的224×224×3的input层+5个maxpool层+3层fc全连接层,区别在于中间的Vgg-block块的设计不同。
以上图D列的vgg16为例:
224×224×3 三通道(RGB)的图像;
输入224×224×3,经过64个filter(kernelsize=(3,3,3)),stride = 1,padding=same后,得224×224×64;
输入224×224×64,经过pool size=2,stride=2后,得112×112×64;
输入112×112×64,经128个filter(kernelsize=(3,3,64)),得到112×112×128;
输入112×112×128,经pool size = 2,stride = 2后,得56×56×128;
输入56×56×128,经过256个filter(kernelsize=(3,3,128))后,得56×56×256;
输入56×56×256,经pool size = 2,stride = 2后,得28×28×256;
输入28×28×256,经过512个filter(kernelsize=(3,3,256))后,得28×28×512;
输入28×28×512,经pool size = 2,stride = 2后,得14×14×512;
输入14×14×256,经过512个filter(kernelsize=(3,3,512))后,得14×14×512;
输入14×14×512,经pool size = 2,stride = 2后,得7×7×512,展平(Flattern)得25088个参数;
输入(25088,),经过4096个神经元,得(4096,);
输入(4096,),经过4096个神经元,得(4096,);
输入(4096,),经过1000个神经元,得(1000,)。
其中前两层全连接层在使用relu后还使用了Dropout(rate=0.5)对神经元随机失活,最后一层全连接层用softmax输出1000个分类。
论文提出,通过堆叠2个 3*3 的卷积核来代替 5*5 的卷积核;堆叠3个 3*3 的卷积核来代替 7*7 的卷积核。虽然用了小的卷积核来替换大的卷积核,但并不会影响感受野,即感受野是相同的,但减少了参数。