DL:CNN-ImageNet Classification with Deep Convolution Neural Networks

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oMengLiShuiXiang1234/article/details/50903356


有好多人写了好多关于CNN,关于2012年ImageNet的博客,这里我来记录一下自己学习所了解到的一些东西,有可能不全面,等想到什么再进行补充吧。


Paper:2012 ImageNet Classification with Deep Convolution Neural Networks



疑问:


 关于本文还有疑问,各位看客如果知道的话,望给解答

(1)关于数据的问题

      在论文的2 The Dataset 里面讲到由于ImageNet的images的图像分辨率不同,而文章所用的CNN的输入需要是同一分辨率的,So,作者将所有images的分辨率固定为256*256。那为什么在文章 3.5 overall Architecture中网络结构的输入是224*224*3 ??

(2)关于网络结构

      文章中提到网络结构分为8层,前5层为卷积层,后3层为全连接层。问:前5层网络中,为什么只有前两层有pooling层,而后边的卷积没有进行pooling?



Abstract


Train: 1.2 million high-resolution images into 1000 classes

在test集上,error rate有所降低

网络结构:5个卷积层(有些层后会有max-pooling),3层全连接层,用softmax分类

为了快速训练:卷积层用非饱和的神经元(non-saturating neurons)和高效的GPU。

为了降低全连接层的过拟合问题:用dropout(&&&&&)


Introduction


Labeled images relatively small。在仅有数据集基础上可以进行简单的recognition Tasks,尤其是如果通过label-preserving transformation进行扩充数据集。这个问题在很大程度上被认识到。如今有大量的数据集,包括很多的图像,很多的种类。

为了学习成千上万图像中数以千计的objects,需要具有很大学习能力的model。很多的物体识别任务意味着我们需要学习到先验知识来弥补缺失数据的不足。可以通过修改CNN网络结构中的depth 和 breadth来控制它的学习能力,可以学习到image的本质信息(也就是,统计学上的稳定性和位置像素的依赖性)。同等程度的CNN和其他的神经网络对比,训练CNN会比较快。

尽管如此,对于large scale to high-resolution images仍然十分expensive。如今,GPUs的发展促进了CNN的发展。

本文的贡献:

(1)迄今为止,最大CNN网络来train the model;也是最好的结果

(2)写了GPU代码,执行2D convolution和CNN的其他的训练

(3)网络中用了许多新的不平常的特征,提高了性能且降低了运行时间。

(4)用有效的方法解决网络中的过拟合问题。

(5)最终的网络包括:5层卷积层,3层全连接层(网络层次的降低会导致性能变差,每层包括不到1%的model 参数)

网络结构的大小受限于当前GPU中内存的大小


The Dataset 

ILSVRC 数据集。大概有1000类,每类有1000 images。Train总共有1.2million images,5万validation images,15万test images。

ImageNet中包含各种分辨率的图像,而我们系统需要的是常量输入维度的图像。因此,下采样图像到固定分辨率256*256。除了subtracting the mean activity over the training set from each pixel以外没有对图像进行其他的预处理。


The Architecture 

共包含8层,其中前5层是cnn,后面3层是全连接的网络,其中最后一层是softmax组成的输出决策层(输出节点数等于类别数目1000)。

具体的实现上,这篇文章在结构上面的一些改进在于:

(1)采用ReLU来代替传统的tanh引入非线性(ReLU不需要输入的数据一定是归一化后的。ReLU会比tanh或者是sigmoid训练的快);

(2)采用2块显卡来进行并行计算,减少了更多显卡需要host传递数据的时间消耗,在结构上,部分分布在不同显卡上面的前后层节点之间无连接,从而提高了训练速度;

(3)同层相邻节点的响应进行局部归一化提高了识别率(top5错误率降低1.2%);

(4)有交叠的pooling(top5错误率降低0.3%);

 

 

 

 

 

 

 

 

(1)整个网络结构共8层,5层卷积层,3层全连接层

(2)所有的池化,大小为3,步长为2

(3)3,4,5卷积层无池化

层次

Kernel大小OR Pooling大小

如何计算

层神经单元数

Input

 

input

224*224*3

L1-C1

 96@11*11*3,stride=4,原图补零3

(224+3-11)/4+1 = 55

2*48@55*55*1

L1-P1

 size=3*3,stride=2

(55-3)/2+1=27

2*48@27*27*1

L2-C2

256@5*5*48, stride=1, 原图补零4

(27+4-5)/1+1=27

2*128@27*27

L2-P2

Pooling size=3*3,stride=2

(27-3)/2+1=13

2*128@13*13

L3-C3

384@3*3*256, stride=1, 原图补零4

(13+4-3)+1 = 13

2*192@13*13

L4-C4

384@3*3*192, stride=1, 原图补零4

(13+4-3)+1 = 13

2*192@13*13

L5-C5

256@3*3*192, stride=1, 原图补零4

(13+4-3)+1 = 13

2*128@13*13

L6

全连接层

2*2048

L7

全连接层

2*2048

L8

全连接层,softmax进行分类(共1000类)

1000

 

 

 

 

Reducing Overfitting 


(1)data augmentation (增大数据量)

大部分的降低过拟合的方法是认为的增大数据量

The first form of data augmentation consists of generating image translations and horizontal reflections.

The second form of data augmentation consists of altering the intensities of the RGB channels in training images

(2)dropout

 

 

 

 

 

 

展开阅读全文

没有更多推荐了,返回首页