但是我们如何确定这些边界框的大小和位置呢?R-CNN网络通过以下操作完成了一个我们直观上可以完成的任务:在图像中提出了多个边框,并判断这其中的任何一个是否对应着一个具体对象。
图6:通过多种尺寸的边框进行选择性搜索,查找具有相同的纹理、颜色或强度的相邻像素。 R-CNN网络使用了选择性搜索的方法,来创建这些边界框或区域建议(region proposal)。在图6中,选择性搜索通过不同大小的边框分析图像,并且对于每个图像块,尝试通过纹理、颜色或强度将相邻像素组合在一起,以识别对象。 想深入了解选择性搜索,请阅读:
图7:在创建一组区域建议后,R-CNN网络会将每个图像块传递给一种改进版的AlexNet网络,确定这些图像块是否为有效区域。 创建了区域建议后,R-CNN网络将该区域块变形标准的方形,并将其输入到改进版的AlexNet网络,具体步骤如图7所示。AlexNet是在ImageNet 2012比赛中的最优网络,R-CNN灵感就来源于它。 在CNN的输出层,R-CNN网络还应用了支持向量机(SVM)的方法,它能够判断该图像是否为对象,以及是什么对象。 改善边界框 现在,我们已经能在边界框中找到对象,但是还能缩小边界框来适应对象的真实尺寸吗?可以的,这就是构建R-CNN网络的最后一个步骤。R-CNN网络对区域建议进行简单的线性回归操作,来获得更贴近的边界框坐标,获得了R-CNN网络的最终输出结果。回归模型的输入和输出分别为: 输入:与对象相对应的图像子区域。 输出:子区域中对象的新边界框坐标。 所以,R-CNN网络总结为以下几个步骤: 1. 为边界框生成一组区域建议; 2.通过预先训练好的AlexNet网络来判断边框中的图像是否为有效区域,最后通过支持向量机算法来确定边框中的图像类别; 3.在确定边框图像的类别后,应用线性回归模型,来输出更紧密的边框坐标。 2015年:Fast R-CNN - 加速并简化R-CNN 图8:Ross Girshick发明了R-CNN和Fast R-CNN,并继续推动着Facebook Research计算机视觉技术的发展。 R-CNN网络的性能很好,但是实际上训练起来很慢,有以下几个原因: 1.单个图像的每个区域建议都需要利用AlexNet网络进行判断,每次判断大约需要2000次前向传播。 2.此网络必须单独训练三种不同的模型:提取图像特征的CNN网络,判断类别的分类器和缩小边框的回归模型。这样子很难训练这些网络。 2015年,R-CNN网络的第一作者Ross Girshick解决了这两个问题,发明了新的网络Fast R-CNN。现在我们来了解Fast R-CNN网络的主要创新点。 创新点1:引入感兴趣区域池化(ROI Pooling) 在CNN的前向传递过程中,Girshick意识到,每个图像的多个区域总是互相重叠,atv,导致我们多次运行相同的CNN计算,多达2000次。他的创新很简单:可不可以对每个图像只运行一次CNN运算,然后在2000次前向传播过程中找到一种共享这个计算结果的方法?
图9:在RoIPool层中,创建每个图像完整的前向传播过程,并从获得的前向传播过程中提取每个感兴趣区域的转换特征。 这正是Fast R-CNN网络用感兴趣区域池化(RoIPool,Region of Interest Pooling)技术所做的创新。其创新点在于,RoIPool层共享了CNN网络在图像子区域中的前向传播过程。在图9中,是从CNN的特征图谱中选择相应的区域来获取每个区域的CNN抽象特征。然后,通常使用最大池化操作来合并每个区域中的初级抽象特征。所以我们只进行了原始图像的一次前向传播操作,而不是2000次。 创新点2:将所有模型整合到一个网络中
图10:Fast R-CNN将卷积神经网络、分类器和缩小边框的回归模型整合成一个单输入双输出的网络。 (责任编辑:本港台直播) |