Fast R-CNN的第二个创新点是在一个模型中联合训练卷积神经网络、分类器和边界框回归模型。在R-CNN中,我们使用了卷积神经网络来提取图像特征,用支持向量机来分类对象和用了回归模型来缩小边界框,但是Fast R-CNN使用单个网络模型来实现以上三个功能。 图10是Fast R-CNN网络的过程示意图。Fast R-CNN在CNN输出层用softmax函数代替了SVM分类器,来输出对象类别。同时在CNN输出层,还加入了用来输出边界框坐标的线性回归层。这样单个网络就可以输出所需信息。 整个模型的输入和输出分别为: 输入:带多个区域建议的图像。 输出:具有更紧密边界框的每个区域的对象类别。 2016年:Faster R-CNN - 加快区域建议 即使Fast R-CNN的性能有了很大的改善,但是仍然存在一个短板——区域建议生成方式(region proposer)。在上面已经提到,为了检测图像中对象位置,第一步是要产生一系列随机多尺度的边界框或是待测试的感兴趣区域。在Fast R-CNN中,通过选择性搜索方法创建这些区域,这是一个相当缓慢的过程,被认为是整个流程的短板。
图11:微软研究院首席研究员孙剑是Faster R-CNN网络团队的领导者。 在2015年中期,由任少卿,何恺明,Ross Girshick和孙剑组成的一个微软研究院团队发现了一种叫做“Faster R-CNN”的网络结构,几乎把边框生成过程的运算量降为0。 Faster R-CNN的创新点在于,区域建议取决于通过CNN里的第一个卷积层前进传播过程中的图像特征。那为什么不对单独运行选择性搜索算法的方式进行改变,重复利用多个区域建议中相同的CNN结果呢?
图12:在Faster R-CNN中,单个CNN网络用来实现区域建议和对象分类。 这正是Faster R-CNN团队所取得的成果。图12中解释了该如何使用单个CNN网络来实现区域建议和对象分类。这样,只需要训练一个CNN网络,我们几乎不花费计算量获得了所需的区域建议。作者在文章中写道: 我们观察到,Fast R- CNN网络里区域检测器所使用的卷积特征图谱,也可用于生成区域建议,从而把区域建议的运算量几乎降为0。 该模型的输入和输出分别为: 输入:图像(不需要带有区域建议)。 输出:图像中对象的类别和边界框坐标。 如何生成区域 接下来我们来看下Faster R-CNN如何从CNN特征中生成这些区域建议。Faster R-CNN在CNN特征的顶部添加了一个完全卷积网络(FCN),创建了所谓的区域建议网络(Region Proposal Network)。
图13:区域建议网络在CNN特征图谱上依次滑动一个窗口。在每个窗口位置上,网络在每个锚点上输出一个分值和一个边界框。因此,一共有4k个边界框坐标,其中k是锚点的数量。 区域建议网络通过在CNN特征图谱上依次滑动窗口,并在每个窗口中输出k个可能的边界框和分值,来评估这些边界框包含对象的可能性。这k个边框代表了什么? 图14:一般来说,带有人物形象的边框往往是竖长的矩形。我们可以使用这种常理,通过创建这样维度的位置,来指导生成区域建议网络。 直观上,我们知道图像中的对象应该符合某些常见的纵横比和大小。例如,我们想要创建一些适合人类形状的矩形框。这样当遇到非常窄的边界框时可以排除是人类对象的可能性。以这种方式,我们创建大小为k的通用长宽比,称为锚点盒(anchor box)。对于每个这样的锚点盒,我们对应输出一个边界框坐标和每个位置的分值。 考虑到这些锚点盒,这个区域建议网络的输入和输出分别为: 输入:CNN特征图谱。 输出:每个锚点的边界框。该边界框中的图像作为对象的可能性用输出分值表示。 然后,我们只将每个可能是目标对象的边界框传递到Fast R-CNN中,以实现对象分类和缩紧边界框。 2017年:Mask R-CNN - 扩展Faster R-CNN用于像素级分割 图15:具体的图像分割目标是在像素级场景中识别不同对象的类别。 到目前为止,我们已经了解到如何能够以许多有趣的方式使用CNN特征,来有效地用边界框定位图像中的不同对象。 (责任编辑:本港台直播) |