深度之眼Paper带读笔记CV.2:AlexNet

文章目录

  • 前言
  • 导读
    • 论文研究背景、成果及意义
      • 研究背景
      • 研究成果
      • 研究意义
    • 未来技术研究趋势
    • 前期知识储备
  • 网络结构及部分参数计算
    • 卷积通道和特征map数量计算
    • 网络参数及连接计算
  • 网络超参数的设置和训练
    • 超参设置
    • 创新点

前言

本课程来自深度之眼,部分截图来自课程视频。
鼎鼎大名的AlexNet,在ImageNet上拿了2012冠军,并且分类效果比人类强。
文章标题:ImageNet Classification with Deep Convolutional Neural Networks,2012年发表于Neural Information Processing Systems (NIPS)会议。NIPS是机器学习的顶会,人工智能A类会议。
AlexNet和后面要学习的VGGNet都是图像分类中很重要,很基础的文章,里面有很多基础概念,训练技巧。
1.alexnet网络结构包含几层卷积层, 几层全连接层。
2. 使用了哪些防过拟合技术。
3. 神经网络处理图像分类问题流程。

导读

论文研究背景、成果及意义

研究背景

神经网络的发展两个重要条件:
1、LabelMe,ImageNet等大的标注数据集的出现;
2、硬件计算能力的提升(算力较强的GPU等)

研究成果

深度之眼Paper带读笔记CV.2:AlexNet_第1张图片
The ImageNet Large Scale Visual Recognition Challenge (ILSVRC)上以比较大的优势击败当时非常流行的算法。
1CNN表示训练一次AlexNet取得的正确率。
5CNN表示训练五次AlexNet取平均值得的正确率。
CNN在最后一个池化层后,额外添加第六个卷积层使用ImageNet 2011(秋)数据集上预训练然后使用ILSVRC2012微调的准确率。
7CNN
两个网络进行了预训练微调,与5CNNs取均值的准确率。

研究意义

在CS231n中第二讲《图像分类》里面也有提到,计算机的图像识别有很多挑战,例如:
(以识别猫咪为例):
1、同一个猫咪从不同角度拍摄,获得的图像不一样;
2、光照会使得图像的明暗度不一样;
3、不同动作的猫咪也不一样;
4、遮挡问题,例如只看到猫咪的尾巴;
5、猫咪与背景图像的相似会使得识别比较困难;
6、不同猫咪的种类,大小、颜色、年龄。对于识别也造成困难;
传统的通过判断的方式来解决这些问题是行不通的。要想获得更好的识别能力需要更加庞大的训练数据及更加复杂的拟合参数。

未来技术研究趋势

深度之眼Paper带读笔记CV.2:AlexNet_第2张图片
趋势是越来越深,越深效果越好,同时也存在很多问题,例如:深度达到一定程度,存在梯度难以传播的问题,15年何凯明提出的深度残差网络(ResNet)解决了这个问题,17年提出基于移动框架的轻量级深度学习模型。这些模型弄出来不简单,都是大神,团队,自己没法整咋办,使用Auto L可以自动学习网络结构和参数,可以方便的自己设计网络结构。

前期知识储备

深度之眼Paper带读笔记CV.2:AlexNet_第3张图片

网络结构及部分参数计算

The net contains eight layers with weights; the first five are convolutional and the remaining three are fullyconnected. The output of the last fully-connected layer is fed to a 1000-way softmax which produces a distribution over the 1000 class labels.
整体结构包含:5个convolution层(红色),3个Max Pooling层(绿色)(没画出来,FC和ReLU一般不画),3个Fully Connected NN层(蓝色),最后的全连接层用softmax函数输出1000个分类(ImageNet里面是1000个分类)。
深度之眼Paper带读笔记CV.2:AlexNet_第4张图片
这个是论文的原图截过来的,貌似不全,不过可以看出来上下有两个大分支,是用来GPU并行的,两个GPU分别计算一个分支。
注意:论文里面的图上输入是224224的图片,实际上是227227的。
下面是老师重新画的图(貌似引用自云栖社区),比较直观:
深度之眼Paper带读笔记CV.2:AlexNet_第5张图片

卷积通道和特征map数量计算

