使用R-CNN进行物体检测?

Sha*_*ana 4 computer-vision face-detection deep-learning tensorflow

R-CNN究竟做了什么?是否就像使用CNN提取的功能来检测指定窗口区域中的类一样?这是否有任何tensorflow实现?

Abh*_*mar 6

R-CNN是所有提到的算法的爸爸算法,它确实为研究人员提供了在其上构建更复杂和更好的算法的途径.我试图解释R-CNN及其他变种.

R-CNN,或基于区域的卷积神经网络

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

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

R-CNN的图片描述

快速R-CNN:

快速R-CNN立即跟随R-CNN.快速R-CNN凭借以下几点更快更好:

  • 提议区域,从而仅在2000重叠的区域中运行的一个CNN在整个图像上,而不是2000 CNN的前执行特征提取在图像
  • 用softmax层替换SVM,从而扩展神经网络以进行预测,而不是创建新模型.

快速R-CNN的图形描述

直观地说,删除2000转换层是很有意义的,而是采取一次卷积并在其上制作盒子.

更快的R-CNN:

快速R-CNN的缺点之一是选择性搜索速度慢,而快速R-CNN引入了称为区域提议网络(RPN)的东西.

这是RPN的工作原理:

在初始CNN的最后一层,3x3滑动窗口在特征地图上移动并将其映射到较低维度(例如256-d).对于每个滑动窗口位置,它基于k个固定比率锚点生成多个可能的区域框(默认边界框)

每个地区的提案包括:

  • 该区域的"对象性"得分
  • 表示区域边界框的4个坐标换句话说,我们查看最后一个要素图中的每个位置,并考虑以它为中心的k个不同的框:高框,宽框,大框等.

对于每个框,我们输出我们是否认为它包含一个对象,以及该框的坐标是什么.这是一个滑动窗口位置的样子:

区域提案网络

2k分数表示每个k个边界框在"对象"上的softmax概率.请注意,虽然RPN输出边界框坐标,但它不会尝试对任何潜在对象进行分类:它的唯一工作仍然是提出对象区域.如果锚箱的"对象性"得分高于某个阈值,则该框的坐标将作为区域提议传递.

一旦我们获得了我们的区域提案,我们就会直接将它们提供给基本上是快速R-CNN的内容.我们添加了一个池化层,一些完全连接的层,最后是一个softmax分类层和边界框回归器.从某种意义上说,更快的R-CNN = RPN +快速R-CNN.

更快的R-CNN

链接一些Tensorflow实现:

https://github.com/smallcorgi/Faster-RCNN_TF

https://github.com/CharlesShang/FastMaskRCNN

你可以找到很多Github的实现.

PS我从Joyce Xu Medium博客那里借了很多资料.


Ami*_*ani 5

R-CNN使用以下算法:

  1. 获取对象检测的区域提议(使用选择性搜索).
  2. 对于每个区域,从图像中裁剪区域并通过CNN对其进行分类,该CNN对对象进行分类.

还有更高级的算法,如快速R-CNN和更快的R-CNN.

快速-R-CNN:

  1. 通过CNN运行整个图像
  2. 对于来自区域的每个区域,提议使用"roi轮询"层提取区域,然后对对象进行分类.

更快的R-CNN:

  1. 通过CNN运行整个图像
  2. 使用CNN检测到的功能使用对象提议网络查找区域提议.
  3. 对于每个对象提议,使用"roi polling"图层提取区域,然后对对象进行分类.

张量流中有很多植入专门用于更快的R-CNN,这是最近的变种只是谷歌更快的R-CNN张量流.

祝好运

  • Faster-rcnn自动提取区域提案.https://github.com/endernewton/tf-faster-rcnn是tensorflow实现. (2认同)