回顾经典: AlexNet, CaffeNet — Winner of ILSVRC 2012

网友投稿 589 2022-10-11

回顾经典: AlexNet, CaffeNet — Winner of ILSVRC 2012

回顾经典: AlexNet, CaffeNet — Winner of ILSVRC 2012

重磅干货,第一时间送达

导读

最近和同事交流很多来参加面试的应聘者的情况,很多都是介绍自己用了什么来做什么,但是对于内部的原理,都兵没有深入研究,现在深度学习框架都提供了非常便利的API,你可以轻松实现和搭建基础的网络,甚至可以直接照搬开源代码跑。

但你觉得跑跑开源代码真的就能拿到高薪吗?不太现实吧,跑通别人代码只是开始,更加重要的是理解原理,理解作者是如何通过观察发现存在的问题,理解作者如何设计实验,以及如何验证自己的想法。

在本文中,将回顾 AlexNet 和 CaffeNet。AlexNet是2012年ILSVRC(ImageNet Large Scale Visual Recognition Competition) 的冠军,这是一个图像分类比赛。

这是2012年来自Hinton教授团队的NIPS论文,在我(指原作者)写这篇文章的时候被引用了28000次。它在深度学习方面取得了重大突破,大大降低了ILSVRC 2012的错误率,如下图所示。因此,这是一篇必读的论文!!

ImageNet是一个包含超过1500万张高分辨率图像的数据集,包含大约22000个类别。ILSVRC使用ImageNet的一个子集,在1000个类别中每个类别中大约有1000张图片。总共大约有120万张训练图像,5万张验证图像和15万张测试图像。

AlexNet, the winner in ILSVRC 2012 image classification with remarkable lower error rate

A. For AlexNet, we will cover:

ArchitectureReLU (Rectified Linear Unit)Multiple GPUsLocal Response NormalizationOverlapping PoolingData AugmentationDropoutOther Details of Learning ParametersResults

B. 对于CaffeNet来说,它只是一个AlexNet的单gpu版本。因为通常人们只有一个GPU, CaffeNet是一个模拟AlexNet的单GPU网络。在这个故事的最后我们也会报道这个。

通过遍历每个组件,我们可以知道每个组件的重要性。其中一些现在还不是很有用。但它们确实激发了其他网络的发明。

整理自:contains eight layers:

1th: Convolutional Layer: 96 kernels of size 11×11×3 (stride: 4, pad: 0) 55×55×96 feature maps Then  3×3 Overlapping Max Pooling (stride: 2)

27×27×96 feature maps Then Local Response Normalization

27×27×96 feature maps

2nd: Convolutional Layer: 256 kernels of size 5×5×48 (stride: 1, pad: 2)

27×27×256 feature maps Then 3×3 Overlapping Max Pooling (stride: 2) 13×13×256 feature maps Then **Local Response Normalization 13×13×256 feature maps

3rd: Convolutional Layer: 384 kernels of size 3×3×256 (stride: 1, pad: 1)

13×13×384 feature maps

4th: Convolutional Layer: 384 kernels of size 3×3×192 (stride: 1, pad: 1)

13×13×384 feature maps

5th: Convolutional Layer: 256 kernels of size 3×3×192 (stride: 1, pad: 1)

13×13×256 feature maps Then 3×3 Overlapping Max Pooling (stride: 2)

6×6×256 feature maps

6th: Fully Connected (Dense) Layer of

4096 neurons

7th: Fully Connected (Dense) Layer of

4096 neurons

8th: Fully Connected (Dense) Layer of

Output: 1000 neurons (since there are 1000 classes) Softmax is used for calculating the loss.

总共有6000万参数需要训练!!!

2. ReLU

激活函数

在Alexnet之前,Tanh被使用。ReLU是在AlexNet中介绍的。达到25%的训练错误率时,ReLU比Tanh快6倍

3. Multiple GPUs

此时使用的是NVIDIA GTX 580 GPU,内存只有3GB。因此,我们可以在架构中看到,它们被分成两条路径,使用两个gpu进行卷积。内部通信只发生在一个特定的卷积层。

因此,使用2个gpu,是由于内存问题,而不是为了加快训练过程。

与只有一半内核(只有一条路径)的网络相比,整个网络中,top-1和top-5的错误率分别降低了1.7%和1.2%。