cs231n里面已经讲了公式,但是还是不太清楚通道这个数值,先回顾cs231n的公式:
深度之眼Paper带读笔记CV.2:AlexNet_第6张图片
按公式算这个没问题,现在来看下通道:
深度之眼Paper带读笔记CV.2:AlexNet_第7张图片
1、输入feature map的通道channel数目是多少,卷积核filter的通道就是多少,不一样TensorFlow会报错;
2、有几个Filter就有几个feature map,例如上图中两个filter就会有两个feature map(相当于两个channel),接下来再进行convolution操作的话filter就需要有两个channel,如果有5个filter就会输出5个feature map。

网络参数及连接计算

卷积特征图尺寸计算公式: F o = ⌊ F i n + 2 p − k s ⌋ + 1 F_o=\left \lfloor \frac{F_{in}+2p-k}{s}\right\rfloor+1 Fo=sFin+2pk+1
2p表示对图像的上下左右各填充p个像素,上式中不是[],而是向下取整的符号 ⌊ ⌋ \left \lfloor \quad \right\rfloor ,意思是除不尽的时候向下取整,k代表卷积核的尺寸
卷积方式为VALID: F o = ⌈ F i n − k + 1 s ⌉ F_o=\left \lceil \frac{F_{in}-k+1}{s}\right \rceil Fo=sFink+1
这里是上取整。
卷积方式为SAME: F o = ⌈ F i n s ⌉ F_o=\left \lceil \frac{F_{in}}{s}\right\rceil Fo=sFin
关于卷积的方式有三种,具体可以看这里:卷积的三种模式:full, same, valid
参数数量计算公式: ( K 2 × K c + 1 ) × F o c (K^2×K_c+1)×F_{oc} (K2×Kc+1)×Foc,(卷积核大小卷积核通道+1)×输出特征图通道数(或者卷积核个数)
连接数量计算公式: F o 2 × ( K 2 × K c + 1 ) × F o c F_o^2×(K^2×K_c+1)×F_{oc} Fo2×(K2×Kc+1)×Foc
输出特征图尺寸×(卷积核大小
卷积核通道+1)×输出特征图通道数(或者卷积核个数)
这里如果忽略bias,则去掉1,因为与网络中其他参数相比bias的参数量比较小。
池化层也是一种convolution操作,卷积方式默认为VALID,池化层没有可学习的参数,只会改变特征图的大小,不会改变通道数量。
深度之眼Paper带读笔记CV.2:AlexNet_第8张图片
上图基本按公式就可以算出来具体结果,需要注意的是conv2_1和conv2_2是分两个GPU计算,相当于每个GPU计算一半,所以它们两个的input size等于上一层的output size的一半。

网络超参数的设置和训练

AlexNet参数很多容易过拟合,采用了很多防止过拟合的技术
1、Data Augmentation
两种方式:
The first form of data augmentation consists of generating image translations and horizontal reflections. We do this by extracting random 224×224 patches (and their horizontal reflections) from the 256×256 images and training our network on these extracted patches4. This increases the size of our training set by a factor of 2048, though the resulting training examples are, of course, highly interdependent. Without this scheme, our network suffers from substantial overfitting, which would have forced us to use much smaller networks. At test time, the network makes a prediction by extracting five 224 × 224 patches (the four corner patches and the center patch) as well as their horizontal reflections (hence ten patches in all), and averaging the predictions made by the network’s softmax layer on the ten patches.
随机从256×256的原始图像中截取224×224大小的区域(然后再水平翻转、镜像),相当于增加了 2 ∗ ( 256 − 224 ) 2 = 2048 2*(256-224)^2=2048 2(256224)2=2048倍的数据量,当然实际貌似是227。如果没有数据增强,仅靠原始的数据量,参数众多的CNN很容易过拟合,数据增强后大大减轻过拟合,提升泛化能力。
进行预测过程中,取图片的四个角加中间共5个位置,并进行左右翻转,一共获得10张图片,对他们进行预测并对10次结构求平均值。
The second form of data augmentation consists of altering the intensities of the RGB channels in training images. Specifically, we perform PCA on the set of RGB pixel values throughout the ImageNet training set. To each training image, we add multiples of the found principal components, with magnitudes proportional to the corresponding eigenvalues times a random variable drawn from a Gaussian with mean zero and standard deviation 0.1.
对图像的RGB数据进行PCA处理,并对主成分做一个标准差为0.1的高斯扰动,增加一些噪声,可以让错误率再下降1%。

超参设置

深度之眼Paper带读笔记CV.2:AlexNet_第9张图片

创新点

深度之眼Paper带读笔记CV.2:AlexNet_第10张图片

你可能感兴趣的:(Paper带读)