自己做儿童衣服教程的网站,wordpress镜像,哈尔滨房管局官网查询,wordpress在线课程主题一、说明 随着自动驾驶汽车、智能视频监控、面部检测和各种人数统计应用的兴起#xff0c;对快速准确的物体检测系统的需求也在不断增长。这些系统不仅涉及识别和分类图像中的每个对象#xff0c;还涉及通过在图像周围绘制适当的边界框来定位每个对象。这使得对象检测比其传统… 一、说明 随着自动驾驶汽车、智能视频监控、面部检测和各种人数统计应用的兴起对快速准确的物体检测系统的需求也在不断增长。这些系统不仅涉及识别和分类图像中的每个对象还涉及通过在图像周围绘制适当的边界框来定位每个对象。这使得对象检测比其传统的计算机视觉前身图像分类更难完成。 然而幸运的是目前最成功的对象检测方法是图像分类模型的扩展。几个月前谷歌发布了一个新的Tensorflow对象检测API。此版本附带了一些特定模型的预构建架构和权重 带移动网络的单次多盒探测器 SSD带有 Inception V2 的固态硬盘采用 Resnet 101 的基于区域的全卷积网络 R-FCN更快的RCNN与Resnet 101更快的RCNN与Inception Resnet v2 在我的上一篇博客文章中我介绍了上面列出的三种基本网络架构背后的直觉MobileNetsInception和ResNet。这一次我想对Tensorflow的对象检测模型做同样的事情更快的R-CNNR-FCN和SSD。在这篇文章的最后我们希望已经了解深度学习如何应用于对象检测以及这些对象检测模型如何相互启发和发散。 二、更快的 R-CNN Faster R-CNN现在是基于深度学习的对象检测的规范模型。它帮助激发了之后的许多检测和分割模型包括我们今天要研究的另外两个模型。不幸的是如果不了解Faster R-CNN的前身R-CNN和Fast R-CNN我们就无法真正开始理解它所以让我们快速了解一下它的祖先。 2.1 R-CNN R-CNN是Faster R-CNN的祖父。换句话说R-CNN真的启动了事情。 R-CNN或基于Region的Convolutional N eural Network由3个简单的步骤组成 使用称为选择性搜索的算法扫描输入图像以查找可能的对象生成~2000个区域建议在每个区域提案之上运行卷积神经网络 CNN获取每个CNN的输出并将其馈送到aSVM中以对区域进行分类b线性回归器以收紧对象的边界框如果存在此类对象。 下图说明了这 3 个步骤 换句话说我们首先提出区域然后提取特征然后根据其特征对这些区域进行分类。从本质上讲我们已经将对象检测变成了图像分类问题。R-CNN非常直观但非常慢。 2.2 fast R-CNN R-CNN的直系后代是Fast-R-CNN。Fast R-CNN在许多方面与原版相似但通过两个主要增强提高了检测速度 在提出区域之前对图像执行特征提取因此在整个图像上只运行一个CNN而不是2000个CNN的2000多个重叠区域用softmax层替换SVM从而扩展神经网络以进行预测而不是创建新模型 新模型看起来像这样 正如我们从图像中看到的我们现在基于网络的最后一个特征图生成区域建议而不是从原始图像本身。因此我们可以只为整个图像训练一个CNN。 此外与其训练许多不同的 SVM 来对每个对象类进行分类不如使用单个 softmax 层直接输出类概率。现在我们只有一个神经网络需要训练而不是一个神经网络和许多SVM。 Fast R-CNN在速度方面表现得更好。只剩下一个大瓶颈用于生成区域提案的选择性搜索算法。 2.3 faster R-CNN 在这一点上我们回到了最初的目标更快的R-CNN。Faster R-CNN的主要见解是用快速神经网络取代慢速选择性搜索算法。具体而言它引入了区域提案网络RPN。 以下是 RPN 的工作原理 在初始CNN的最后一层一个3x3的滑动窗口在特征图上移动并将其映射到较低的维度例如256-d。对于每个滑动窗口位置它基于 k 个固定比率锚框默认边界框生成多个可能的区域每个区域提案包括 a 该区域的“客观性”分数和 b 代表区域边界框的 4 个坐标 换句话说我们查看上一个特征图中的每个位置并考虑以它为中心的k个不同的框一个高框一个宽框一个大框等。对于这些盒子中的每一个我们输出我们是否认为它包含一个对象以及该盒子的坐标是什么。这是它在一个滑动窗口位置的外观 2 k 分数表示每个 k 边界框位于“对象”上的 softmax 概率。请注意尽管 RPN 输出边界框坐标但它不会尝试对任何潜在对象进行分类它的唯一工作仍然是建议对象区域。如果锚框的“客观性”分数高于某个阈值则该框的坐标将作为区域建议向前传递。 一旦我们有了我们的区域提案我们就直接将它们输入到本质上是快速R-CNN的东西中。我们添加一个池化层一些全连接层最后添加一个softmax分类层和边界框回归器。从某种意义上说更快的R-CNN RPN Fast R-CNN。 总而言之Faster R-CNN实现了更好的速度和最先进的准确性。值得注意的是尽管未来的模型在提高检测速度方面做了很多工作但很少有模型能够显着优于Faster R-CNN。换句话说Faster R-CNN可能不是最简单或最快的目标检测方法但它仍然是性能最好的方法之一。举个例子Tensorflow的Faster R-CNN和Inception ResNet是他们最慢但最准确的模型。 归根结底Faster R-CNN 可能看起来很复杂但其核心设计与原始 R-CNN 相同假设对象区域然后对其进行分类。现在这是许多对象检测模型的主要管道包括我们的下一个模型。 三、R-FCN里程碑 还记得 Fast R-CNN 如何通过跨所有区域提案共享单个 CNN 计算来提高原始检测速度吗这种想法也是R-FCN背后的动机通过最大化共享计算来提高速度。 R-FCN或基于Region的Fully C卷积Net在每个输出中共享100%的计算。由于是完全卷积的它在模型设计中遇到了一个独特的问题。 一方面在对对象进行分类时我们想学习模型中的位置不变性无论猫出现在图像中的哪个位置我们都想将其归类为猫。另一方面在对物体进行检测时我们要学习位置方差如果猫在左上角我们想在左上角画一个框。因此如果我们试图在100%的网络中共享卷积计算我们如何在位置不变性和位置方差之间做出妥协 R-FCN的解决方案位置敏感的分数图。 每个位置敏感分数图表示一个对象类的一个相对位置。例如一个分数地图可能会在检测到猫的右上角时激活。另一个分数地图可能会激活它看到汽车左下角的位置。你明白了。从本质上讲这些分数图是卷积特征图经过训练以识别每个对象的某些部分。 现在R-FCN的工作原理如下 在输入图像上运行CNN在本例中为ResNet添加一个完全卷积层以生成上述“位置敏感分数图”的分数库。应该有 k²C1 分数图其中 k² 表示划分对象的相对位置数例如 3² 表示 3 x 3 网格C1 表示类数加上背景。运行完全卷积区域建议网络 RPN 以生成感兴趣区域 RoI对于每个投资回报率将其划分为与分数图相同的k²“箱”或子区域对于每个箱检查记分库以查看该箱是否与某个对象的相应位置匹配。例如如果我在“左上”箱上我将抓取与对象的“左上角”对应的分数图并在 RoI 区域中平均这些值。对每个类重复此过程。一旦每个 k² 条柱都有每个类的“对象匹配”值平均箱以获得每个类的单个分数。在剩余的 C1 维向量上使用软最大值对 RoI 进行分类 总的来说R-FCN看起来像这样RPN生成了RoI 即使有解释和图像您可能仍然对此模型的工作原理感到有些困惑。老实说当您可以可视化R-FCN正在做什么时它更容易理解。以下是R-FCN在实践中检测婴儿的一个这样的例子 简单地说R-FCN考虑每个区域提案将其划分为子区域并迭代子区域询问“这看起来像婴儿的左上角吗”“这看起来像婴儿的顶部中心吗“这看起来像婴儿的右上角吗”等。它对所有可能的类重复此操作。如果有足够多的子区域说“是的我与婴儿的那部分相匹配”那么在所有类别的softmax之后RoI将被归类为婴儿。 通过此设置R-FCN能够通过提出不同的对象区域来同时解决位置方差问题并通过让每个区域提案引用相同的分数图库来同时解决位置不变性问题。这些分数图应该学会将猫归类为猫无论猫出现在哪里。最重要的是它是完全卷积的这意味着所有的计算都在整个网络中共享。 因此R-FCN比Faster R-CNN快几倍并且达到了相当的精度。 四、SSD里程碑 我们的最终型号是SSD代表S ingle-S hot Detector。与R-FCN一样它比Faster R-CNN提供了巨大的速度提升但方式明显不同。 我们的前两个模型分两个单独的步骤执行区域建议和区域分类。首先他们使用区域提案网络来生成感兴趣的区域;接下来他们使用全连接层或位置敏感的卷积层对这些区域进行分类。SSD 在“单次拍摄”中完成这两个操作在处理图像时同时预测边界框和类。 具体来说给定一个输入图像和一组真实标签SSD 执行以下操作 将图像通过一系列卷积层产生几组不同比例的特征图例如 10x10然后是 6x6然后是 3x3 等对于每个特征映射中的每个位置请使用 3x3 卷积筛选器来评估一小组默认边界框。这些默认边界框基本上等同于 Faster R-CNN 的锚框。对于每个框同时预测 a 边界框偏移量和 b 类概率在训练期间将地面实况框与基于 IoU 的这些预测框进行匹配。最佳预测框将与所有其他具有 IoU 且真值为 0.5 的框一起标记为“正数”。 SSD听起来很简单但训练它有一个独特的挑战。使用前两个模型区域提案网络确保我们试图分类的所有内容都具有成为“对象”的最小概率。但是对于SSD我们跳过了该过滤步骤。我们从图像中的每个位置对边界框进行分类和绘制使用多个不同的形状在几个不同的比例下。因此我们生成的边界框数量比其他模型多得多而且几乎所有边界框都是否定示例。 为了解决这种不平衡SSD做了两件事。首先它使用非极大值抑制将高度重叠的盒子组合成一个盒子。换句话说如果四个形状、大小等相似的盒子。包含同一只狗NMS 将保留置信度最高的那只并丢弃其余的狗。其次该模型使用一种称为硬负挖掘的技术来平衡训练期间的类。在硬负挖掘中每次训练迭代中仅使用具有最高训练损失即误报的负示例的子集。SSD 保持 31 的负负与正之比。 它的架构如下所示 正如我上面提到的最后有“额外的要素图层”可以缩小大小。这些不同大小的特征图有助于捕获不同大小的对象。例如以下是 SSD 的实际应用 在较小的特征图例如4x4中每个单元格覆盖图像的较大区域使它们能够检测较大的物体。区域建议和分类同时执行给定 p 个对象类每个边界框都与一个 4p 维向量相关联该向量输出 4 个框偏移坐标和 p 类概率。在最后一步中softmax再次用于对对象进行分类。 最终SSD与前两种型号没有太大区别。它只是跳过“区域建议”步骤而是同时考虑图像每个位置的每个边界框及其分类。由于SSD可以一次性完成所有操作因此它是三种型号中最快的并且性能仍然相当可比。 五、结论 更快的 R-CNN、R-FCN 和 SSD 是目前最好和最广泛使用的三种对象检测模型。其他流行的模型往往与这三个模型非常相似都依赖于深度CNN阅读ResNetInception等来完成最初的繁重工作并且在很大程度上遵循相同的提案/分类管道。 在这一点上使用这些模型只需要了解Tensorflow的API。Tensorflow在这里有一个关于使用这些模型的入门教程。试一试祝黑客愉快