南噶希先生
上一篇文章中的LeNet-5是第一个广为人知的经典CNN网络,但那是20年前提出的CNN网络,最成功的案例是解决了手写数字识别的问题,当时被广泛应用于邮局/银行的手写邮编/支票数字自动识别系统。但直到2012年之前,在这14年间,CNN网络在图像识别领域的地位逐渐被其他分类模型如SVM取代。其中主要的原因有(事后诸葛亮......):
经过十几年的发展,以上制约CNN网络发展的主要限制因素一个个被解决,结果在2012年的ImageNet竞赛中,继LeNet-5之后的第二个经典CNN网络—AlexNet横空出世。以超出第二名10%以上的top-5准确率,勇夺ImageNet2012分类比赛的冠军,从此, 深度学习 重新回到人们的视野,并一发不可收拾。
下面从一些直观的数据比较1998年的LeNet-5和2012年的AlexNet的区别:
AlexNet网络结构如下图所示:
论文中由于使用了2块GPU,将网络结构布置成了上下两部分,看着很不方便,上图是在网上找的简易版本。
下面总结AlexNet的主要特点:
3.1. 使引入Relu激活函数减轻深度网络难以训练的问题
关于CNN网络的激活函数的讨论,SigAI公众号这篇文章总结的挺好:
另外,下面这篇论文对深度网络难以训练的问题进行了分析:
之前的CNN网络,包括前面著名的LeNet-5,都使用tanh/Sigmoid作为激活函数,这类激活函数具有饱和性,在训练深层网络时会造成梯度消失问题,而AlexNet引入了非饱和的Relu激活函数,有效地缓解了梯度消失问题。
3.2. 解决深度网络的过拟合问题
一方面,近几年来,人们越来越意识到构建庞大的数据集的重要性,于是出现了像ImageNet这样超过1500万张标注图片,2200多种类别的数据集,ILSVRC2012中,AlexNet使用了150万张图片的庞大训练集,使得拥有6000万个参数的AlexNet也没出现严重过拟合问题;
另外,AlexNet在训练时使用了数据增强(data augmentation)策略,相当于进一步扩大了训练数据集;
最后,AlexNet在全连接层部分引入了一个dropout层,同样能有效防止模型出现过拟合。
3.3. 计算能力问题
尽管AlexNet的模型复杂度很大,但其利用了英伟达GPU强大的计算能力,在GPU面前,模型复杂度不是问题。
从模型的设计思路来看,其实AlexNet遵循了LeNet-5的思想,即使用交替的卷积层和池化层用于提取图像的高级语义特征,同时降低特征尺寸。然后使用全连接层/MLP作为分类层。
但是,在细节部分,ALexNet引入了很多新的元素,用于解决以上提到的CNN网络遇到的诸多问题,使得CNN网络开始重新散发光芒。
木木夕-琪
论文名称:Rich feature hierarchies for accurate object detection and semantic segmentation 提出时间:2014年 论文地址: 针对问题: 从Alexnet提出后,作者等人思考如何利用卷积网络来完成检测任务,即输入一张图,实现图上目标的定位(目标在哪)和分类(目标是什么)两个目标,并最终完成了RCNN网络模型。 创新点: RCNN提出时,检测网络的执行思路还是脱胎于分类网络。也就是深度学习部分仅完成输入图像块的分类工作。那么对检测任务来说如何完成目标的定位呢,作者采用的是Selective Search候选区域提取算法,来获得当前输入图上可能包含目标的不同图像块,再将图像块裁剪到固定的尺寸输入CNN网络来进行当前图像块类别的判断。 参考博客: 。 论文题目:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks 提出时间:2014年 论文地址: 针对问题: 该论文讨论了,CNN提取到的特征能够同时用于定位和分类两个任务。也就是在CNN提取到特征以后,在网络后端组织两组卷积或全连接层,一组用于实现定位,输出当前图像上目标的最小外接矩形框坐标,一组用于分类,输出当前图像上目标的类别信息。也是以此为起点,检测网络出现基础主干网络(backbone)+分类头或回归头(定位头)的网络设计模式雏形。 创新点: 在这篇论文中还有两个比较有意思的点,一是作者认为全连接层其实质实现的操作和1x1的卷积是类似的,而且用1x1的卷积核还可以避免FC对输入特征尺寸的限制,那用1x1卷积来替换FC层,是否可行呢?作者在测试时通过将全连接层替换为1x1卷积核证明是可行的;二是提出了offset max-pooling,也就是对池化层输入特征不能整除的情况,通过进行滑动池化并将不同的池化层传递给后续网络层来提高效果。另外作者在论文里提到他的用法是先基于主干网络+分类头训练,然后切换分类头为回归头,再训练回归头的参数,最终完成整个网络的训练。图像的输入作者采用的是直接在输入图上利用卷积核划窗。然后在指定的每个网络层上回归目标的尺度和空间位置。 参考博客: 论文题目:Scalable Object Detection using Deep Neural Networks 提出时间:2014年 论文地址: 针对问题: 既然CNN网络提取的特征可以直接用于检测任务(定位+分类),作者就尝试将目标框(可能包含目标的最小外包矩形框)提取任务放到CNN中进行。也就是直接通过网络完成输入图像上目标的定位工作。 创新点: 本文作者通过将物体检测问题定义为输出多个bounding box的回归问题. 同时每个bounding box会输出关于是否包含目标物体的置信度, 使得模型更加紧凑和高效。先通过聚类获得图像中可能有目标的位置聚类中心,(800个anchor box)然后学习预测不考虑目标类别的二分类网络,背景or前景。用到了多尺度下的检测。 参考博客: 论文题目:DeepBox: Learning Objectness with Convolutional Networks 提出时间:2015年ICCV 论文地址: 主要针对的问题: 本文完成的工作与第三篇类似,都是对目标框提取算法的优化方案,区别是本文首先采用自底而上的方案来提取图像上的疑似目标框,然后再利用CNN网络提取特征对目标框进行是否为前景区域的排序;而第三篇为直接利用CNN网络来回归图像上可能的目标位置。创新点: 本文作者想通过CNN学习输入图像的特征,从而实现对输入网络目标框是否为真实目标的情况进行计算,量化每个输入框的包含目标的可能性值。 参考博客: 论文题目:AttentionNet: AggregatingWeak Directions for Accurate Object Detection 提出时间:2015年ICCV 论文地址: 主要针对的问题: 对检测网络的实现方案进行思考,之前的执行策略是,先确定输入图像中可能包含目标位置的矩形框,再对每个矩形框进行分类和回归从而确定目标的准确位置,参考RCNN。那么能否直接利用回归的思路从图像的四个角点,逐渐得到目标的最小外接矩形框和类别呢? 创新点: 通过从图像的四个角点,逐步迭代的方式,每次计算一个缩小的方向,并缩小指定的距离来使得逐渐逼近目标。作者还提出了针对多目标情况的处理方式。 参考博客: 论文题目:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 提出时间:2014年 论文地址: 针对问题: 如RCNN会将输入的目标图像块处理到同一尺寸再输入进CNN网络,在处理过程中就造成了图像块信息的损失。在实际的场景中,输入网络的目标尺寸很难统一,而网络最后的全连接层又要求输入的特征信息为统一维度的向量。作者就尝试进行不同尺寸CNN网络提取到的特征维度进行统一。创新点: 作者提出的SPPnet中,通过使用特征金字塔池化来使得最后的卷积层输出结果可以统一到全连接层需要的尺寸,在训练的时候,池化的操作还是通过滑动窗口完成的,池化的核宽高及步长通过当前层的特征图的宽高计算得到。原论文中的特征金字塔池化操作图示如下。 参考博客 : 论文题目:Object detection via a multi-region & semantic segmentation-aware CNN model 提出时间:2015年 论文地址: 针对问题: 既然第三篇论文multibox算法提出了可以用CNN来实现输入图像中待检测目标的定位,本文作者就尝试增加一些训练时的方法技巧来提高CNN网络最终的定位精度。创新点: 作者通过对输入网络的region进行一定的处理(通过数据增强,使得网络利用目标周围的上下文信息得到更精准的目标框)来增加网络对目标回归框的精度。具体的处理方式包括:扩大输入目标的标签包围框、取输入目标的标签中包围框的一部分等并对不同区域分别回归位置,使得网络对目标的边界更加敏感。这种操作丰富了输入目标的多样性,从而提高了回归框的精度。 参考博客 : 论文题目:Fast-RCNN 提出时间:2015年 论文地址: 针对问题: RCNN中的CNN每输入一个图像块就要执行一次前向计算,这显然是非常耗时的,那么如何优化这部分呢? 创新点: 作者参考了SPPNet(第六篇论文),在网络中实现了ROIpooling来使得输入的图像块不用裁剪到统一尺寸,从而避免了输入的信息丢失。其次是将整张图输入网络得到特征图,再将原图上用Selective Search算法得到的目标框映射到特征图上,避免了特征的重复提取。 参考博客 : 论文题目:DeepProposal: Hunting Objects by Cascading Deep Convolutional Layers 提出时间:2015年 论文地址: 主要针对的问题: 本文的作者观察到CNN可以提取到很棒的对输入图像进行表征的论文,作者尝试通过实验来对CNN网络不同层所产生的特征的作用和情况进行讨论和解析。 创新点: 作者在不同的激活层上以滑动窗口的方式生成了假设,并表明最终的卷积层可以以较高的查全率找到感兴趣的对象,但是由于特征图的粗糙性,定位性很差。相反,网络的第一层可以更好地定位感兴趣的对象,但召回率降低。 论文题目:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 提出时间:2015年NIPS 论文地址: 主要针对的问题: 由multibox(第三篇)和DeepBox(第四篇)等论文,我们知道,用CNN可以生成目标待检测框,并判定当前框为目标的概率,那能否将该模型整合到目标检测的模型中,从而实现真正输入端为图像,输出为最终检测结果的,全部依赖CNN完成的检测系统呢? 创新点: 将当前输入图目标框提取整合到了检测网络中,依赖一个小的目标框提取网络RPN来替代Selective Search算法,从而实现真正的端到端检测算法。 参考博客 :
美味偏执狂
这是一篇发表于2014年很经典的论文,形成了很多对卷积神经网络的普遍认识,目前的引用数为 1315 ,主要工作是 AlexNet 的可视化,以及在此基础上做了一些分析,对于理解卷积神经网络很有裨益。
可视化方法主要是 通过 deconv 的方法将某一层特征图的 Top-k 激活反向投射到原图像上 ,从而判断该激活值主要识别图像的什么部分。这就要求针对每一层都必须有对应的逆向操作。具体而言,对于 MaxPooling 层,在前馈时使用 switch 变量来记录最大值来源的 index ,然后以此近似得到 Unpooling 。对于 Relu 层,直接使用 Relu 层。而对于 conv层 ,使用 deconv ,即使用原来卷积核的转置作为卷积核(PS:此文作者在2011年提出了 deconvnet 。本文引用了该文献。)。反向重建过程如下图所示:
通过上面的可视化方法,作者对‘AlexNet 的各层的 Top-9`激活值进行了可视化,如下图所示:
分析上述特征图,作者发现了网络特征的层级特性。第二层对应边、角、颜色的识别,而第三层具有更多的不变性,捕获了一些纹理特征。第四层显示了类别的重要差异,比如狗的脸啊,鸟的脚等等。第五层则开始关注目标整体。这形成了对于神经网络的认识,底层网络专注于识别低级特征,更高层网络通过对下层低级特征的组合抽象形成更高级的特征。
作者利用这种可视化方法,找出了原 AlexNet 结构的问题(比如第一层缺少中频信息,第二层由于步长太大导致了一些叠加效应等等)并对结构进行了改变,之后进行了对比,发现改变之后的模型 top-5 性能高于原网络。作者还进行了遮挡敏感性和一致性分析,具体详见论文。
此处的结果是最令我震撼的,它回答了一个久久困扰我的问题:为什么目前用的卷积网络都是 VGG , ZF , ResNet 之类的基于 Imagenet 的网络架构作为 backbone network ?
首先,作者进行了网络结构尺寸调整实验。去除掉包含大部分网络参数最后两个全连接层之后,网络性能下降很少;去掉中间两层卷积层之后,网络性能下降也很少;但是当把上述的全连接层和卷积层都去掉之后,网络性能急剧下降,由此作者得出结论:模型深度对于模型性能很重要,存在一个最小深度,当小于此深度时,模型性能大幅下降。
然后,就是最震撼的结果了。作者使用 AlexNet 去做 Caltech-101 , Caltech-256 和 PASCAL VOC 2012 ,得到以下结果:
解释一下,表中的 Non-pretr 表示没有使用 Imagenet 预训练结果,而是使用新的训练集重新训练,结果表现非常糟糕;而 ImageNet-pretr 表示使用了 Imagenet 的预训练结果,作者固定了原来网络的权值,只是使用新数据训练了 softmax 分类器,效果非常好。这就形成了目前的人们对于卷积神经网络的共识:卷积网络相当于一个特征提取器。特征提取器是通用的,因为 ImageNet 数据量,类别多,所以由 ImageNet 训练出来的特征提取器更具有普遍性。也正是因为此,目前的卷积神经网络的 Backbone Network 基本上都是 Imagenet 上训练出来的网络。那么试想一下,如果继续增加数据量,将类别扩展到10k、100k、 1M等等,是不是能够得到更加通用更好的特征提取器,如此,是不是就能向 General AI 更近一步呢?当然,这样做的话需要大量的投入,那么可不可以像人类基因组计划那样分工合作呢,那样的话,必将是一番很壮丽的景象。另外,也可以从其他角度进行考虑,可以类似于人类的认知方式,采用 人类陪同教导 的方式让机器持续学习,最后再综合起来,或许可以得到更好的AI。
推荐一个很好的交互神经网络可视化网站: 3D convolutional network visualization ,可以很好地帮助理解神经网络的过程。友情提示:
论文发表一般需要的时间如下: 1、普刊即省级国家级一般安排周期是1到3个月。 2、本科学报的安排周期一般为2到4个月。 3、北大核心以上级别期刊的安排周期
上一篇文章中的LeNet-5是第一个广为人知的经典CNN网络,但那是20年前提出的CNN网络,最成功的案例是解决了手写数字识别的问题,当时被广泛应用于邮局/银行
论文中转 : ImageNet Classification with Deep Convolutional Neural Networks 自Le Net-5
论文中转 : ImageNet Classification with Deep Convolutional Neural Networks 自Le Net-5
刊期和出刊时间的区别是什么?刊期就是期刊的出版周期,常见的出版周期打击阿斗非常熟悉,半月刊、月刊、双月刊、季刊等,都是常见的期刊出版周期,出刊时间是一个更为具体