卷积神经网络架构及相关神经网络(CV)模型演进

第一部分:经典的卷积神经网络架构图

1、输入图像I(Image)。为了减小复杂度,一般使用灰度图像。当然,也可以使用RGB彩色图像,此时输入图像有三张,分别为RGB分量。输入图像一般需要归一化,如果使用sigmoid激活函数,则归一化到[0, 1],如果使用tanh激活函数,则归一化到[-1, 1]。

2、多个卷积(C)-下采样(S)层(Convolution Layers)。将上一层的输出与本层权重W做卷积得到各个C层,然后下采样得到各个S层。这些层的输出称为Feature Map。

3、光栅化(X)(Rasterization)。是为了与传统的多层感知器全连接。即将上一层的所有Feature Map的每个像素依次展开,排成一列。

4、传统的多层感知器(N&O)(MLP with Softmax)。最后的分类器一般使用Softmax,如果是二分类,当然也可以使用LR。

参考网址(卷积神经网络全面解析):

http://www.moonshile.com/post/juan-ji-shen-jing-wang-luo-quan-mian-jie-xi

https://github.com/Moonshile/CNN

参考资料(卷积特征提取):

http://deeplearning.stanford.edu/wiki/index.php/%E5%8D%B7%E7%A7%AF%E7%89%B9%E5%BE%81%E6%8F%90%E5%8F%96

详解卷积神经网络(CNN)_该BLOG讲解的也不错:

http://blog.csdn.net/qq_25762497/article/details/51052861

第二部分:机器视觉模型发展:

LeNet→AlexNet→ZFNet→VGGNet→ResNet→MaskRCNN

模型一(LeNet):

LeNet5诞生于1994年,由Yann LeCun提出,充分考虑图像的相关性。结构的特点如下:

1、每个卷积层包含三个部分:卷积(Conv)、池化(ave-pooling)、非线性激活函数(sigmoid)

2、MLP作为最终的分类器

3、层与层之间稀疏连接减少计算复杂度

参考网址(LeNet5神经网络简介及TensorFlow实现)_自己用程序跑了一篇,速度很快,精度很高:

http://blog.csdn.net/roguesir/article/details/73770448

 

模型二(AlexNet):

2012年AlexNet:AlexNet基于有着数十年历史的LeNet,它结合了数据增强、ReLU、dropout和GPU实现。它证明了ConvNet的有效性,启动了ConvNet的光荣回归,开创了计算机视觉的新纪元。

注解:现代物体识别随着ConvNets的发展而发展,这一切始于2012年AlexNet以巨大优势赢得ILSVRC2012。请注意,所有的物体识别方法都与ConvNet设计是正交的(任意ConvNet可以与任何对象识别方法相结合)。ConvNets用作通用图像特征提取器。

RCNN:基于区域的ConvNet(RCNN)是启发式区域提案法(heuristicregionproposalmethod)和ConvNet特征提取器的自然结合。从输入图像,使用选择性搜索生成约2000个边界框提案。这些被推出区域被裁剪并扭曲到固定大小的227x227图像。然后,AlexNet为每个弯曲图像提取4096个特征(fc7)。然后训练一个SVM模型,使用4096个特征对该变形图像中的对象进行分类。并使用4096个提取的特征来训练多个类别特定的边界框回归器来改进边界框。

OverFeat:OverFeat使用AlexNet在一个输入图像的多个层次下的多个均匀间隔方形窗口中提取特征。训练一个对象分类器和一个类别不可知盒子回归器,用于对Pool5层(339x339接收域窗口)中每5x5区域的对象进行分类并对边界框进行细化。OverFeat将fc层替换为1x1xN的卷积层,以便能够预测多尺度图像。因为在Pool5中移动一个像素时,接受场移动36像素,所以窗口通常与对象不完全对齐。OverFeat引入了详尽的池化方案:Pool5应用于其输入的每个偏移量,这导致9个Pool5卷。窗口现在只有12像素而不是36像素。

参考资料(神经网络:AlexNet)_这个BOLG将ALexNet原理讲的挺透彻:

http://blog.csdn.net/tinyzhao/article/details/53035944?locationNum=9&fps=1

模型三(ZFNet):

2013年ZFNet:ZFNet是ILSVRC2013的冠军得主,它实际上就是在AlexNet的基础上做了镜像调整(mirrormodification):在第一个卷积层使用7×7核而非11×11核保留了更多的信息。
SPPNet:SPPNet(SpatialPyramidPoolingNet)本质上是RCNN的升级,SPPNet引入了2个重要的概念:适应大小池化(adaptively-sizedpooling,SPP层),以及对特征量只计算一次。实际上,Fast-RCNN也借鉴了这些概念,通过镜像调整提高了RCNN的速度。

SPPNet用选择性搜索在每张图像中生成2000个区域(regionproposal)。然后使用ZFNet-Conv5从整幅图像中抓取一个共同的全体特征量。对于每个被生成的区域,SPPNet都使用spatialpyramidpooling(SPP)将该区域特征从全体特征量中pool出来,生成一个该区域的长度固定的表征。这个表征将被用于训练目标分类器和boxregressor。从全体特征量pooling特征,而不是像RNN那样将所有图像剪切(crops)全部输入一个完整的CNN,SPPNet让速度实现了2个数量级的提升。需要指出,尽管SPP运算是可微分的,但作者并没有那么做,因此ZFNet仅在ImageNet上训练,没有做finetuning。

