上一节我们介绍了RCNN模型和原理,但是大家也看到它存在诸多缺点,在2015年fast-RCNN诞生了。
RCNN的提出者Ross
Girshick提出了这样的想法,即每个图像只运行一次CNN,然后找到一种在2,000个区域内共享该计算的方法。在Fast
RCNN中,将输入图像馈送到CNN,CNN生成卷积特征映射。使用这些特征图提取候选区域。然后,使用RoI池化层将所有建议的区域重新整形为固定大小,以便将其馈送到全连接网络中。
下面将其分解为简化概念的步骤:
-
首先将图像作为输入;
-
将图像传递给卷积神经网络,生成感兴趣的区域;
-
在所有的感兴趣的区域上应用RoI池化层,并调整区域的尺寸。然后,每个区域被传递到全连接层的网络中;
-
softmax层用于全连接网以输出类别。与softmax层一起,也并行使用线性回归层,以输出预测类的边界框坐标。
因此,Fast RCNN算法中没有使用三个不同的模型,而使用单个模型从区域中提取特征,将它们分成不同的类,并同时返回所标识类的边界框。
对上述过程进行可视化讲解:
将图像传递给卷积神经网络,后者相应地返回感兴趣的区域;
然后,在提取的感兴趣区域上应用RoI池层,以确保所有区域具有相同的大小;
最后,这些区域被传递到一个全连接网络,对其进行分类,并同时使用softmax和线性回归层返回边界框;
上述过程说明了Fast RCNN是如何解决RCNN的两个主要问题,即将每个图像中的1个而不是2,000个区域传递给卷积神经网络,并使用一个模型来实现提取特征、分类和生成边界框。
Fast RCNN的问题
Fast RCNN也存在一定的问题,它仍然使用选择性搜索作为查找感兴趣区域的提议方法,这是一个缓慢且耗时的过程,每个图像检测对象大约需要2秒钟。
因此,又开发了另一种物体检测算法——Faster RCNN。
Faster RCNN的思想
Faster RCNN是Fast RCNN的修改版本,二者之间的主要区别在于,Fast
RCNN使用选择性搜索来生成感兴趣区域,而Faster
RCNN使用“区域提议网络”,即RPN。RPN将图像特征映射作为输入,并生成一组提议对象,每个对象提议都以对象分数作为输出。
以下步骤通常采用Faster RCNN方法:
-
1.将图像作为输入并将其传递给卷积神经网络,后者返回该图像的特征图;
-
2.在这些特征图上应用RPN,返回提议对象及其分数;
-
3.在这些提议对象上应用RoI池化层,以将所有提案降低到相同的大小;
-
4.最后,将提议传递到全连接层,该层在其顶部具有softmax层和线性回归层,以对对象的边界框进行分类和输出;
这里简要解释一下RPN是如何运作的:
首先,Faster RCNN从CNN获取特征图并将它们传递到区域提议网络。RPN在这些特征图上使用滑动窗口,每个窗口生成不同形状和大小的k个方框( Anchor boxes):
方框是固定尺寸的边界箱,具有不同的形状和尺寸。对于每个方框,RPN预测两件事:
-
预测锚是对象的概率;
-
用于边界框回归器调整锚点以更好地适合物体的形状;
在有了不同形状和大小的边界框后,将其传递到RoI池化层。对每个提案并对其进行裁剪,以便每个提案都包含一个对象。这就是RoI池化层所做的事情,它为每个方框提取固定大小的特征图:
然后将这些特征图传递到全连接层,该层具有softmax和线性回归层,最终对对象进行分类并预测已识别对象的边界框。
Faster RCNN的问题
上述讨论过的所有对象检测算法都使用区域来识别对象,且网络不会一次查看完整图像,而是按顺序关注图像的某些部分,这样会带来两个复杂性的问题:
-
该算法需要多次通过单个图像来提取到所有对象;
-
由于不是端到端的算法,不同的系统一个接一个地工作,整体系统的性能进一步取决于先前系统的表现效果。
总结
下表是总结了本文中介绍的所有算法
算法 | 特征 | 预测时间 | 限制 |
---|---|---|---|
CNN | 将图像分成多个区域,将每个区域分类为不同的类别 | - | 需要很多区域来准确预测,因此计算时间长 |
RCNN | 使用选择性搜索生成区域,从每个图像中提取大约2000个区域 | 40-50秒 | 每个区域分别传递给CNN的计算时间也很长,且使用三种不同的模型进行预测 |
Fast RCNN | 每个图像只传递一次到CNN,并提取特征图。在这些地图上使用选择性搜索来生成预测。将RCNN中使用的所有三种模型组合在一起 | 2秒 | 选择性搜索很慢,因此计算时间仍然很长 |
Faster RCNN | 用区域提议网络替换选择性搜索方法,使算法更快 | 0.2秒 | 对象提议需要时间,并且由于不同的系统一个接一个地工作,系统的性能取决于先前系统的表现效果 |
本文转载自云栖社区,文章原标题《A Step-by-Step Introduction to the Basic Object Detection Algorithms (Part 1)》,译者:海棠,审校:Uncle_LLD。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:图像识别之目标检测(2) - Python技术站