Very deep convolutional networks for large-scale image recognition
大规模图像识别的深度卷积神经网络
作者:Karen Simonyan & Andrew Zisserman
单位:VGG(牛津大学视觉几何组)
发表会议及时间:ICLR 2015
一 论文总体创新点
- 模型结构设计上:首次采用小卷积核 堆叠使用卷积核 分辨率减半,通道数翻倍
- 训练技巧上:增加了尺度扰动 预训练模型初始化
- 测试技巧上:多尺度测试(Dense测试/Multi-crop测试) 多模型融合
二 研究背景、成果和意义
2.1 研究背景
这个模型是在ILSVRC2014挑战赛上产生的,在这个竞赛上脱颖而出大量的经典模型:AlexNet、VGG、GoogLeNet等。
- AlexNet:ILSVRC-2012 分类冠军,里程碑的CNN模型。
- ZFNet:ILSVRC-2013分类冠军,对AlexNet改进。
- OverFeat:ILSVRC-2013定位冠军,集分类、定位和检测于一体的卷积网络方法。
VGG借鉴了AlexNet卷积模型结构,借鉴了ZFNet采用小卷积核的思想,普遍用3X3卷积核,借鉴了OverFeat全卷积,实现高效的稠密预测(Dense),尝试1X1的卷积核。
2.2 研究成果
VGG在比赛中取得定位第一,分类第二的成绩 GoogLeNet取得分类第一,定位第二的成绩。
开启了小卷积核时代:3X3成为主流模型
作为各类分类任务的骨干网络模型结构:分类、定位、检测、分割一系列图像任务大都有VGG作为backbone。
三 摘要的核心
- 在大规模图像识别任务中,探究卷积网络深度对分类准确率的影响
- 研究3*3卷积核增加网络模型深度的卷积网络的识别性能,同时将模型加深到16-19层
四 VGG结构
论文中给出了ConvNet Configuration五个模型的架构,从VGG11到VGG19,可以看下图,论文中给出的结构模型。
从VGG11到VGG19 他们的共性有:首先有5个Maxpool,这个的作用是降低分辨率,一个Maxpool的话可以一张图片的分辨率降低1/2,用5个的话就是32倍,从图上看输入是224,经过第一个Maxpool后变为112,依次分辨率减半,但是他的通道数是依次增加的,为了不损失精度的做法。然后是用3个FC层进行分类输出,Maxpool之间采用多个卷积层堆叠,对特征进行抽取和抽象。
为什么从VGG11层开始!? 论文中提到Goodfellow et al. (2014) applied deep ConvNets (11 weight layers) to the task of street number recognition。
从VGG11 到 VGG19他的演变过程是:A是11层 到A-LRN在第一个卷积层上加了LRN,但是效果不是很好,LRN也就在这篇论文中被毙掉了,然后B模型是在第1、2个block中增加了1个卷积33卷积核,C模型在第3、4、5个block分别增加了1个11卷积核,表明增加非线性有益于提升指标。D模型在3、4、5个block将1X1的卷积核替换为3X3,E模型分别在D的基础上,又加了1个3X3卷积。
但是,参数量的话并没有增加多少。
五 VGG特点
5.1 堆叠3X3卷积
- 增大感受野
- 2个3X3卷积相当于1个5X5卷积
- 同理3个3X3卷积堆叠等价于一个7X7卷积
- 增加非线性激活函数,增加特征抽象能力‘
- 减少了训练参数
- 可看成是7X7卷积核的正则化,强迫分解为3X3
这里减少的参数计算方法:
假设输入、输出通道均为C个通道,一个7X7卷积核需要的参数:7X7XCXC ,三个3X3卷积核所需要参数量:3X(3X3XCXC),参数减少比 44%
5.2 尝试1X1卷积 借鉴NIN 可以增加非线性激活函数,提升模型效果
六 训练技巧
6.1 数据增强
方法一: 针对位置
在训练阶段,按比例缩放图片至最小边S,随机位置裁剪出224X224区域,随机进行水平翻转
方法二:针对颜色
修改RGB通道的像素值,实现颜色扰动
S的设置方法:
固定值:固定为256或384
随机值:每个batch的S在[256,512],实现尺度扰动
6.2 预训练模型初始化
深度神经网络对初始化敏感
1 深度加深时,用浅层网络初始化
例:B、C、D、E用A模型初始化
2 Multi-scale训练时,用小尺度初始化
S=384时,用S=256模型初始化
S=[256,512]时,用S=384模型初始化
7 测试技巧
7.1 多尺度测试
图片等比例缩放至最短边为Q,设置3个Q,对图片进行预测,取平均
方法一: 当S为固定值时,Q=[S-32,S,S+32]
方法二: 当S为随机值时,Q=(S_min,0.5*(S_min+S_max),S_max)
7.2 稠密测试(Dense test):将FC层转换为卷积操作,变为全卷积网络,实现任意尺度图片输入![请添加图片描述](https://i-blog.csdnimg.cn/blog_migrate/46cf11b7654e48d6f031cb49365a8561.png#pic_center)
7.3 Multi-Crop测试
借鉴AlexNet与GoogLeNet对图片进行Multi-crop,裁剪大小为224*224,并水平翻转1张图,缩放至3种尺寸,然后每种尺寸裁剪出50张图片。
7.4 多尺度测试
等比例缩放图像至三种尺寸
方法一:Dense:全卷积,sumpool得到11000
方法二:Multi-crop:多个位置裁剪224224区域
方法三:Multi-crop & Dense:综合取平均
八 实验结论
8.1 Single scale evaluation
S为固定值时:Q=S,S为随机值时:Q=0.5*(S_min + S_max)
结论:
- 误差随深度加深而降低,当模型到达19层时,误差饱和,不再下降
- 增加1*1有助于性能提升
- 训练时加入尺度扰动,有助于性能提升
- B模型中,33替换为55卷积,top1下降7%
8.2 Multi scale evaluation
方法一:Q=[S-32,S,S+32]
方法二:Q=[S_min,0.5*(S_min+S_max),S_max]
结论:
- 测试时采用采用Scale jittering(尺度扰动)有助于性能提升
8.3 Multi crop evaluation
方法:等步长的滑动224224的窗口进行裁剪,在尺度为Q的图像上裁剪55=25张图像,然后再进行水平翻转,得到50张图像,结合三个Q值,一张图片得到150张图片
结论:
- Multi-crop优于dense
- Multi-crop结合dense,可形成互补,达到最优结果
九 论文启发点
- 采用小卷积核,获得高精度
- 采用多尺度及稠密预测,获得高精度
- 1*1的卷积可认为是线性变换,同时增加非线性层
- 填充大小准则:保持卷积后特征图分辨率不变
- LRN对进度无提升
- S远大于224,图片可能仅包含物体的一部分
- 大尺度模型采用小尺度模型初始化,可加快收敛
- 物体尺度不一,因此采用多尺度训练,可以提高精度Mutli crop存在重复计算,因而低效
- mutli crop可看成dense的补充,因为他们边界处理有所不同
- 小而深的卷积网络优于大而浅的卷积网络
- 尺度扰动对训练和测试阶段有帮助