题目: VERY DEEP CONVOLUTIONAL NETWORKS
FOR LARGE-SCALE IMAGE RECOGNITION
题目译: 大规模图像识别的的深度卷积神经网络
作者: Karen Simonyan∗ & Andrew Zisserman+Visual Geometry Group, Department of Engineering Science, University of Oxford
研究背景:
ILSVRC-2014挑战赛,并在AlexNet、ZFNet、OverFeat、NIN(Network in Network)的研究基础上进行创新发展了VGG
研究成果:
ILSVRC定位冠军,分类亚军,开源VGG16,VGG19
研究意义:
开启小卷积核,3*3卷积核成为主流模型;深度卷积模型时代,作为各类图像任务的骨干网络结构:分类、定位、检测、分割一系列图像任务大都有VGG为骨干网络的尝试
学习目标
摘要核心
1、本文主题:在大规模图像识别任务中,探究卷积网络深度对分类准确率的影响
2、主要工作:研究3*3卷积核增加网络模型深度的卷积网络的识别性能,同时将模型加深到16-19层
3、本文成绩:VGG在ILSVRC-2014获得了定位任务冠军和分类任务亚军
4、泛化能力:VGG不仅在ILSVRC获得好成绩,在别的数据集中表现依旧优异
5、开源贡献:开源两个最优模型,以加速计算机视觉中深度特征表示的进一步研究
网络结构(模型演变(VGG11至VGG19演变过程)
演变过程:
A:11层卷积
A-LRN:基于A增加一个LRN
B:第1,2个block中层架1个卷积3*3卷积
C:第3,4,5个block分别增加1个1*1卷积,表明增加非线性有益于指标提升
D:第3,4,5个block的1*1卷积替换为3*3
E:第3,4,5个block再分别增加1个3*3卷积
参数计算
VGG 特点:
2个3*3 堆叠的感受野等价于1个5*5
3个 3*3 堆叠的感受野等价于1个7*7
尝试1*1卷积,借鉴NIN,引入利用1*1卷积,增加非线性激活函数,提升模型效果
那么怎么来理解2个3*3堆叠的感受野与1个5*5相同?
如下图所示:对于1个5*5的特征图,如果用一个5*5的卷积核与之卷积就会得到一个1*1的特征图;若用两个3*3卷积核也可得到1个1*1的特征图,即第一个3*3与5*5的特征图卷积会得到一个3*3的特征图,该特征图再与另一个3*3的卷积核卷积就也会得到一个1*1的特征图。它们最后都得到了一个1*1的特征图,并且卷积核是对每个像素值都进行了卷积提取,并没有漏掉一个像素,虽然处理的过程不一样,卷积的结果不一样,但2个3*3卷积核也跟1个5*5卷积核一样看到了最初的那个5*5特征图的全貌,所以说他们的感受野等价。
堆叠3*3卷积核的好处:
1、增加非线性激活函数,增加特征抽象表达能力
利用2个3*3卷积代替1个5*5卷积,使用了2个非线性激活函数,3个3*3卷积代替1个7*7卷积使用了3个非线性激活函数,还加入了1*1卷积。这增加了非线性表达能力,有助于模型的训练。
2、减少训练参数
假设现在有3个3*3卷积层,每层都有c个通道,那么它的参数总量为:3*(3*3*c)*c=27c^2。而1个7*7卷积层,c个通道,就会产生7*7*c*c=49c^2个参数。参数减少比:(49-27)/49约等于44%
1*1卷积
最初应用 1x1 卷积核的神经网络是 Network In Network。使用1x1卷积核的主要好处:
1、增加网络的深度,使用多个1x1卷积核,在保持feature map 尺寸不变(即不损失分辨率)的前提下,可以大幅增加非线性表达能力,把网络做得很deep。
2、进行卷积核通道数的降维和升维。
3、实现跨通道的交互和信息整合。
总结就是:1x1 卷积核的好处是不改变感受野的情况下,进行升维和降维,同时也加深了网络的深度。
训练技巧:(尺度扰动和预训练模型)
数据增强:方法一:针对位置/或尺寸
训练阶段:1、按比例缩放图片至最小边为S(S为resize 后最小边) 2、随机位置裁剪出224*224区域 3、随机水平翻转
方法二:针对颜色
修改RGB通道的像素值,实现颜色扰动
S设置方法:
1、固定值:固定为256或384
2、随机值:每个batch的S在【256,512】,实现尺度扰动
预训练模型初始化
深度神经网络对初始化敏感 1、深度加深时,用浅层网络初始化B,C,D,E用A模型初始化 2、Multi-scale训练时,用小尺度初始化S=384时,用S=256模型初始化;S=【256,512】时,用S=384模型初始化。
测试技巧:多尺度(Multi crop)测试和稠密 (Dense) 测试
多尺度测试(Multi crop test): 图片等比例缩放至最短边为Q,设置3个Q,对图片进行预测取平均
方法1 当S为固定值时:Q=【S-32,S,S+32】
方法2 当S为随机值时: Q=(S_min,0.5*(S_min+S_max),S_max)
借鉴AlexNet与GoogLeNet,对图片进行Multi-crop,裁剪大小为224*224,并水平翻转图片,缩放至3种尺寸,然后每种尺寸裁剪出50张图片;50=5*5*2
1、移动的步长为x/4,即(Q−224)/4,所以Q的取值减去224以后,一定可以被4整除;
2、5*5=25,裁剪原图片得到的这25张图片;
3、25*2=50,经过翻转得到50张图片;
4、50*3=150,因为Q有3种尺寸取值;
稠密测试(Dense test):将FC层转换为卷积操作,变为全卷积网络,实现任意尺寸图片输入
1、经过全卷积网络得到N*N*1000特征图
2、在通道维度上求和(sum pool)计算平均值,得到1*1000输入向量
测试技巧总结:
Step1:等比例缩放图像至三种尺寸:Q1, Q2, Q3
Step2:方法1 Dense:全卷积,sum pool,得到1*1000
方法2 Multi-crop:多个位置裁剪224*224区域
方法3 Multi-crop & Dense:综合取平均
实验结果及分析
1. Single scale evaluation
S为固定值时:Q = S, S为随机值时:Q = 0.5(S_min + S_max)
结论:
1. 误差随深度加深而降低,当模型到 达19层时,误差饱和,不再下降
2. 增加1*1有助于性能提升
3. 训练时加入尺度扰动,有助于性能 提升
4. B模型中,3*3替换为5*5卷积,top1 下降7%
2. Multi scale evaluation
方法1 :
Q = [S-32, S, S+32]
方法2:
Q = (S_min, 0.5*(S_min + S_max),S_max)
结论 :
测试时采用Scale jittering 有助于性能提升
3. Multi crop evaluation
方法: 等步长的滑动224*224的窗口进行裁剪,在尺
度为Q的图像上裁剪5*5=25张图片,然后再进
行水平翻转,得到50张图片,结合三个Q值,
一张图片得到150张图片输入到模型中
结论 :
1 . multi-crop 优于dense
2 . multi-crop 结合dense,可形成互补,达到最优结果
4. Convnet fusion
方法 : ILSVRC中,多模型融合已经是常规操作
ILSVRC中提 交 的 模 型 为 7 个 模 型 融 合
采用 最 优 的 两 个 模 型
D / [ 2 5 6 , 5 1 2 ] / 2 5 6 , 3 8 4 , 5 1 2
E / [ 2 5 6 , 5 1 2 ] / 2 5 6 , 3 8 4 , 5 1 2
结合 m u l t i - c r o p 和 d e n s e , 得 到 最 优 结 果
5. Comparison with the state of the art
结论 :
单模 型 时 , V G G 优 于 冠 军 G o o g L e N e t
论文总结:
关键点:
1、堆叠小卷积核,加深网络
2、训练阶段,尺度扰动
3、训练阶段,多尺度扰动及Dense+Multi crop
启发点:
1、采用小卷积核,获得高精度
2、采用多尺度及稠密测试,获得高精度
3、1*1卷积可认为是线性变换,同时增加非线性层
4、填充大小准则:保持卷积后特征图分辨率不变
5、LRN(局部响应归一化)对精度无提升
6、Xavier初始化可达较好效果
7、若S(resize 后最小边)远大于224,物体可能进展图片的一小部分
8、大尺度模型采用小尺度模型初始化,可加快收敛
9、物体尺寸不一,因此采用多尺度训练,可以提高精度
10、multi crop 存在重复计算,因而低效
11、multi crop 可看成dense 的补充,因而它们边界处理有所不同
12、小而深的卷积网络优于大而浅的卷积网络
13、尺度扰动对训练和测试阶段有帮助