ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

VGG论文学习心得

2022-01-26 15:01:36  阅读:208  来源: 互联网

标签:VGG 训练 卷积 论文 学习心得 池化 512 256 连接


一、网络结构

基本概念

如果输入的是一个RGB图像,那么就会有3个通道。“channel”通常被用来描述“layer”的结构。相似的,“kernel”是被用来描述“filter”的结构。

来自 <深度学习中的各种卷积_滤波器>

输入是一个5x5x3的矩阵,有三个通道。filter是一个3x3x3的矩阵。首先,filter中的每个卷积核分别应用于输入层中的三个通道。执行三次卷积,产生3个3x3的通道。

然后,这三个通道相加(矩阵加法),得到一个3x3x1的单通道。这个通道就是在输入层(5x5x3矩阵)应用filter(3x3x3矩阵)的结果。

卷积神经网络大小固定在224*224RGB大小,并对其进行预处理:average(图像像素数据-RGB值),将图片放在卷积神经网络(3*3)里面进行计算,池化是2*2 步长为2,卷积的步长为1

加了两个全连接层 都有4096个神经元 第三个全连接层 输出层有1000个神经元(因为有1000个分类) 最后一个层是soft-max层:把输出转化为概率

每一层用的激活函数是reLU激活函数

LRN:局部响应归一化 此论文认为LRN对模型的优化不会有什么提升 只会增加内存和计算时间,所以没有用到LRN技术

16 weight layers:表示有16层

VGG D\E网络用的比较多 VGG16 VGG19

这些网络用到的全连接层都是一样的 最后soft max输出

中间加了五个最大池化(maxpool)

网络层次比较多 那么他用到的卷积层比较多

Cov3-256:3表示卷积是3*3的窗口 cov1:1表示卷积是1*1的窗口

以D为例    输入都是224*224 用到了两个卷积层cov3-64(64表示生成64个特征图)

做了两个卷积 再做个池化(长宽都变成了原来的二分之一) 在做两个卷积(特征图变成128)

在做一次池化 在做三次卷积…… 特征图的数量越来越多 最后一次池化之后 再加三个全连接层 就有最后的输出结果了

包含权值的层才算层:卷积层和全连接层

这里总共十六个有权值的层 所以是16

最后一个×的是特征图的数量 图里表示的为厚度 越厚代表特征图数量越多

下面那个表为权值图

E为144表示有144millions的权值要训练

本论文提出来的跟googlenet的相似之处都是使用了很深层次的卷积网络 有很多层 googlenet有22层 卷积有3*3 1*1 5*5的卷积 与VGG16的结构有些不一样
 

二、训练参数

Batch大小256

动量:0.9 与权值调整有关系

正则化:用的是L2正则化 正则化系数5*10的-4次方

前两个全连接层使用到了dropout  dropout的参数设置为0.5

学习率的初始值为10的-2次方 会一边训练一边减少 当准确率不再提高时 学习率会减小1/10 总体学习过程中 学习率一共减少了三次 总共进行了37万次训练(74个周期:意思是所有的训练集训练了74次)

预训练方式:

先训练A(11层) 比较容易训练 参数随机初始化 正态分布的随机初始化 均值为0 方差为10的-2次方 偏值初始化为0

训练更深层次的网络时 他们使用的是A训练好的卷积层的参数 作为更深层次网络的卷积层全连接层的 初始化

其中没有经过训练的全连接层 是随机初始化 所有层的学习率都是一样的 允许在学习过程中变化

由于深层次网络不好收敛 所以这么处理

但是提交论文之后发现 其实可以不用这个方法

多尺度训练方式:用多种不同分辨率的图像来做训练(分辨率区间:256-512)目的是为了让模型能识别不同分辨率的图像

 测试的时候 由于神经元个数还有全连接层的结构固定 经过多层池化不同分辨率的图最后到全连接层的结果不一样 那么全连接层没有办法链接 所以用到了池化(平均池化或者求和池化)

平均池化:

例如到全连接层是7*7*512 那么相当于是求49个值的平均值 最后得到512个平均值
到全连接层是14*14*512 那么相当于是求14*14个值的平均值 最后得到512个平均值 只要特征值是一样的 最后结构可以固定下来 最后加全连接层就没有问题

三、训练结果

1、评估是固定的 多尺度训练

Top-1:给一个结果

Top-5:给五个结果 五个结果中有一个结果是对的就算正确 所以结果比top-1低

从结果上看 网络层数越多 错误率会越低

这里的384 256都是指固定尺度的训练  后面的384 256是测试的时候图像的尺度的大小

【256;512】是指多尺度训练 可以看到错误率会更低一些

图片分辨率越高 图片错误率也会越低

2、多尺度评估

训练时多尺度或单个 评估时也会变分辨率 结果求平均值

用多尺度评估之后 错误率更低

3、多个剪切窗口

大图片 随机裁剪其中的一个区域 再放到模型里去做预测

测一张图片的时候 会把它变成三个尺寸 每个尺寸裁剪出50个224*244的窗口  每个尺寸会得到50个结果 对结果做平均

dense:表示不裁剪 直接放进去

Multi-crop:裁剪 用了之后效果更好一些

最好的是两个一起用

4、模型的集成

最后一行的集成方法 用了multi-crop dense效果最好

5、如果只能使用一个网络 那么VGG19是冠军(第二行) 但是允许集成网络 所以googlenet集成七个网络的效果最好 获胜(第五行黑体)

四、结论

网络深度越多 层次越多 效果越好

标签:VGG,训练,卷积,论文,学习心得,池化,512,256,连接
来源: https://blog.csdn.net/qq_39421203/article/details/122702142

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有