[论文阅读] VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION

写在前面

原文:https://arxiv.org/pdf/1409.1556
参考:https://www.cnblogs.com/lijiuliang/p/15133276.html
关键字:卷积网络、卷积网络深度、图像识别
阅读理由:卷积神经网络深度与算法优良性能之间的关系是什么,如何评估的,结果如何,有哪些思考
前置知识:CNN(也是我写滴嘻嘻(#..#))filter

速览

研究了什么

卷积网络深度在大规模的图像识别环境下对准确性的影响

怎么研究的

使用非常小的(3x3)filters对网络深度的增加进行全面评估

研究结果

通过将深度推到16-19加权层可以实现对现有技术配置的显著改进

文章结构

(本文的逻辑十分之清晰,非常值得学习)

一.网络架构

网络配置
1.输入
图片规格:3个通道,大小224x224
预处理操作:计算出3个通道的平均值,在每个像素上减去平均值(处理后迭代更少);

2.关于卷积层
大部分网络架构使用具有非常小感受野的3x3卷积核;
某些网络架构还使用了1x1卷积核;
卷积层步长(stride)=1,3x3卷积核的填充(padding)=1;
所有隐藏卷积层都配备了ReLU非线性激活。

3.关于池化层
整个网络架构的池化总共由5个“最大池化层”实现;
池化窗口大小为2x2,步长=2。

4.关于全连接层
所有卷积操作之后跟有3个全连接层:
前2个:均为4096通道;
最后1个:1000个通道,即对应的1000个类别,根据这1000个单元的输出就可以进行分类;

5.全连接层之后是SoftMax分类器。
用于计算网络的代价函数时求误差

6.另:LRN
在深度学习中,局部响应归一化(Local Response Normalization,简称LRN)是一种用于神经网络层的技术。它的主要作用是对输入数据进行归一化处理,以减少内部协方差偏移的影响。

在神经网络中,每个神经元都接收到来自前一层的所有神经元的输出,并将其作为输入。这些输入被加权求和后通过激活函数产生输出。然而,在训练过程中,由于权重初始化的不同、梯度下降算法的随机性等原因,不同神经元的输出可能会出现内部协方差偏移的现象,即某些神经元的输出过大或过小,导致整个网络的性能下降。

为了解决这个问题,LRN技术引入了一种新的归一化方法,通过对每个神经元的输入进行局部归一化来减少内部协方差偏移的影响,提高了模型的泛化能力

需要注意的是,LRN技术并不是所有情况下都能提高模型的性能。比如本文,使用LRN不仅没有提高性能,反而增加了内存消耗和计算时间

如图所示

上图为不同的网络配置,所有配置均遵循上述网络架构,只在深度上有所不同。

二.分类框架

(描述了分类卷积神经网络训练和评估的细节)
训练
为获得固定大小的224x224,输入图像将从归一化的训练图像中被随机裁剪。
为了进一步增强训练集,裁剪图像经过了随机水平翻转和随机RGB颜色偏移

解释训练图像归一化
令S是等轴归一化的训练图像的最小边,输入图像从S中裁剪(我们也将S称为训练尺度)。
虽然裁剪尺寸固定为224×224,但原则上S可以是不小于224的任何值:对于S=224,裁剪图像将捕获整个图像的统计数据,完全扩展训练图像的最小边;对于S≫224,裁剪图像将对应于图像的一小部分,包含一个小对象或对象的一部分。

如何设置训练尺度?
对于训练集图像的尺寸设置,论文中使用了两种方法:

  • 固定尺寸训练,设置S=256和S=384
  • 多尺度训练,每个训练图像从一定范围内[Smin,Smax],(Smin=256,Smax=512)进行随机采样。由于图像中的目标可能具有不同的大小,因此在训练期间考虑到这一点是有益的。这也可以看作是通过尺度抖动进行训练集增强,其中单个模型被训练在一定尺度范围内识别对象。

三.分类实验

评估
111

  • 单尺度评估,测试图像固定尺度
    发现:
    局部归一化(A-LRN)网络,对网络A的结果并没有很大的提升。
    网络的性能随着网络的加深而提高。
    当网络层数达到19层时,使用VGG架构的错误率就不再随着层数加深而提高了。更深的网络应该需要更多的数据集。
    论文还将网络B与具有5×5卷积层的浅层网络进行了比较,浅层网络可以通过用单个5×5卷积层替换B中每对3×3卷积层得到。测量的浅层网络top-1错误率比网络B的top-1错误率(在中心裁剪图像上)高7%,这证实了具有小滤波器的深层网络优于具有较大滤波器的浅层网络。
  • 多尺度评估
    发现:
    训练图像尺度抖动优于使用固定最小边S。

四.实验结论

我的总结

  1. 本文提到的卷积神经网络的优化方法有三
    一种方法是在第一层卷积中使用更小的感受野窗口和步幅。
    另一个改进方向是密集地训练和测试网络,使其在整个图像上以及多个尺度下进行处理。这种方法可以提高模型的鲁棒性和泛化能力。
    第三种是卷积神经网络的深度问题。通过固定其他参数,增加更多的卷积层来增加网络的深度。这得益于非常小的(3x3)卷积滤波器在所有层中的应用。这种设计使得更深的网络可以在不牺牲精度的情况下保持较小的计算复杂度。

  2. 3X3卷积核的优势

  • 减少网络参数
    参数量=(filter size * 前一层特征图的通道数 )* 当前层filter数量
    对于两个3x3卷积核,所用的参数总量为2×3²×channels(假设保证输入输出通道数不变);
    对于单个5x5卷积核,参数量为5²×channels

  • 增加更多的非线性变换
    2个3x3卷积层拥有比1个5x5卷积层更多的非线性变换(前者可以使用两次ReLU激活函数,而后者只有一次),使得卷积神经网络对特征的学习能力更强。

  1. 对应地,1x1卷积核的优势/好处
    在于增加了一个非线性变换

  2. 思考:将深度推到16-19加权层后相关技术配置显著提升,但是卷积神经网络的深度越深越好吗?
    当然不是,具体可见resnet

  3. 是否可以将这些优化方法分为大类,每一类的优化方法还有哪些?这些优化方法是通用优化方法还是在某些情况下的?他们是不是和网络深度一样在某些情况下有发挥不好的地方?针对这个问题又有什么解决思路和方法呢?

posted @ 2024-11-03 11:46  Chunleiii  阅读(31)  评论(0编辑  收藏  举报