深度学习目标检测模型发展过程:R-CNN Fast R-CNN Faster R-CNN R-FCN

来源:互联网 发布:乾隆自恋知乎 编辑:程序博客网 时间:2024/05/17 02:58

一 R-CNN 模型

如果要拟人化比喻,那 R-CNN 肯定是 Faster R-CNN 的祖父了。换句话说,R-CNN 是一切的开端。

R-CNN,或称 Region-based Convolutional Neural Network,其工作步骤如下:

1.借助一个可以生成约 2000 个 region proposal 的「选择性搜索」(Selective Search)算法,R-CNN 可以对输入图像进行扫描,来获取可能出现的目标。
2.在每个 region proposal 上都运行一个卷积神经网络(CNN)。
3.将每个 CNN 的输出都输入进:
a)一个支持向量机(SVM),以对上述区域进行分类。
b)一个线性回归器,以收缩目标周围的边界框,前提是这样的目标存在。

下图具体描绘了上述 3 个步骤,结构示意图
这里写图片描述
换句话说,首先,我们给出一些建议区域,然后,从中提取出特征,之后,再根据这些特征来对这些区域进行分类。本质而言,我们将目标检测转化成了图像分类问题。R-CNN 模型虽然非常直观,但是速度很慢。

二 Fast R-CNN

直接承接 R-CNN 的是 Fast R-CNN。Fast R-CNN 在很多方面与 R-CNN 类似,但是,凭借两项主要的增强手段,其检测速度较 R-CNN 有所提高:

在推荐区域之前,先对图像执行特征提取工作,通过这种办法,后面只用对整个图像使用一个 CNN(之前的 R-CNN 网络需要在 2000 个重叠的区域上分别运行 2000 个 CNN)。将支持向量机替换成了一个 softmax 层,这种变化并没有创建新的模型,而是将神经网络进行了扩展以用于预测工作。

Fast R-CNN 模型结构示意图
这里写图片描述
如图所见,现在我们基于网络最后的特征图(而非原始图像)创建了 region proposals。因此,我们对整幅图只用训练一个 CNN 就可以了。此外,我们使用了一个 softmax 层来直接输出类(class)的概率,而不是像之前一样训练很多不同的 SVM 去对每个目标类(object class)进行分类。现在,我们只用训练一个神经网络,而之前我们需要训练一个神经网络以及很多 SVM。就速度而言,Fast R-CNN 提升了许多。

然而,存在一大未解决的瓶颈:用于生成 region proposal 的选择搜索算法(selective search algorithm)。

三 FASTER R-CNN

到现在为止,我们完成了对 Faster R-CNN 两大早期模型的溯源。下面我们开始研究 Faster R-CNN。Faster R-CNN 的主要创新是,它用一个快速神经网络代替了之前慢速的选择搜索算法(selective search algorithm)。具体而言,它引入了一个 region proposal 网络(RPN)。

RPN 工作原理
1.在最后卷积得到的特征图上,使用一个 3x3 的窗口在特征图上滑动,然后将其映射到一个更低的维度上(如 256 维),
2.在每个滑动窗口的位置上,RPN 都可以基于 k 个固定比例的 anchor box(默认的边界框)生成多个可能的区域。
3,。每个 region proposal 都由两部分组成:a)该区域的 objectness 分数。b)4 个表征该区域边界框的坐标。

换句话说,我们会观察我们最后特征图上的每个位置,然后关注围绕它的 k 个不同的 anchor box:一个高的框、一个宽的框、一个大的框等等。对于每个这些框,不管我们是否认为它包含一个目标,以及不管这个框里的坐标是什么,我们都会进行输出。下图展示了在单个滑动框位置上发生的操作:
这里写图片描述
图中 2k 分数代表了 k 中每一个边界框正好覆盖「目标」的 softmax 概率。这里注意到,尽管 RPN 输出了边界框的坐标,然而它并不会去对任何可能的目标进行分类:它惟一的工作仍然是给出对象区域。如果一个 anchor box 在特定阈值之上存在一个「objectness」分数,那么这个边界框的坐标就会作为一个 region proposal 被向前传递。

一旦我们有了 region proposal,我们就直接把他们输入一个本质上是 Fast R-CNN 的模型。我们再添加一个池化层、一些全连接层以及最后,一个 softmax 分类层和边界框回归器(bounding box regressor)。所以在某种意义上,Faster R-CNN=RPN+Fast R-CNN。

这里写图片描述
总体而言,Faster R-CNN 较 Fast R-CNN 在速度上有了大幅提升,而且其精确性也达到了最尖端的水平。值得一提的是,尽管未来的模型能够在检测速度上有所提升,但是几乎没有模型的表现能显著超越 Faster R-CNN。换句话说,Faster R-CNN 也许不是目标检测最简单、最快的方法,但是其表现还是目前最佳的。例如,Tensorflow 应用 Inception ResNet 打造的 Faster R-CNN 就是他们速度最慢,但却最精准的模型。

也许 Faster R-CNN 看起来可能会非常复杂,但是它的核心设计还是与最初的 R-CNN 一致:先假设对象区域,然后对其进行分类。目前,这是很多目标检测模型使用的主要思路,包括我们接下来将要提到的这个模型。

四 R-FCN

