R-CNN、fast R-CNN、faster R-CNN 和 YOLO 中哪个最适合对象定位

Which is best for object localization among R-CNN, fast R-CNN, faster R-CNN and YOLO

R-CNN、fast R-CNN、faster R-CNN 和 YOLO 在以下方面有何区别: (1) 同一图像集上的精度 (2) 给定SAME IMAGE SIZE,运行次 (3) 支持android移植

考虑到这三个标准,哪个是最好的对象定位技术?

如果您对这些算法感兴趣,您应该查看本课,其中介绍了您命名的算法:https://www.youtube.com/watch?v=GxZrEKZfW2o

PS: 没记错的话还有个Fast YOLO哈哈!

R-CNN 是所有提到的算法的 daddy-algorithm,它确实为研究人员提供了在其之上构建更复杂和更好的算法的途径。

R-CNN,或Region-based卷积神经网络

R-CNN 包含 3 个简单的步骤:

  • 使用称为选择性搜索的算法扫描输入图像以查找可能的对象,生成约 2000 个区域建议
  • 运行 在每个区域提案之上的卷积神经网络 (CNN)
  • 获取每个 CNN 的输出并将其输入 a) SVM 以对区域进行分类和 b) 线性回归器以收紧对象的边界框(如果存在这样的对象)。

快 R-CNN:

快速R-CNN紧接着R-CNN。快R-CNN更快更好是凭借以下几点:

  • 在提出区域之前对图像执行特征提取,因此只运行在整个图像上使用一个 CNN,而不是 2000 个 CNN 超过 2000 个重叠区域
  • 用 softmax 层替换 SVM,从而扩展神经网络进行预测而不是创建新模型

从直觉上讲,删除 2000 个卷积层,取而代之的是进行一次卷积并在其上制作框。

更快R-CNN:

Fast R-CNN 的缺点之一是缓慢的选择性搜索算法,而 Faster R-CNN 引入了一种称为区域提议网络 (RPN) 的东西。

RPN 的工作原理如下:

在初始 CNN 的最后一层,3x3 滑动 window 在特征图上移动并将其映射到较低维度(例如 256-d) 对于每个 sliding-window 位置,它根据 k fixed-ratio 个锚框(默认边界框)

生成多个可能的区域

每个区域提案包括:

  • 该区域的“客观性”分数和
  • 代表区域边界框的4个坐标

换句话说,我们查看最后一个特征图中的每个位置,并考虑以它为中心的 k 个不同框:一个高框、一个宽框、一个大框等。对于这些框中的每一个,我们输出我们是否认为它包含一个对象,以及该框的坐标是什么。这是在一个滑动 window 位置的样子:

这 2k 个分数表示 k 个边界框中的每一个在“对象”上的 softmax 概率。请注意,尽管 RPN 输出边界框坐标,但它不会尝试对任何潜在对象进行分类:它唯一的工作仍然是提出对象区域。如果锚框的“客观性”分数高于某个阈值,则该框的坐标将作为区域提案向前传递。

一旦我们有了区域提案,我们就会将它们直接输入到本质上是快速的 R-CNN 中。我们添加了一个池化层,一些 fully-connected 层,最后是一个 softmax 分类层和边界框回归器。从某种意义上说,Faster R-CNN = RPN + Fast R-CNN.

YOLO:

YOLO 使用单个 CNN 网络进行分类并使用边界框定位对象。这是 YOLO 的架构:

最后你将得到一个形状为 1470 的张量,即 7*7*30,CNN 输出的结构将是:

1470向量输出分为三部分,分别给出概率、置信度和框坐标。这三个部分中的每一个也进一步分为 49 个小区域,对应于形成原始图像的 49 个单元格的预测。

在后处理步骤中,我们将网络输出的这 1470 个向量生成概率高于某个阈值的框。


我希望你能了解这些网络,回答你关于这些网络的性能有何不同的问题:

  • 在同一数据集上:'You can be sure that the performance of these networks are in the order they are mentioned, with YOLO being the best and R-CNN being the worst'
  • 给定相同的图像大小,运行 时间:更快 R-CNN 实现了更好的速度和 state-of-the-art 的准确性。值得注意的是,尽管未来的模型在提高检测速度方面做了很多工作,但很少有模型能够以显着优势超越 Faster R-CNN。 Faster R-CNN 可能不是最简单或最快的对象检测方法,但它仍然是性能最好的方法之一。然而,研究人员已经使用 YOLO 进行视频分割,并且在视频分割方面是迄今为止最好和最快的。

  • 支持 android 移植:据我所知,Tensorflow 有一些 android API 可以移植到 android 但我不确定这些是如何实现的网络将执行,甚至您是否能够移植它。这再次受到硬件和 data_size 的影响。能否请您提供硬件和他的尺寸,以便我能够清楚地回答。

@A_Piro 标记的 youtube 视频也给出了很好的解释。

P.S。我从Joyce Xu Medium博客借了很多material

我经常使用 YOLO 和 FRCNN。对我来说,YOLO 具有最好的准确性和速度,但如果你想研究图像处理,我会建议 FRCNN,因为许多以前的工作都是用它完成的,并且做研究你真的想要保持一致。

对于对象检测,我正在尝试 SSD+ Mobilenet。它在准确性和速度之间取得了平衡,因此它也可以以良好的 fps 轻松移植到 android 设备。

与更快的 rcnn 相比,它的准确性较低,但比其他算法更快。

它对 android 移植也有很好的支持。