深度学习和目标检测系列教程 5-300:早期的目标检测RCNN架构
Posted 刘润森!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习和目标检测系列教程 5-300:早期的目标检测RCNN架构相关的知识,希望对你有一定的参考价值。
@Author:Runsen
最早期的目标检测基于RCNN的算法,下面介绍RCNN的架构
RCNN架构
R-CNN 的目标是获取图像,并正确识别图片中的主要对象(通过边界框)的位置。
- 输入:图像;
- 输出:图像中每个对象的边界框和标签。
R-CNN检测系统由三个模块组成。
- 第一个生成与类别无关的区域候选框。这些候选框识别图像中存在的候选检测集。
- 第二个模块是一个深度卷积神经网络,从每个区域提取一个特征向量。
- 第三个模块是一组特定于类的分类器,即线性 SVM。
R-CNN 也做了我们可能直觉上做的事情——在图像中提出一堆框,看看它们中是否有任何一个对应于一个对象。R-CNN 使用称为Selective Search的过程创建这些边界框或区域提议 。
在高层次上,选择性搜索(如下图 所示)通过不同大小的窗口查看图像,并针对每种大小尝试按纹理、颜色或强度对相邻像素进行分组以识别对象。
候选框一经创建,R-CNN 就将该区域封闭为标准正方形大小,并将其传递给 AlexNet 的修改版本。在 CNN 的最后一层,R-CNN 添加了一个支持向量机 (SVM),可以对这是否是一个对象以及如果是什么对象进行分类。这是上图中的第 4 步。
- AlexNet是卷积神经网络 (CNN) 架构的名称,由 Alex Krizhevsky 与 Ilya Sutskever 和 Geoffrey Hinton 合作设计
改进边界框
在盒子中创建物体后,我们可以收紧盒子以使物体适合其真实尺寸。这是R-CNN的最后一步。R-CNN 对区域提议运行简单的线性回归以生成边界框坐标以获得最终结果。这个回归模型的输入和输出是:
- 输入:与对象对应的图像子区域。
- 输出:子区域中对象的新边界框坐标。
所以,总而言之,R-CNN 是以下步骤:
- 为边界框生成一组区域候选框。
- 通过预训练的 AlexNet 和 SVM 运行边界框中的图像,以查看框中的图像是什么对象。
- 一旦对象被分类,通过线性回归模型运行框以输出更紧密的框坐标。
RCNN训练网络所需的时间非常长,因为网络必须对每张图像 2000 个区域提议进行分类。它无法实时实现,因为每个测试图像需要大约 47 秒。特定的搜索算法是固定算法。因此,在那个阶段没有发生任何学习。这会导致产生不良区域的建议。
下面是RCNN架构实现的具体代码:
- Tensorflow : https://github.com/rbgirshick/rcnn
- Keras : https://github.com/broadinstitute/keras-rcnn
Result
R-CNN 提供了最先进的结果。以前的系统是复杂的集成,将多个低级图像特征与来自对象检测器和场景分类器的高级上下文相结合。R-CNN 提出了一种简单且可扩展的对象检测算法,与之前在 ILSVRC2013 上的最佳结果相比,相对提高了 30%。
R-CNN 通过两个见解实现了这一性能。
- 首先是将大容量卷积神经网络应用于自下而上的区域建议以定位和分割对象。
- 第二种是在训练数据标签稀缺时训练大型 CNN。
R-CNN 结果表明,在监督下预训练网络非常有用。
以上是关于深度学习和目标检测系列教程 5-300:早期的目标检测RCNN架构的主要内容,如果未能解决你的问题,请参考以下文章
深度学习和目标检测系列教程 4-300:目标检测入门之目标变量和损失函数
深度学习和目标检测系列教程 1-300:什么是对象检测和常见的8 种基础目标检测算法
深度学习和目标检测系列教程 19-300:关于目标检测APIoU和mAP简介
深度学习和目标检测系列教程 19-300:关于目标检测APIoU和mAP简介