文章目录
1. 论文研究背景,成果及意义
1.1 Alex简介
- AlexNet是2012发表的经典之作,并在当年ImageNet取得最好成绩
- 论文名称可以看出是用于图像分类的深度卷积神经网络,因为作者叫Alex Krizhevsky,所以取名AlexNet
- Alex非常经典,虽然现在用的比较少,但是里面用到的一些网络训练技巧及防过拟合技巧现在还一直在使用。
1.2 研究背景
- 深度学习网络火爆之前图像分类任务基本都是机器学习算法来做的(比如LR,SVM等),机器学习算法很依赖与特征的提取,但是特征提取比较困难且需要经验
- 为了进一步提高分类的精确度就需要设计一个更为复杂的模型,LabelMe,ImageNet等大的标注数据集出现,允许我们设计更复杂强大的模型去处理图像分类问题
- 硬件计算能力的提升,算力比较强的GPU等
1.3 研究成果
- 1CNN表示训练一次AlexNet取得的准确率
- 5CNNs表示训练一次AlexNet取平均值的准确率
- CNN*在最后一个池化层之后,额外添加第六个卷积层使用ImageNet2011数据集上预训练然后使用ILSVRC-2012微调的准确率
- 77CNN*两个网络进行了预训练微调,与5CNNs取均值的准确率
- LSVRC 2012上top1,错误率为1.3%
1.4 研究意义
- 现实中环境的物体展示出多样性,这个多样性表现颜色,形状等等
- 比如猫存在不同的品种,颜色大小均不一样,相同的物体在不同的光照下,不同角度看上去也会有所差别
- 所以想要获得更好的识别能力需要更加庞大的训练数据,以及更复杂的拟合参数
- 活跃领域:计算机视觉,模式识别与机器学习领域等
- 应用领域:安防领域的人脸识别,行人检测,智能视频分析,行人跟踪等;交通领域的交通场景物体识别,车辆计数,逆行检测,车牌检测与识别,以及互联网领域的基于内容的图像检索,相册自动归类等
2. 图像分类问题简介
2.1 图像物体分类
- 计算机视觉中非常重要的基本问题,也是图像分割,物体跟踪,行为分析等其他高层视觉任务的基础
- 深度学习分类的两个阶段:训练阶段;测试阶段
2.2图像分类的发展历史
- 趋势:让机器更自主的学习如何对图像进行分类
- 机器学习领域:特征提取->特征筛选->输入分类器
- 深度学习领域:特征的提取,筛选和分类集成于一体
- 前期知识储备:tensorflow,CNN,图像分类,softmax
3. 论文整体框架
- 1.Abstract:简单介绍了AlexNet网络结构及取得的成果
- 2.Introduction:神经网络再有了算力更好的GPU与更大的数据集合后会取得更好的效果
- 3.The Dataset:ILSVRC与ImageNet数据集合的介绍
- 4.The Architecture:Relu,两个gpu训练,LRN,overlapping,pooling网络整体结构
- 5.Reducing Overfitting:防止过拟合,数据增强,dropout
- 6.Details of learning:网络的超参数设置,权重及偏置的初始化
- 7.Result:详细介绍了AlexNet网络在比赛中取得的成果
- 8.Qualitative Evaluations:给出来做的实验,展示一些卷积核学到的内容,同一类的图像特征在欧氏距离上更近
- 9.Discussion:结论说明了神经网络可以很好的完成图像分类任务
3.1 摘要
- 我们训练了一个大型深度卷积神经网络来将ImageNet LSVRC-2010竞赛的120万高分辨率的图像分到1000不同的类别中。在测试数据上,我们得到了top-1 37.5%, top-5 17.0%的错误率,这个结果比目前的最好结果好很多。
- 这个神经网络有6000万参数和650000个神经元,包含5个卷积层(某些卷积层后面带有池化层)和3个全连接层,最后是一个1000维的softmax。为了训练的更快,我们使用了非饱和神经元并对卷积操作进行了非常有效的GPU实现。为了减少全连接层的过拟合,我们采用了一个最近开发的名为dropout的正则化方法,结果证明是非常有效的。
- 我们也使用这个模型的一个变种参加了ILSVRC-2012竞赛,赢得了冠军并且与第二名 top-5 26.2%的错误率相比,我们取得了top-5 15.3%的错误率。
非线性单元Relu
- f(x)=max(0,x)
- 可以使网络训练更快:相比于tanh,sigmoid而言,Relu的导数更好求,反向传播会涉及到**函数的求导,tanh,sigmoid包含指数求导较慢
- 增加网络的非线性:加入到神经网络中可以使网络拟合非线性的映射
- 防止梯度消失和弥散:当数值过大或过小时,tanh,sigmoid导数接近0,导致反向传播梯度消失的问题,relu为非饱和**函数不存在此问题
- 使网络更具有稀疏性:relu可以使一些神经元输出为0,因此可以增加网络的稀疏性
Sigmoid非线性单元
- 表达式:
- 导数:
dropout层
- 对于一个有N个节点的神经网络,有了dropout后,就相当于2N个模型的集合了
- 相当于机器学习模型中融合ensemble
4. 神经网络处理图像分类问题流程
4.1 训练阶段
4.2 测试阶段
4.3 模型衡量标准
5. 网络结构与部分参数计算
5.1 AlexNet网络结构图
5.2 网络参数及连接设置
6. 网络超参数及训练
6.1 训练数据
- 随机的从256256的原始图像中截取了224224大小的区域(以及水平翻转和镜像),相当于增加了2*(256-224)^2倍的数据量。如果没有数据增强,仅靠原始数据量,参数众多的CNN会陷入过拟合中,使用数据增强可大大减轻过拟合,提升泛化能力
- 对图像的RGB数据进行PCA处理,并对主成分做一个标准差为0.1的高斯扰动,增加一些噪声,这个技巧-可以让错误率在下降1%
- 进行预测时,则是取图片四个角加中间5个位置,并进行左右翻转,一共获得10张图片,对他们进行预测并对10次结果求均值
6.2 超参数的设置
- 批量大小:batchsize = 128
- 权重衰减: weight decay = 0.005
- 学习率:learning rate = 0.01 衰减率为0.1
- 轮数:epoches = 90
卷积核初始方式:均值为0方差为1的高斯分布
偏置初始化方式:2,4,5卷积层及全连接层初始化为1,剩余初始化为0
7. 网络特点
- 成功使用Relu作为CNN的**函数,并验证其效果在较深的网络中超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题
- 训练时使用dropout随即忽略一部分神经元,以避免过拟合。Dropout虽有单独的论文论述,但是Alex将其实用化,通过实验验证了它的效果。在Alex中主要是最后几个全连接层使用了dropout
- 在CNN中使用重叠的最大池化。此前CNN主要使用的是平均池化,Alex全部使用最大池化,避免了平均池化带来的迷糊化效果。并且让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性
- 提出了LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力(后来VGG证明了这个作用不大)
- 使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时的大量矩阵运算。Alex使用GTX580 GPU进行训练的同时,AlexNet的设计让GPU之间的通信只在网络的某些层进行,控制了通信的性能损耗
- 数据增强,随机的从256256的原始数据中截取了224224大小的区域(以及水平翻转和镜像),对图像的RGB数据进行PCA处理,并对主成分做一个标准差为0.1的高斯扰动,增加一些噪声,这个技巧-可以让错误率在下降1%