AlexNet、ResNet 到 Mask RCNN

匿名 (未验证) 提交于 2019-12-03 00:18:01

新智元编译

最近,物体识别已经成为计算机视觉和AI最令人激动的领域之一。即时地识别出场景中所有的物体的能力似乎已经不再是秘密。随着卷积神经网络架构的发展,以及大型训练数据集和高级计算技术的支持,计算机现在可以在某些特定设置(例如人脸识别)的任务中超越人类的识别能力。

我感觉每当计算机视觉识别方面有什么惊人的突破发生了,都得有人再讲一遍是怎么回事。这就是我做这个图表的原因。它试图用最简洁的语言和最有吸引力的方式讲述物体识别的现代史。故事开始于2012年AlexNet赢得了ILSVRC(ImageNet大规模视觉识别挑战赛)。信息图由2页组成,第1页总结了重要的概念,第2页则勾画了历史。每一个图解都是重新设计的,以便更加一致和容易理解。所有参考文献都是精挑细选的,以便读者能够知道从哪里找到有关细节的解释。

计算机视觉6大关键技术

图像分类:根据图像的主要内容进行分类。数据集:MNIST,CIFAR,ImageNet物体定位:预测包含主要物体的图像区域,以便识别区域中的物体。数据集:ImageNet物体识别:定位并分类图像中出现的所有物体。这一过程通常包括:划出区域然后对其中的物体进行分类。数据集:PASCAL,COCO语义分割:把图像中的每一个像素分到其所属物体类别,在样例中如人类、绵羊和草地。数据集:PASCAL,COCO实例分割:把图像中的每一个像素分到其物体类别和所属物体实例。数据集:PASCAL,COCO关键点检测:检测物体上一组预定义关键点的位置,例如人体上或者人脸上的关键点。数据集:COCO

关键人物

这种图列出了物体识别技术中的关键人物:J.Schmidhuber;YoshuaBengio;YannLecun;GeoreyHinton;AlexGraves;AlexKrizhevsky;IlyaSutskever;AndrejKarpathy;ChristopherOlah;RossGirshick;MatthewZeiler;RobFergus;KaimingHe;PierreSermanet;ChristianSzegedy;JosephRedmon;ShaoqingRen;WeiLiu;KarenSimonyan;AndrewZisserman;EvanShelhamer;JonathanLong;TrevorDarrell;Springenberg;Mordvintsev;V.Dumoulin;FrancescoVisin;AditDeshpande……

重要的CNN概念

1.特征(图案,神经元的激活,特征探测)

当一个特定的图案(特征)被呈现在输入区(接受域)中时,一个隐藏的神经元就被会被激活。

神经元识别的团可以被进行可视化,其方法是:1)优化其输入区,将神经元的激活(deepdream)最大化;2)将梯度(gradient)可视化或者在其输入像素中,引导神经元激活的梯度(反向传播以及经引导的反向传播)3)将训练数据集中,激活神经元最多的图像区域进行可视化。

2.感受野(特征的输入区)

输入图像区会影响特征的激活。换句话说,它就是特征参考的区域。

通常,越高层上的特征会的接受域会更宽,这能让它能学会捕捉更多的复杂/抽象图案。ConvNet的架构决定了感受野是如何随着层数的改变而改变的。

3.特征地图(featuremap,隐藏层的通道)

指的是一系列的特征,通过在一个滑动窗口(例如,卷积)的方式,在一个输入地图中的不同位置应用相同的特征探测器来创造。在相同的特征地图上的特征,有着一致的可接收形状,并且会寻找不同位置上的相同图案。这构成了ConvNet的空间不变性。

4.特征量(卷积中的隐藏层)

这是一组特征地图,每一张地图会在输入地图中的一些固定位置搜寻特定的特征。所有的特征的接受域大小都是一样的。

5.作为特征量的全连接层

全连接层(fclayers,在识别任务中通常粘附在一个ConvNet的尾端),这一特征量在每一张特征滴入上都有一个特征,其接收域会覆盖整张图像。全连接层中的权重矩阵W可以被转化成一个CNN核。

将一个核wxhxk卷积成一个CNN特征量wxhxd会得到一个1x1xk特征量(=FClayerwithknodes)。将一个1x1xk的过滤核卷积到一个1x1xd特征量,得到一个1x1xk的特征量。通过卷积层替换完全连接的图层可以使ConvNet应用于任意大小的图像。

6.反卷积

这一操作对卷积中的梯度进行反向传播。换句话说,它是卷积层的反向传递。反向的卷积可以作为一个正常的卷积部署,并且在输入特征中不需要任何插入。

