DL学习笔记-VGGNet论文阅读

VGGNet论文中全部使用了3*3的卷积核和2*2的池化核,通过不断的加深网络结构来提升性能。
一、图像预处理

像素归一化,从每个像素值减去训练集上计算的平均RGB值。

二、网络结构

引入了几个1*1的卷积核,1*1卷积的意义在于线性变换(随后就是非线性),而输入通道数和输出通道数不变,没有发生降维。

VGGNet有五段卷积,每一段内有2-3个卷积核,同时每段卷积后面接一个最大池化层。作者使用3*3的卷积核来代替大的卷积核。两个3*3的卷积层叠加相当于一个5*5的卷积层,即一个像素会跟周围5*5的像素产生关联,感受野大小为5*5。而3个3*3的卷积层叠加的效果相当于1个7*7的卷积层。

而且3个叠加的3*3的卷积层比一个7*7的卷积层的参数量更小,只有后者的(3*3*3)/(7*7)=55%。更重要的是,3个3*3的卷积层拥有比1个7*7的卷积层更多的非线性变换(前者可以使用三次ReLU激活函数,而后者只有一次),使得CNN对特征的学习能力更强。
作者再次提到了1*1卷积核,增加了非线性而不改变卷积层的感受野。虽然1*1卷积在本质上是对同一维度空间的线性投影,但是为整体引入了一个额外的非线性。
三、训练

VGGNet在训练时有一个小技巧,先训练级别A的简单网络,然后用A网络的权值来初始化前四个卷积层和最后三个全连接层,这样训练收敛的速度更快。It is worth noting that after the paper submission we found that it is possible to initialise the weights without pre-training  by using the random initialisation procedure of Glorot & Bengio (2010). 作者最后强调了一下这种初始化的方式,我理解的是就是我们现在经常用的初始化的方法,truncated_normal,截断的正太分布。

在训练中,VGGNet 还使用了muliti-Scale的方法做数据增强,每次迭代时进行一次crop,同时还对图像做了随机翻转和随机RGB值偏移。
作者使用了两种方法进行Multi-Scale。我们假设S是原始图像的最短边,虽然我们需要的尺寸是固定的224*224,但是S可以不是224。当S=224的时候,我们可以获得图像上的全部信息,当S>224的时候,我们可以获得一部分图像信息。

第一种是固定S的大小为256和384,然后随机裁剪224*224的图片,为了加速,先用S=256训练,然后使用训练后的结果来初始化使用S=384时的权值。第二种是S在[256, 512]之间取值,这样图像中的物体就有了不同的大小,可以看做是通过缩放抖动来增加训练集,模型有更好的效果。

对于测试时,作者同样采取了Multi-Scale的方法,将图像缩放到Q,(Q的的大小不等于S,对每个S都使用不同的Q可以提高性能),水平翻转,然后将不同尺寸的Q的结果平均得到最后结果,这样可以提高图片数据的利用率并提升准确率。作者将整个图像输入卷积网络计算,在测试时不需要进行随机剪裁。

作者同样的使用了GPU来加速训练,他把每批训练的图像分成几个GPU批次在各自的GPU上训练,然后计算平均梯度。

四、评估

作者在对比各级网络是总结了几个观点:

1、LRN层作用不大
2、越深的网络效果越好,
3、1*1 的卷积也是有效果的,C比B好,但是没有3*3的卷积效果更明显,
4、通过小的3*3卷积累加,比单一使用5*5 或7*7的效果更好,
5、训练时图像经过抖动缩放的效果比固定尺寸的效果要好。
6、使用Multi-crop 比直接输入图片效果要好,但是他们组合的效果更好,所以要使用抖动的方法,这样既有完整的图像,又有裁剪过的图像。

五、标注框
在论文的最后,作者讲了一下VGG在物体标记方面的应用。最后一个全连接层的输出不是分类分数,而且标注框的位置,用一个4-D vector表示,[中心坐标x, y, W, H]。

训练: 使用的网络结构和分类VGG差不多,主要的区别是损失函数使用了欧氏距离损失代替了逻辑回归,修正的是预测边框的参数与实际情况的偏差。训练时使用了分类训练时的参数,只进行了微调。最后一层全连接随机初始化并从头开始训练。


测试:两种测试方法。第一种是比较不同网络在验证集上的修正,并且只考虑对基础的真实分类(我的理解是可以直观看出来的物体,不考虑遮挡)的边框预测。边框是通过在图像的中心剪裁获得。(The bounding box is obtained by applying the network only to the central crop of the image.)这一点翻译不顺,理解的不清楚

第二种方法是在整个图像上直接预测,就像分类任务,最后一个全连接层的输出是标注框的预测。采用了greedy merging procedure来获得最后的预测结果。首先将空间上接近的预测(通过平均坐标)进行合并,然后根据从卷积网络分类获得的类别分数对它们进行评分。当使用多个标注卷积网络,首先采用它们的边框预测集合的联合,然后在联合上运行合并程序。
在测试时,先用第一种方法确定最佳的标注位置,然后使用第二种方法对它进行评估。如果边框预测值和真实边框的交错不超过0.5,就是正确的。

作者测试了使用PCR的效果比使用SCR的效果好,对所有的层进行微调比仅微调全连接的效果好。

最后作者使用了最佳的方法(PCR,对所有层进行微调),然后应用fully-fledged scenario,使用最好的分类结果对边框预测进行评分,然后合并多个密集计算的边框预测值,得到最终输出。
六、将训练结果应用到其他数据集

移除最后一个全连接层(输出层),并使用倒数第二个全连接层的输出作为图像特征。得到的图像描述符是L2归一化的,可以与线性SVM分类器结合使用。

首先对图像进行重新缩放让它的最短边等于Q,然后将图片直接输入网络中(所有的权值都视为卷积),然后我们对产生的特征映射进行全局平均,产生4096-D的图像描述符,然后将图像描述符和水平翻转图像的描述符进行平均(对图像进行翻转是有用的)。

作者发现,进行多尺度的图像放缩提取,然后计算平均值,和通过卷积核的堆叠的效果类似,(不管是缩放然后裁剪,还是卷积核的堆叠,都是获得不同的特征,特定的边界特征),都能够提高效果。在缩放时使用更大的范围比小范围好[256,384,512,640,768]>[256,384,512]。
这篇论文比较长,作者介绍的比较详细,所以读起来有点吃力,等把几个经典网络的论文看完,还是要回头再看一下。

猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/80681693
今日推荐