VGG网络
研究背景
ILSVRC-2014
比赛- 基于
AlexNet
、ZFNet
、OverFeat
的相关研究开展
相关研究
-
AlexNet
:ILSVRC-2012
分类冠军,里程碑的CNN模型(借鉴卷积模型结构) -
ZFNet
:ILSVRC-2013
分类冠军,对AlexNet
的参数改进(借鉴其采用小卷积核思想)CONV1
:将(11x11 stride 4)
改成(7x7 stride 2)
CONV3、4、5
将卷积核(384,384,256)
改成(512,1024,512)
-
OverFeat
:ILSVRC-2013
定位冠军,集分类、定位和检测于一体的卷积网络方法(借鉴全卷积,实现高效的稠密(Dense)
预测)
全卷积替换全连接层
全连接层对参数的计算要求高,当输出的数字不对就无法进行全连接计算。针对这个问题,采用卷积去替换全连接层,这样能够有效的避免这个问题。同时这个方法也叫做Dense
(稠密)预测
通过上图其实就是可以看出:替换成卷积能够有效的避免当输入图片尺寸与设计的不一样时,无法进行全连接卷积计算。同时增强1x1
能够有效的增强网络非线性能力。 -
NIN:(尝试
1x1
卷积)1x1
能够有效的增强网络非线性能力
研究成果
1.ILSVRC-2014
定位冠军、分类亚军
2.开源了VGG16
、VGG19
研究意义
开启小卷积核,深度卷积模型时代
研究成果
VGG结构
VGG
的结构比较简单,且计算也比较容易。有5
个maxpool
,每经过一个maxpool
之后,特征图通道数翻倍至512
其中VGG之所以从11开始设计,可能参考了参考了这篇文献Goodfellow, I. J., Bulatov, Y., Ibarz, J., Arnoud, S., and Shet, V. Multi-digit number recognition from street view imagery using deep convolutional neural networks. In Proc. ICLR, 2014.
这篇文献就是从11层开始设计的。
演变过程
- A:
11
层卷积 - A-LRN:基于A增加一个
LRN
- B:第
1、2
个block
中增加1个卷积3x3
卷积 - C:第
3、4、5
个block
分别增加1个1x1
卷积,表明增加非线性有益于指标提升 - D:第
3、4、5
个block
的1x1
卷积替换成3x3
- E:第
3、4、5
个block
再分别增加1个3x3
卷积
VGG特点
堆叠3x3卷积核
- 能增大感受野
通过上图可以发现,2个3x3
堆叠等价于1个5x5
- 增加非线性激活函数,能够增加特征抽线能力
- 减少训练参数
一个7x7卷积核所需要的参数量:7x7xCxC=49^2
三个3x3卷积核所需要的参数量:3x(3x3xCxC)=27^2
- 可看出7x7卷积核的正则化,强迫7x7分解为3x3
尝试1x1卷积
- 借鉴
NIN
,引入利用1x1
卷积 - 增加非线性激活函数,提升模型效果
训练技巧
数据增强
- 方法一:针对位置
训练阶段:
-
按比例缩放图片至最小边为S
关于S设置方法:
1.固定值:固定为256
,或384
2.随机值:每个batch
的S在[256,512]
,实现尺度扰动
-
随机位置裁剪处
224x224
-
随机进行水平翻转
- 方法二:针对颜色
修改RGB
通道的像素值,实现颜色扰动
预训练模型初始化
深度神经网络对初始化敏感
1.深度加深,用浅层网络初始化。即:B、C、D、E
用A
模型初始化
2.Multi-scale
训练时,用小尺度初始化
S=384
时,用S=256
模型初始化S=[256,512]
时,用S=384
模型初始化
上述模型初始化也可以不用,直接使用Xavier
测试技巧
测试图片缩放
图片等比例缩放至最短边为Q
设置三个Q
,对图片进行预测,去平均值
-
方法一 当S为固定值时:
Q = [S-32,S,S+32]
-
方法二 当S为随机值时:
Q = [S_min,0.5 x (S_min + S_max),S_max]
稠密测试(Demse test)
将FC
层转换为卷积操作,变为全卷积网络,实现任意尺度图片输入
- 经过全卷积网络得到
NxNx1000
特征图 - 在通道维度上求和
(sum pool)
计算平均值,得到1x1000
输出向量
假设以AlexNet
为例,经过前面的conv
和max pooling
最后输出为7x7x512
。如果是FC
层,这里需要将展开为特征向量,然后与后面进行全连接。但是替换成7x7
卷积核之后,只需要4096
个就可以实现了。
Multi-Crop测试
借鉴AlexNet
与GooleLeNet
,对图片进行Multi-crop
,裁剪大小为224x224
,水平翻转。1
张图,缩放至3
种尺寸,然后每种尺寸裁剪出50
张图片,最后就有150
张图片。
注:裁剪的时候,假设256
,那么(256-224)/4=8
。即每个8
裁剪一次,这样就会有5x5
张图片,然后水平翻转后有50
张,然后3
种尺寸,最后就有150
张
多尺度测试技巧
首先将图片缩放至三种尺寸,Q1、Q2、Q3
方法1:Dense
:全卷积,sum pool
,得到1x1000
方法2:Muti-crop
:多个位置裁剪224x224
方法3:Muti-crop & Dense
:综合取平均
实验结构及分析
single scale evaluation
S
为固定值,Q = S
;S
随机值时:Q = 0.5(S_min + S_max)
结论:
- 误差随着深度的增加而降低,当网络层数达到19层时,误差饱和
- 增加
x1
有助于性能提升 - 训练时加入尺度扰动,有助于性能提升
5x5
替换3x3
,对性能也有提升
multi scale evaluation
-
方法一 当S为固定值时:
Q = [S-32,S,S+32]
-
方法二 当S为随机值时:
Q = [S_min,0.5 x (S_min + S_max),S_max]
结论:测试时采用多尺度扰动,有助于性能提升
multi crop evaluation
方法:等步长的滑动窗口,在尺度为Q的图上裁剪5x5
张图片,然后再进行水平翻转。然后有3
种Q
值。一张图片得到150
张图片输入到模型中。
结论:multi-crop
比dense
效果好。二者可形成互补(multi-crop未能很好的捕捉图片的边界信息,dense能够很好的捕捉边界信息)
convnet fusion
方法:多模型融合
采用最优的两个模型D、E
,结合multi-crop
和dense
,得到最优结果