还记得 Fast R-CNN 是如何通过在所有 region proposal 上共享同一个 CNN,来改善检测速度的吗?这也是设计 R-FCN 的一个动机:通过最大化共享计算来提升速度。

R-FCN,或称 Region-based Fully Convolutional Net(基于区域的全卷积网络),可以在每个输出之间完全共享计算。作为全卷积网络,它在模型设计过程中遇到了一个特殊的问题。

一方面,当对一个目标进行分类任务时,我们希望学到模型中的位置不变性(location invariance):无论这只猫出现在图中的哪个位置,我们都想将它分类成一只猫。另一方面,当进行目标检测任务时,我们希望学习到位置可变性(location variance):如果这只猫在左上角,那么我们希望在图像左上角这个位置画一个框。所以,问题出现了,如果想在网络中 100% 共享卷积计算的话,我们应该如何在位置不变性(location invariance)和位置可变性(location variance)之间做出权衡呢?

R-FCN 的解决方案:位置敏感分数图

每个位置敏感分数图都代表了一个目标类(object class)的一个相关位置。例如,只要是在图像右上角检测到一只猫,就会激活一个分数图(score map)。而当系统看见左下角出现一辆车时,另一个分数图也将会被激活。本质上来讲,这些分数图都是卷积特征图,它们被训练来识别每个目标的特定部位。

以下是 R-FCN 的工作方式

1、在输入图像上运行一个 CNN(本例中使用的是 ResNet)。
2、添加一个全卷积层,以生成位置敏感分数图的 score bank。这里应该有 k²(C+1) 个分数图,其中,k²代表切分一个目标的相关位置的数量(比如,3²代表一个 3x3 的空间网格),C+1 代表 C 个类外加一个背景。
3、运行一个全卷积 region proposal 网络(RPN),以生成感兴趣区域(regions of interest,RoI)。
4、对于每个 RoI,我们都将其切分成同样的 k²个子区域,然后将这些子区域作为分数图。
5、对每个子区域,我们检查其 score bank,以判断这个子区域是否匹配具体目标的对应位置。比如,如果我们处在「上-左」子区域,那我们就会获取与这个目标「上-左」子区域对应的分数图,并且在感兴趣区域(RoI region)里对那些值取平均。对每个类我们都要进行这个过程。
6、一旦每个 k²子区域都具备每个类的「目标匹配」值,那么我们就可以对这些子区域求平均值,得到每个类的分数。
7、通过对剩下 C+1 个维度向量进行 softmax 回归,来对 RoI 进行分类。

下面是 R-FCN 的示意图,用 RPN 生成 RoI:

这里写图片描述
当然,即便有上述文字以及图片的解释,你可能仍然不太明白这个模型的工作方式。老实说,当你可以实际看到 R-FCN 的工作过程时,你会发现理解起来会更加简单。下面就是一个在实践中应用的 R-FCN,它正在从图中检测一个婴儿:
这里写图片描述
我们只用简单地让 R-FCN 去处理每个 region proposal,然后将其切分成子区域,在子区域上反复询问系统:「这看起来像是婴儿的『上-左』部分吗?」,「这看起来像是婴儿的『上-中』部分吗?」,「这看起来像是婴儿的『上-右』部分吗?」等等。系统会对所有类重复这个过程。如果有足够的子区域表示「是的,我的确匹配婴儿的这个部分!」那么 RoI 就会通过对所有类进行 softmax 回归的方式被分类成一个婴儿。」

借助这种设置,R-FCN 便能同时处理位置可变性(location variance)与位置不变性(location invariance)。它给出不同的目标区域来处理位置可变性,让每个 region proposal 都参考同一个分数图 score bank 来处理位置不变形。这些分数图应该去学习将一只猫分类成猫,而不用管这只猫在在那个位置。最好的是,由于它是全卷积的,所以这意味着网络中所有的计算都是共享的。

因此,R-FCN 比 Faster R-CNN 快了好几倍,并且可以达到类似的准确率。

五 结论

Faster R-CNN、R-FCN是目前最优且应用最广泛的目标检测模型。其他流行的模型通常与这三者类似,都依赖于深度 CNN(如 ResNet、Inception 等)来进行网络初始化,且大部分遵循同样的 proposal/分类 pipeline。

参考
http://www.99lt.com/ai/deep-learning/27282.html

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 逐浪傲视天地 新傲视天地攻略 傲视天地手机版 傲视天地辅助 要玩傲视天地 傲世天地手机版 傲世天下 傲世天地 傲娇妈咪带球跑 傲娇萌君你别跑 傲娇萌君你别跑txt下载 起亚傲跑kx3 起亚kx3傲跑价格 起亚傲跑图片 kx3傲跑 起亚傲跑 起亚傲跑价格 起亚kx3傲跑 起亚kx3怎么样值得买不买 悦达起亚kx3价格 起亚kx kx3起亚价格 悦达起亚kx3 悦达起亚kx3报价及图片 东风悦达起亚kx3 起亚kx3图片及报价 东风起亚kx5 起亚kx3仪表盘说明书 起亚kx3垃圾车 起亚kx3报价 起亚kx3怎么样 kx3 起亚kx3报价及图片 东风悦达起亚kx5 东风起亚kx3 起亚kx3油耗 起亚kx3买了就后悔 起亚kx3论坛 东风起亚kx3报价和图片 suv起亚 起亚ks3