Tensorflow F-RCNN 第一阶段输入和输出步幅

数据挖掘 张量流 卷积 更快的rcnn
2022-02-23 21:07:27

试图优化 Tensorflow 的 faster_rcnn_resnet50 (来自模型 zoo)的性能,我目前正在努力理解他们提供的完整.config文件,但我很难迈出这一步。

这是文件的相关部分,粗体部分是我不确定的部分:

image_resizer {
  keep_aspect_ratio_resizer {
    最小尺寸:1134
    最大尺寸:2016
  }
}
特征提取器{
  类型:“faster_rcnn_resnet50”
  first_stage_features_stride: 16
}
first_stage_anchor_generator {
  grid_anchor_generator {
    身高:28
    宽度:31
    高度步幅:14
    宽度步幅:15
    尺度:0.242
    秤:0.621
    尺度:1.0
    秤:1.739
    秤:2.478
    纵横比:0.386
    纵横比:0.693
    纵横比:1.0
    纵横比:1.464
    纵横比:1.929
  }
}

我想知道的是我是否应该根据锚点的尺寸和步幅计算特征图步幅,或者它们是否完全不相关?对步幅本身是否有任何限制,例如像原来的 f-rcnn 一样将它们保持在 2 的幂?

1个回答

让我试着解释一下 stride 通常是什么意思,然后你就可以解决你的具体问题了。

假设我们有一个大小为 7x7 的图像。让我们取一个大小为 3x3 的内核。当您使用以下命令将内核滑过图像时:

1. stride=1 

2. stride=2

本质上,步幅意味着在应用卷积操作时应该在两个内核位置之间留下多少间隙。

现在这个概念是通用的,适用于我们需要在输入上滑动内核的任何操作。

对于 Faster-RCNN 模型,特征和锚点是两个不同的东西,所以它们可能是不相关的。不过,请用官方文件确认这一点。

对于步幅大小,没有限制,你可以取任何你想要的数字,只要确保它应该小于或等于图像大小的一半(你可以逻辑地思考为什么)。