4. Local Response Normalization

Normalization

在AlexNet中,使用了局部相应归一化( local response normalization)。正如我们在方程式中看到的那样,它不同于批处理归一化(batch normalization)。归一化(normalization)有助于加快收敛速度。现在,批处理归一化代替了局部相应归一化。

通过局部响应归一化,Top-1和top-5的错误率分别降低了1.4%和1.2%。

5. Overlapping Pooling

Overlapping Pooling 是步长小于核大小的池化,而Non-Overlapping Pooling 是步长等于或大于核大小的池化。

通过overlapping pooling,,Top-1和top-5的错误率分别降低了0.4%和0.3%。

6. Data Augmentation

两种方式的数据增强

第一:图像平移 + 水平变换(镜像)

从一张 256×256的图像加上水平变换后随机裁剪224×224。训练集的大小增加了2048倍。可以计算如下:

图像平移 :(256–224)²=32²=1024

水平变换:1024×2 = 2048

在测试时,利用四个角斑加上中心斑及其对应的水平反射(共10个斑)进行预测,并对所有结果进行平均,得到最终分类结果。

第二:Altering the intensity

对训练集进行主成分分析 (PCA),对于每一张训练图像,添加数量:

Quantity of intensity altered

pi 和 λi 是 3×3协方差矩阵的特征向量和特征值的RGB像素值,相应的,αi 是随机变量的意思,均值为0和标准差0.1。

通过增加训练集的大小,将Top-1错误率降低1%以上。

7. Dropout

Dropout

通过在训练过程中使用dropout的这一层,每个神经元都有一定概率不参与前馈传递和反向传播。这样,每个神经元就可以有更大的机会接受训练,而不必太依赖某些非常“强大”的神经元。

在test阶段,没有使用 dropout。

在AlexNet中,前两个完全连接层的概率为0.5。Dropout是一种减少过拟合的正则化方法。

8. Other Details of Learning Parameters

Batch size: 128 Momentum v: 0.9 Weight Decay: 0.0005 Learning rate ϵ: 0.01, reduced by 10 manually when validation error rate stopped improving, and reduced by 3 times.

训练集120万张图片。网络被训练了大约90个周期。在两个NVIDIA GTX 580 3GB gpu上运行5到6天。

9. Results

Error Rate in ILSVRC 2010

对于ILSVRC 2010, AlexNet获得了前1和前5的错误率分别为37.5%和17.0%,优于其他方法。

如果不通过数据扩充对10个patches 进行10次预测取平均,AlexNet的前1次和前5次错误率分别为39.0%和18.3%。

Error Rate in ILSVRC 2010

用1个 AlexNet (1 CNN)时,验证错误率为18.2%。

通过对5个AlexNet(5个CNNs)的预测进行平均,错误率降低到16.4%。这是一种已经在LeNet中用于数字分类的boosting 技术。

通过在AlexNet中增加一个卷积层(1 CNN*),验证错误率降低到16.6%。

通过对2个modfiied AlexNet和5个原始AlexNet(7个CNNs)的预测进行平均*,验证错误率降低到15.4%。

Some Top-5 results by AlexNet

B. CaffeNet

CaffeNet is a 1-GPU version of AlexNet. The architecture is:

CaffeNet

我们可以看到AlexNet中的两条路径被合并成一条路径。

需要注意的是,对于CaffeNet的早期版本,池化层和归一化层的顺序是颠倒的,这是偶然的。但是在Caffe提供的当前版本的CaffeNet中,它已经为CaffeNet提供了正确的池化层和归一化化层的顺序。

通过逐一调查每个组件,我们可以知道每个成分的有效性。

References

[2012 NIPS] [AlexNet] ImageNet Classification with Deep Convolutional Neural Networks​​​ACM MM] [CaffeNet] Caffe: Convolutional Architecture for Fast Feature Embedding​​​QUICK SETUP of CaffeNet (AlexNet) for Image Classification Using Nvidia-Docker 2.0 + CUDA + CuDNN + Jupyter Notebook + Caffe​​​Large Scale Visual Recognition Competition​​​完 —

觉得不错就点亮吧

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于dubbo 自定义线程池的问题
下一篇:基于express框架构建图片爬虫小应用(express开发框架)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~