左图,红色的输入单元负责上方四个单元的激活(四个彩色的框),进而能从这些输出单元中获得梯度。这一梯度反向传播能够通过反卷积(右图)部署。

7.端到端物体识别管道(端到端学习/系统)

这是一个包含了所有步骤的物体识别管道(预处理、区域建议生成、建议分类、后处理),可以通过优化单个对象函数来进行整体训练。单个对象函数是一个可差分的函数,包含了所有的处理步骤的变量。这种端到端的管道与传统的物体识别管道的完全相反。在这些系统中,我们还不知道某个步骤的变量是如何影响整体的性能的,所以,么一个步骤都必须要独立的训练,或者进行启发式编程。

重要的目标识别概念

1.Boundingboxproposal

提交边界框(Boundingboxproposal,又称兴趣区域,提交区域,提交框)

输入图像上的一个长方形区域,内含需要识别的潜在对象。提交由启发式搜索(对象、选择搜索或区域提交网络RPN)生成。

一个边界框可以由4元素向量表示,或表达为2个角坐标(x0,y0,x1,y1),或表达为一个中心坐标和宽与高(x,y,w,h)。边界框通常会配有一个信心指数,表示其包含对象物体的可能性。

两个边界框的区别一般由它们的向量表示中的L2距离在测量。w和h在计算距离前会先被对数化。

2.IntersectionoverUnion

重叠联合比(IntersectionoverUnion,又称IoU,Jaccard相似度)

两个边界框相似度的度量值=它们的重叠区域除以联合区域

3.非最大抑制(NonMaxiumSuppression,又称NMS)

一个融合重叠边界框(提交或侦测出的)的一般性算法。所有明显和高信度边界框重叠的边界框(IoU>IoU_threshold)都会被抑制(去除)。

4.边界框回归(边界框微调)

观察一个输入区域,我们可以得到一个更适合隐含对象的边界框,即使该对象仅部分可见。下图显示了在只看到一部分对象时,得出真实边界框(groundtruthbox)的可能性。因此,可以训练回归量,来观察输入区域,并预测输入区域框和真实框之间的offset△(x,y,w,h)。如果每个对象类别都有一个回归量,就称为特定类别回归量,否则就称为不可知类别(class-agnostic,一个回归量用于所有类别)。边界框回归量经常伴有边界框分类器(信度评分者),来评估边界框中在对象存在的可信度。分类器既可以是特定类别的,也可以是不可知类别的。如果不定义首要框,输入区域框就扮演首要框的角色。

5.首要框(Priorbox,又称默认框、锚定框)

如果不使用输入区域作为唯一首要框,我们可以训练多个边界框回归量,每一个观测相同的输入区域,但它们各自的首要框不同。每一个回归量学习预测自己的首要框和真实框之间的offset。这样,带有不同首要框的回归量可以学习预测带有不同特性(宽高比,尺寸,位置)的边界框。相对于输入区域,首要框可以被预先定义,或者通过群集学习。适当的框匹配策略对于使训练收敛是至关重要的。

6.框匹配策略

我们不能指望一个边界框回归量可以预测一个离它输入区域或首要框(更常见)太远的对象边界框。因此,我们需要一个框匹配策略,来判断哪一个首要框与真实框相匹配。每一次匹配对回归来说都是一个训练样本。可能的策略有:(多框)匹配每一个带有最高IoU的首要框的真实框;(SSD,FasterRCNN)匹配带有任何IoU高于0.5的真实框的首要框。

7.负样本挖掘(Hardnegativeexamplemining)

对于每个首要框,都有一个边界框分类器来评估其内部含有对象的可能性。框匹配之后,所有其他首要框都为负。如果我们用了所有这些负样本,正负之间本会有明显的不平衡。可能的解决方案是:随机挑选负样本(FasterRCNN),或挑选那些分类器判断错误最严重的样本,这样负和正之间的比例大概是3:1。

重要视觉模型发展:AlexNet→ZFNet→VGGNet→ResNet→MaskRCNN

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

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

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像素。

2013年ZFNet:ZFNet是ILSVRC2013的冠军得主,它实际上就是在AlexNet的基础上做了镜像调整(mirrormodification):在第一个卷积层使用7×7核而非11×11核保留了更多的信息。

SPPNet:SPPNet(SpatialPyramidPoolingNet)本质上是RCNN的升级,SFFNet引入了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和置信度分数在看从整幅图像中抓取的特征。

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

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

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

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

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的都不一样。

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

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

参考文献

转载自http://baijiahao.baidu.com/s?id=1566125622830479&wfr=spider&for=pc
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!