vggnet学习笔记

VGG有五层卷积层、三层全连接层、sofrmax输出层构成,层与层之间有个最大池化层,所有隐藏层的激活单元都采用Relu函数
vggnet学习笔记_第1张图片

这是简化后的vggnet-16格式:
vggnet学习笔记_第2张图片

处理过程

  1. 输入224 *224 *3的图片,经64个3 * 3的卷积核两次卷积+Relu函数,尺寸变为224 * 224 * 64,做max pooling(最大池化),池化单位尺寸为2 * 2,池化后的尺寸变为112 * 112 * 64
  2. 经128个3 * 3的卷积核做两次卷积+Relu,尺寸变为112 * 112 * 128,做max pooling(单位尺寸为2 *2),尺寸变为56 * 56 * 125
  3. 经256个3 * 3的卷积核做三次卷积+Relu,尺寸变为56 * 56 * 256,做max pooling(2 * 2)池化,尺寸变为28 * 28 *256
  4. 经512个3 * 3的卷积核做三次卷积,尺寸变为28 * 28 *512,最大池化后,尺寸变为14 * 14 * 512
  5. 经512个3 * 3的卷积核做三次卷积,尺寸变为28 * 28 *512,最大池化后,尺寸变为7 * 7 * 512
  6. 经两层1 * 1 * 4096,一层1 *1 * 1000全连接之后,通过softmax输出预测结果

VGGNet的特点:

使用感受野很小的卷积核(步长为1):3 * 3,对每个像素进行卷积,两个3 *3的卷积核相当于一个5 * 5的卷积核的效果,使用小卷积可以增加非线性修正,而不是单一的,使决策函数更具有判别性,而且也减少了参数的数量;

训练

1.通过使用具有动量的小批量梯度下降,优化多项式逻辑回归目标函数来进行训练。批量大小设为256,动量为0.9。训练通过权重衰减进行正则化,前两个全连接层执行丢弃正则化(丢弃率设定为0.5)。学习率初始设定为0.01,然后当验证集准确率停止改善时,减少10倍。学习率总共降低3次,学习在37万次迭代后停止(74个epochs)。尽管vgg的网络参数更多,网络的深度更大,但网络需要更小的epoch就可以收敛,这是由于(a)由更大的深度和更小的卷积滤波器尺寸引起的隐式正则化,(b)某些层的预初始化。

图片大小的训练

  • 第一种是修正对应单尺度训练的S,评估了以两个固定尺度训练的模型:S(training scale)=256和S=384。给定ConvNet配置,我们首先使用S=256来训练网络。为了加速S=384网络的训练,用S=256预训练的权重来进行初始化,我们使用较小的初始学习率0.001;
  • 第二种方法是多尺度训练,其中每个训练图像通过从一定范围[Smin,Smax](Smin=256,Smax=512)随机采样S来单独进行归一化。由于图像中的目标可能具有不同的大小,这也可以看作是通过尺度抖动进行训练集增强,其中单个模型被训练在一定尺度范围内识别对象。为了速度的原因,通过对具有相同配置的单尺度模型的所有层进行微调,训练了多尺度模型,并用固定的S=384进行预训练.

测试

  • 首先,将其等轴地归一化到预定义的最小图像边,表示为Q(测试尺度,Q不一定等于训练尺度S),然后,全连接层首先被转换成卷积层(第一FC层转换到7×7卷积层,最后两个FC层转换到1×1卷积层)。将所得到的全卷积网络应用于整个(未裁剪)图像上。结果是类得分图的通道数等于类别的数量,以及取决于输入图像大小的可变空间分辨率。最后,为了获得图像的类别分数的固定大小的向量,类得分图在空间上平均(和池化)。我们还通过水平翻转图像来增强测试集;将原始图像和翻转图像的soft-max类后验进行平均,以获得图像的最终分数。
    vggnet学习笔记_第3张图片
  • 使用三种评估方法(单尺度、多尺度、多裁剪图像评估)对模型性能进行测试,由于没跑代码,就不多说了叭。

总结

vggnet是一个非常深的卷积神经网络,最多有19层,用于大规模的图像分类,深度有利于分类精度,并且深度大大增加的传统ConvNet架构可以实现ImageNet挑战数据集上的最佳性能。而且在各种各样的任务和数据集上,vggnet都可以匹敌或超越更复杂的识别流程,这也说明了深度在视觉表示中的重要性。

你可能感兴趣的:(vggnet)