MultiBox:MultiBox不像是目标识别,更像是一种基于ConvNet的区域生成解决方案。MultiBox让区域生成网络(regionproposalnetwork,RPN)和priorbox的概念流行了起来,证明了卷积神经网络在训练后,可以生成比启发式方法更好的regionproposal。自此以后,启发式方法逐渐被RPN所取代。MultiBox首先将整个数据集中的所有真实boxlocation聚类,找出200个质心(centroid),然后用将其用于priorbox的中心。每幅输入的图像都会被从中心被裁减和重新调整大小,变为220×220。然后,MultiBox使用ALexNet提取4096个特征(fc7)。再加入一个200-sigmoid层预测目标置信度分数,另外还有一个4×200-linear层从每个priorbox预测centreoffset和boxproposal。注意boxregressors和置信度分数在看从整幅图像中抓取的特征。

模型四(VGGNet):

2014年VGGNet:虽然不是ILSVRC冠军,VGGNet仍然是如今最常见的卷积架构之一,这也是因为它简单有效。VGGNet的主要思想是通过堆叠多层小核卷积层,取代大核的卷积层。VGGNet严格使用3×3卷积,步长和padding都为1,还有2×2的步长为2的maxpooling层。

2014年InceptionInception(GoogLeNet)是2014年ILSVRC的冠军。与传统的按顺序堆叠卷积和maxpooling层不同,Inception堆叠的是Inception模块,这些模块包含多个并行的卷积层和许多核的大小不同的maxpooling层。Inception使用1×1卷积层减少特征量输出的深度。目前,Inception有4种版本。

FastRCNNFastRCNN本质上SPPNet,不同的是FastRCNN带有训练好的特征提取网络,用RolPooling取代了SPP层。

YOLO:YOLO(YouOnlyLookOnce)是由MultiBox直接衍生而来的。通过加了一层softmax层,与boxregressor和box分类器层并列,YOLO将原本是区域生成的MultiBox转为目标识别的方法,能够直接预测目标的类型。

参考论文:https://arxiv.org/pdf/1409.1556.pdf 

googLeNet解读:http://blog.csdn.net/shuzfan/article/details/50738394

模型五(ResNet):

2015ResNet:ResNet以令人难以置信的3.6%的错误率(人类水平为5-10%)赢得了2015年ILSVRC比赛。ResNet不是将输入表达式转换为输出表示,而是顺序地堆叠残差块,每个块都计算它想要对其输入的变化(残差),并将其添加到其输入以产生其输出表示。这与boosting有一点关。

FasterRCNN:受Multibox的启发,FasterRCNN用启发式区域生成代替了区域生成网络(RPN)。在FasterRCNN中,PRN是一个很小的卷积网络(3×3conv→1×1conv→1×1conv)在移动窗口中查看conv5_3全体特征量。每个移动窗口都有9个跟其感受野相关的priorbox。PRN会对每个priorbox做boundingboxregression和boxconfidencescoring。通过结合以上三者的loss成为一个共同的全体特征量,整个管道可以被训练。注意,在这里RPN只关注输入的一个小的区域;priorbox掌管中心位置和box的大小,FasterRCNN的box设计跟MultiBox和YOLO的都不一样。

ResNet学习:http://blog.csdn.net/xxy0118/article/details/78324256

模型六(SSD):

2016年SSD:SSD利用FasterRCNN的RPN,直接对每个先前的box内的对象进行分类,而不仅仅是对对象置信度(类似于YOLO)进行分类。通过在不同深度的多个卷积层上运行RPN来改善前一个box分辨率的多样性。

模型七(MaskRCNN):

2017年MaskRCNN:通过增加一支特定类别对象掩码预测,MaskRCNN扩展了面向实例分割的FasterRCNN,与已有的边界框回归量和对象分类器并行。由于RolPool并非设计用于网络输入和输出间的像素到像素对齐,MaskRCNN用RolAlign取代了它。RolAlign使用了双线性插值来计算每个子窗口的输入特征的准确值,而非RolPooling的最大池化法。

第三部分:参考网址

(The Modern History of Object Recognition — Infographic):

The Modern History of Object Recognition — Infographic):

https://nikasa1889.github.io/

计算机视觉识别简史:从 AlexNet、ResNet 到 Mask RCNN (注解:实际来着新智元公众号)

http://www.mobibrw.com/2017/7406

如何得到比AlexNet更简单但是性能更好的网络?

http://blog.csdn.net/yiliang_/article/details/60468330

深度学习常用激活函数之— Sigmoid & ReLU & Softmax

http://blog.csdn.net/leo_xu06/article/details/53708647

RELU 激活函数及其他相关的函数

http://blog.csdn.net/u013146742/article/details/51986575

ReLU激活函数:简单之美

http://blog.csdn.net/cherrylvlei/article/details/53149381

神经网络之激活函数(Activation Function)

http://blog.csdn.net/memray/article/details/51442059

几种常见的激活函数

http://blog.csdn.net/u014365862/article/details/52710698

sigmoid和softmax总结

http://blog.csdn.net/u014422406/article/details/52805924

Deep learning:四十五(maxout简单理解)

http://www.cnblogs.com/tornadomeet/p/3428843.html

卷积:如何成为一个很厉害的神经网络

https://zhuanlan.zhihu.com/p/25754846

卷积神经网络的卷积核大小、卷积层数、每层map个数都是如何确定下来的呢?

https://www.zhihu.com/question/38098038

深度学习之卷积和池化

https://www.cnblogs.com/believe-in-me/p/6645402.html

CS231n Convolutional Neural Networks for Visual Recognition

http://cs231n.github.io/convolutional-networks/

详解卷积神经网络(CNN)

http://blog.csdn.net/qq_25762497/article/details/51052861

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: