通俗点讲,就是将一张图片先进行等比例缩放到不同尺寸(实现1张图片变多张图片),再在缩放后的图片中随机裁剪出指定尺寸区域得到更多的图像。
就这样,实现了训练集的数据增强。
Q2:作用是什么?数据增强,有利于预防过拟合。
Q3:步骤是什么?步骤1:将原始图像缩放到不同尺寸S;
Q:S设为多大合适呢?(两种解决方法A1、A2)
S过小,裁剪到224x224的时候,就相当于几乎覆盖了整个图片,这样对原始图片进行不同的随机裁剪得到的图片就基本上没差别,就失去了增加数据集的意义;
S过大,,裁剪到的图片只含有目标的一小部分,也不是很好。
A1:单尺度训练(将S设为一个固定值)
论文评估了S=256和S=384两种单尺度模型;
A2:多尺度训练(将S设为一个区间\([S_{min}, S_{max}]\))
论文随机从[256,512]的区间范围内进行抽样,这样原始图片尺寸不一,有利于训练,这个方法叫做尺度抖动(scale jittering),有利于训练集增强。
步骤2:从缩放后的图片随机裁剪224x224区域的图片;
步骤3:对裁剪后的图片进行水平翻转和随机RGB色差调整(改变训练图像中 RGB 通道的强度);
2、测试测试阶段与训练阶段主要有两点不同:
对于测试集同样采用Multi-scale,将图像缩放到尺寸Q,但是Q可以≠训练尺度S;
将“FC全连接层”转换为“等效卷积层”
第一个FC层转为“7x7卷积层”;后两个FC层均转为“1x1卷积层”;
为什么要可以进行转换?
详见:https://cubox.pro/web/reader/ff8080817b380a78017b3811507404b4。
转换的作用是什么?
①可以实现与FC层同样的效果(即可以获得与FC层相同的输入输出);
②去除了FC层必须要求“输入图像尺寸固定”的限制条件(详见:https://blog.csdn.net/qq_31347869/article/details/89484343)。
六、Classification Experiments 1、Single Scale Evaluation若S采用单尺度,设Q=S;若S采用多尺度,设\(Q=0.5(S_{min}+S_{max})\);
通过“A-LRN”证明,网络中加入LRN没什么用;
通过比较A-E的“top-1 val.error”和“top-5 val.error”发现,网络深度越深,训练性能越好,且深度达19层时,性能趋于饱和;
通过比较D和C,证明3x3卷积效果优于1x1卷积;
通过将“B”和“带有5x5卷积的浅层网络”,发现两个3x3卷积效果优于单个5x5卷积(即使二者具有等效的感受野);
通过比较单尺度S和多尺度S,发现尺度抖动有利于训练集数据增强。
2、Multi-Scale Evaluation保持S为单尺度(\(S=256 or S=384\)),查看多尺度Q的性能(\(Q=\{S-32, S, S+32\}\));
令S为多尺度(\(S\in[S_{min}, S_{max}]\)),查看多尺度Q的性能(\(Q=\{ S_{min}, 0.5(S_{min}+S_{max}, S_{max}) \}\));
证明测试时的尺度抖动导致了更好的性能。
3、Multi-Crop Evaluation将“稠密\(ConvNet_{(即未进行多裁剪)}\)评估”与“多裁剪图像评估”进行比较;
通过平均其soft-max输出来评估两种评估技术的互补性;
证明了使用多裁剪图像表现比密集评估略好,而且这两种方法确实是互补的(因为它们的组合优于其中的每一种)。
4、Convnet Fusion查看多个卷积网络融合结果;
ILSVRC提交的是单规模网络;post-提交的是多规模网络;
表现最好的多尺度模型(配置D和E)的组合,它使用密集评估将测试误差降低到7.0%,使用密集评估和多裁剪图像评估将测试误差降低到6.8%。
七、我的总结VGGNet网络特点:
层数深(VGG拥有5段卷积,每段卷积内包含2-3个卷积层),同时每段尾部配有最大池化层,适用于大型数据集;
网络简洁,使用了同样大小的卷积核尺寸(3x3)和最大池化尺寸(2x2)贯穿整个网络架构;
采用“几个小滤波器(3x3)卷积层的串联组合”替代“一个大滤波器(5x5或7x7)卷积层”,效果更好;
训练和测试阶段都对数据集进行了Multi-scale将图片缩放并采样,实现了数据增强;
测试阶段将全连接层转换为等效卷积层,去除了FC层对输入图像尺寸的限制;
采用多GPU并行训练,每个GPU处理部分数据。