小白的经典CNN复现(三):AlexNet
锵锵——本系列的第三弹AlexNet终于是来啦(≧∀≦),到了这里,我们的CNN的结构就基本上和现在我们经常使用或者接触的一些基本结构差不多了,并且从这一个经典模型开始,后面的模型的深度越来越高,使用的数据集也越来越大,训练难度也越来越高,模型的正确率也变得比较高,然后各个dalao们对于卷积的理解实际上也在不断加强。
然鹅······你叫我回家以后咋训练嘛(╯‵□′)╯︵┻━┻。因为家里面就只有一个笔记本,显卡也就一个1050Ti的垃圾,虽然CPU还可以然而并没有什么卵用┓(\'∀\')┏。所以说可能寒假这段时间我在复现论文的时候就不拿论文提到的数据集来跑了,结果分析自然也就先放一放,主要是带着各位小伙伴们看一下论文的思路以及模型的具体结构就好咯。
这篇论文相较于之前的LeNet-5的论文而言已经是少很多的了,也才刚刚9页而已。虽然内容不是很多,但是里面还是提到了很多非常有意思的思想,以及一些在当时来说比较先进的技术吧。最重要的是,这个代码很简单,复现起来没啥难度,这真是棒棒(≧∀≦)。为了尽量让这个系列的博客看起来都差不多,所以接下来我还是会按照和之前博客结构差不多的结构来写一下这个博客:
论文该怎么读:论文内容不多,不过还是有一些要重点看一下,有一些可以选择性略过
论文要点简析:简单分析一下文章中有哪些先进的以及有意思的思想
具体分析以及复现:带着大家一个模块一个模块把所有的部分一起实现
结果简要说明:由于条件限制,没有使用实际的数据集,所以只能简单描述一下训练中有什么坑
反思:模型很经典,既有值得学习的地方,也有值得反思的地方
论文该怎么读?这篇论文非常经典,因为这个AlexNet基本算是将深度学习模型在比赛中的正确率提高到一个前所未有的高度,并且让人们意识到深度学习模型的构造形式以及独特优势,因此这篇论文的内容基本上是要通读的。不过为了进一步减轻各位萌新小伙伴们的负担,我们可以将里面与硬件相关的东西跳过不看。
论文的大致结构及页码如下:
P1-2:深度学习模型以及AlexNet工作的基本介绍,大致了解即可
P2:ImageNet数据集以及大致的数据处理的介绍,这部分主要看一下图片的尺寸应该如何处理,以及做了一个零均值的处理,其他可以先跳过不看
P2-5:AlexNet的基本结构,这部分可以将3.2节跳过不看,因为当时很好的显卡也就只有3G显存,根本不够用,所以当时把这个模型拆开成两个在不同的GPU上分开跑的,现在随随便便找个GPU基本都够跑这个模型了,所以3.2节这个多GPU的部分可以跳过不看
P5-6:数据增强的方法,这部分简要了解即可
P6:具体的训练策略,这部分可以重点看看,因为这部分用到了许多有意思的思想
P7-9:结果分析、结论以及参考文献,简单了解即可
论文要点简析这篇论文篇幅不多,但是这也算是深度学习进入现代的开篇之作吧,并且里面新奇的玩意儿还是蛮多的,总之废话少说,就让我带着大家一起看一看吧(是不是有QQ看点那个味了┓(\'∀\')┏):
在数据处理部分,这一篇比较有意思的地方比较多,不过我们需要关注的大体就是以下的两个方面:
预处理方面:在以往的传统机器学习模型、全连接网络以及LeNet-5的模型中,对于图片的处理常常都是将图片各个通道的像素值的均值和方差都计算出来,然后通过一定的处理,使得图片的像素值都处在一个均值为0,方差为1的一个大致区间中。然而在AlexNet中,我们只需要将图片各通道的像素均值算出,得到一个均值为0的区间即可。
数据增强方面:虽然AlexNet的使用的数据集是ImageNet,里面的数据量非常庞大,但是论文指出,这个数据量对于模型来说还是比较少,也就是说还是存在比较大的过拟合的可能性。为此AlexNet提出了两个数据增强的方法:首先,由于图片的尺寸其实蛮大的,然后AlexNet的输入图片的尺寸实际上只要求224×224的尺寸,所以可以从图片上随机截出来一个224×224的图片作为输入,这样每一次训练对于同一张图片来说,输入网络的都是不同的数据,就相当于增加了训练集;其次,为了尽可能降低图片噪声(模糊以及不同光照条件)的影响,论文通过主成分分析(PCA)技术取得图片各通道像素的主成分,然后把这个主成分添加随机因数叠加到图片上去,从而增强数据。