0
本文作者: AI研习社-译站 | 2018-10-11 15:57 |
本文为 AI 研习社编译的技术博客,原标题 :
Faster R-CNN Explained
翻译 | 老赵 校对 | 老赵 整理 | 菠萝妹
原文链接:
https://medium.com/@smallfishbigsea/faster-r-cnn-explained-864d4fb7e3f8
Fast R-CNN 有两个网络:建议窗口网络(RPN)生成建议窗口并使用这些窗口检测物体。与Fast R-CNN 的主要区别在于后者使用选择性搜索来生成建议窗口。当RPN与物体检测网络共享最多计算时,RPN中生成建议窗口的时间成本比选择性搜索小得多。 简而言之,RPN对区域框(称为锚点)进行排名,并提出最可能包含物体的框。 结构如下。
Fast R-CNN 结构
锚在Fast R-CNN 中扮演着重要角色。 锚是一个盒子。 在Fast R-CNN 的默认配置中,图像位置有9个锚点。 下图显示了尺寸为(600,800)图像的位置(320,320)的9个锚点。
锚点(320,320)
让我们仔细看看:
1. 三种颜色代表三种尺度或尺寸:128x128,256x256,512x512。
2. 让我们挑出红色的盒子/锚点。 三个盒子的高宽比分别为1:1,1:2和2:1。
如果我们以步长16选择一个位置,那么将有1989(39x51)个位置。 这导致17901(1989 x 9)盒子需要考虑。 绝对的尺寸不小于滑动窗和金字塔的组合。 或者你可以推断这就是为什么它的覆盖范围和其他最先进的方法一样好。 这里的好处是我们可以使用建议窗口网络,Fast R-CNN 中的方法来显着减少数量。
这些锚点适用于Pascal VOC数据集以及COCO数据集。 但是,你可以自由设计不同类型的锚/盒。 例如,你正在设计一个计算乘客/行人的网络,你可能不需要考虑非常短,非常大或方形的盒子。 一套趁手的锚可以同时提高速度和准确率。
建议窗口网络(RPN)的输出是一组窗口/盒子,将由分类器和回归器检查以最终检查物体的发生。 更准确地说,RPN预测锚是背景或前景的可能性,并细化锚。
训练建议窗口网络
训练分类器的第一步是产生训练数据集。 训练数据是我们从上述过程和准确值框中获得的锚点。 这里需要解决的问题是我们如何使用准确值盒来标记锚点。 这里的基本思想是我们想要将具有较高重叠的锚点标记为准确值框作为前景,将具有较低重叠的锚点标记为背景。 显然,它需要一些调整和妥协来分离前景和背景。 你可以在实现过程中查看此处的详细信息。 现在我们有锚的标签。
这里的第二个问题是锚的特征是什么。
假设应用CNN后,600x800图像会缩小16次成为39X51的特征图。特征图中的每个位置都有9个锚点,每个锚点都有两个可能的标注(背景,前景)。如果我们将特征映射的深度设置为18(9个锚点x 2个标签),我们将使每个锚点都有一个带有两个值(正常称为logit)的向量,表示前景和背景。如果我们将logit提供给softmax / logistic回归激活函数,它将预测标签。现在,训练数据包含特征和标签。
如果你想在这个过程中重新使用经过训练的网络作为CNN,你可能会注意的另一件事是感受野。确保要素图上每个位置的感受野覆盖它所代表的所有锚点。否则,锚点的特征向量将没有足够的信息来进行预测。如果你想了解更多关于感受野的话,这里有一个很好的解释。
如果你遵循标记锚点的过程,你还可以根据回归量的类似标准来挑选锚点以进行细化。 这里有一点是标记为背景的锚点不应该包含在回归中,因为我们没有地面实例框。 特征图的深度为32(9个锚点×4个位置)。
本文使用左上方位置(x,y)的平滑L1损失,以及高度和宽度的对数,与Fast R-CNN 中的相同。
回归量的损失函数
RPN的总体损失是分类损失和回归损失的组合
在RPN之后,我们得到了不同大小的建议窗口。 不同大小的窗口意味着不同大小的CNN特征映射。 要建立一个有效的结构来处理不同大小的特征映射并不容易。 池化感兴趣区域可以通过将特征映射减少到相同的大小来简化问题。 与具有固定大小的Max-Pooling不同,ROI Pooling将输入特征映射分成大致相等区域的固定数字(比如说k),然后在每个区域应用Max-Pooling。 因此,无论输入大小如何,ROI Pooling的输出始终为k。 这是关于ROI Pooling的一个很好解释。
使用固定的ROI Pooling输出作为输入,我们对最终分类器和回归器的体系结构有很多选择。
本文提到了两种方式:先训练RPN,最后的分类器和回归器; 同时训练他们。 后者的速度提高了1.5倍,精度相似。 梯度以两种方式反向传播到CNN。
想要继续查看该篇文章更多代码、链接和参考文献?
戳链接:
http://www.gair.link/page/TextTranslation/946雷锋网雷锋网雷锋网
AI研习社每日更新精彩内容,点击文末【阅读原文】即可观看更多精彩内容:
手把手教你从零开始用Python打造自己的神经网络
等你来译:
如何开发人类活动识别时间序列分类的RNN模型
让你的深度神经网络跑得更快
神经网络嵌入详解
用 4 种卷积神经网络,轻松分类时尚图像
雷峰网原创文章,未经授权禁止转载。详情见转载须知。