写在前面:
作为CNN中的经典,对于刚开始入cv的小白来说,这是一篇必看的文章,以前我看AlexNet就简单地认为是卷卷积就完事了,实则不然。今天终于静下心来,好好地品了品这篇文章。
一、数据集
-
ImageNet数据集,我觉得有必要专门来看看这个数据集是怎么使用的。
二、网络架构
如果说网络的结构,那单单确实就是几次卷积,但是细品就会发现,这篇文章用到的trick是很值得我们学习的。
2.1 Relu
文章的第一个亮点,就是使用relu。至于为什么要这么做,还有**函数有什么好处等等问题,我在另一篇博客中已经提到过了。
2.2 多GPU并行化
我觉得这个问题不是出在cv上。对于目前来说许多网络训练时间一般都在一天左右,我们如何提高我们的并行性是一个值得关注的重点与难点,这个也需要我再另起一篇博客来谈谈。
2.3 LRN(局部响应归一化)
这个技巧,我也是需要再另起一篇文章做描述
2.4 最大值重叠池化
在这一部分中,有两个要点:
- 没用之前的平均值池化,其目的是避免模糊性,而采用最大值池化
- 将步长定为小于
size,从而可以使得重复池化,这样可以获得丰富的特征
2.5 网络最终架构
这个网络架构,说实话,这么看是真的感觉挺难的,但是5层卷积+3层全连接,其实不难,因为这是两个GPU一起训练的,所以会显得这个网络很难,那么简化版是这样:
三、避免过拟合
alexNet最好的一点在于精度的把握,通过极深的网络从而达到精度,但是随之而来的问题就是过拟合,因此文章又给出了两种避免过拟合的方法。
3.1 数据增强
- 可以对图像进行平移or反转
- 对图像的
RGB进行强度变换,从而引出了一个另外的东西叫PCA。
3.2 Dropout
这个trick目前很多网络都在用,也是一个非常厉害的想法。总之就是,在网络中,将一些神经元隐藏,在传播过程中不起作用。
而且我个人觉得这个技术我也得再来一篇文章。
四、总结
作为深度学习的热潮之作,这篇文章无疑是顶的,这里不仅仅是网络,同时其他的技巧也一直被人们所使用,这是一篇超级好的文章,应该反复多读。