基本上,RPN 通过在最后一个 CNN 特征图上滑动一个小窗口(3 x 3)来做到这一点(同一特征图 Fast R-CNN 从中获得建议)。 对于每个滑动窗口中心,我们创建 *k*固定锚框,并将这些框分类为是否包含对象:
基本上,RPN 通过在最后一个 CNN 特征图上滑动一个小窗口(`3 x 3`)来做到这一点(同一特征图 Fast R-CNN 从中获得建议)。 对于每个滑动窗口中心,我们创建`k`固定锚框,并将这些框分类为是否包含对象:
![](img/7c57ffe8-af41-47a0-b295-5aeb633e866f.png)
...
...
@@ -204,15 +204,15 @@ RoI 层的输入将是建议和最后的卷积层激活。 例如,考虑以下
# 从传统的 CNN 转换为完全卷积网络
对于有效的对象检测器而言,非常重要的一点是提高卷积,从而提高计算的重用性。 为此,我们将所有 FC 层转换为 CONV 层,如下图所示。
对于有效的对象检测器而言,非常重要的一点是提高卷积,从而提高计算的重用性。 为此,我们将所有 FC 层转换为卷积层,如下图所示。
以这种方式实现我们的网络的目的是,他们可以使用比其最初设计的图像更大的图像作为输入,同时共享计算以使其效率更高。 将所有 FC 层都转换为 CONV 层的这种类型的网络的名称称为完全卷积网络(FCN)。
以这种方式实现我们的网络的目的是,他们可以使用比其最初设计的图像更大的图像作为输入,同时共享计算以使其效率更高。 将所有 FC 层都转换为卷积层的这种类型的网络的名称称为完全卷积网络(FCN)。
将 FC 层转换为 CONV 层的基本技术是使用与输入空间尺寸一样大的内核大小,并使用过滤器数来匹配 FC 层上的输出数。 在此示例中,我们期望输入图像为 14x14x3。
将 FC 层转换为卷积层的基本技术是使用与输入空间尺寸一样大的内核大小,并使用过滤器数来匹配 FC 层上的输出数。 在此示例中,我们期望输入图像为`14x14x3`。
![](img/dd1a5963-27dc-4ede-b0a9-4671fdf0a655.jpg)
以我们为例,用 100 x 100 的输入补丁训练一个全卷积网络,并用 2,000 x 2,000 的输入图像进行测试,结果将是在 2000 x 2000 图像上运行 100 x 100 的滑动窗口 。 当使用较大的输入体积(如本例中所示)时,FCN 的输出将是一个体积,其中每个单元格对应于原始输入图像上 100x100 窗口补丁的一张幻灯片。
以我们为例,用`100 x 100`的输入补丁训练一个全卷积网络,并用`2,000 x 2,000`的输入图像进行测试,结果将是在`2000 x 2000`图像上运行`100 x 100`的滑动窗口 。 当使用较大的输入体积(如本例中所示)时,FCN 的输出将是一个体积,其中每个单元格对应于原始输入图像上`100x100`窗口补丁的一张幻灯片。
默认情况下,您在数据集上调用的任何地图转换都仅作用于数据集的单个元素,并且将按顺序处理元素。 要加快速度并使用所有 CPU 功能,最简单的方法是将`num_parallel_calls`参数设置为可用的 CPU 内核数。 这样,我们就不会浪费任何可用的 CPU 能力。 但是,警告您不要将其设置为高于可用内核的数量,因为由于调度效率低下,这实际上可能会降低性能。