【问题标题】:Tuning first_stage_anchor_generator in faster rcnn model在更快的 rcnn 模型中调整 first_stage_anchor_generator
【发布时间】:2018-08-27 22:16:19
【问题描述】:

我正在尝试使用来自此处 https://github.com/tensorflow/models/tree/master/research/object_detection 的 object_detect_api 的更快 rcnn 模型从大图像(~ 2040、1536 像素)中检测一些非常小的对象(~25x25 像素)

我对以下配置参数很困惑(我已经阅读了proto文件并尝试修改它们并测试):

first_stage_anchor_generator {
  grid_anchor_generator {
    scales: [0.25, 0.5, 1.0, 2.0]
    aspect_ratios: [0.5, 1.0, 2.0]
    height_stride: 16
    width_stride: 16
  }
}

我是这个领域的新手,如果有人可以向我解释一下这些参数,将不胜感激。

我的问题是我应该如何调整上述(或其他)参数以适应在大图像中检测到非常固定大小的小对象这一事实。

谢谢

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。避免同时提出多个不同的问题。

标签: tensorflow object-detection-api


【解决方案1】:

我不知道实际答案,但我怀疑Faster RCNN在Tensorflow对象检测中的工作方式如下:

this 文章说: “Anchors 在 Faster R-CNN 中扮演着重要的角色。anchor 是一个盒子。在 Faster R-CNN 的默认配置中,在图像的某个位置有 9 个锚点。下图显示了该位置的 9 个锚点(320, 320) 大小为 (600, 800) 的图像。"

作者给出了一个显示框重叠的图像,这些是基于“RCNN”模型的“CNN”部分提出的包含对象的区域,接下来是“RCNN”的“R”部分模型是区域建议。为此,还有另一个与 CNN 一起训练的神经网络,以找出最合适的框。有很多“建议”,其中一个对象可以基于所有的框,但我们仍然不知道它在哪里。

这个“区域提议”神经网络的工作是找到正确的区域,并根据您提供的标签以及图像中每个对象的坐标对其进行训练。

查看this 文件,我注意到:

line 174:  heights = scales / ratio_sqrts * base_anchor_size[0]

line 175:  widths = scales * ratio_sqrts * base_anchor_size[[1]]

这似乎是配置文件中配置的最终目标(生成具有已知宽度和高度的滑动窗口列表)。而 base_anchor_size 是默认创建的 [256, 256]。代码作者在 cmets 中写道:

"例如设置scales=[.1, .2, .2] aspect ratios = [2,2,1/2] 表示我们创建了三个盒子:一个有比例 .1,纵横比2,一个带比例.2,纵横比2,一个带比例.2 和纵横比1/2。每个框前乘以“base_anchor_size” 将其放在各自的中心。”

这可以深入了解这些框是如何创建的,代码似乎正在创建一个基于 scales =[stuff]aspect_ratios = [stuff] 参数的框列表,这些参数将用于在图像上滑动。比例相当简单,是256 by 256 的默认方形框在使用之前应该缩放多少,纵横比是将原始方形框更改为更接近于您期望遇到的对象的(缩放)形状。

意思是,为了优化配置比例和纵横比,您应该在图像中找到对象的“典型”尺寸,无论它是前(20 by 305 by 10 等) ) 并计算出256 by 256 方框的默认值应缩放到最佳大小,然后找到对象的“典型”纵横比(根据谷歌的纵横比是:宽度到图像或屏幕的高度。)并将它们设置为您的纵横比参数。

注意:似乎配置文件中 scales 和 aspect_ratios 列表中的元素数量应该相同,但我不确定。

我也不确定如何找到最佳步幅,但如果您的对象比1616 像素,您通过将比例和纵横比设置为您想要的内容创建的滑动窗口可能只是跳过完全是你的对象。

【讨论】:

  • 只是在您指出的文件 grid_anchor_generator.py 中添加,第 145-152 行和第 162-164 行非常值得关注。
【解决方案2】:

我相信仅针对 Faster RCNN 的模型类型生成提案锚点。在这个file 中,您已经指定了可以在配置中提到的行内为锚生成设置哪些参数。

我尝试设置 base_anchor_size,但失败了。虽然FasterRCNNTutorial tutorial 提到:

[...] 您还需要在 .config 文件中配置锚点大小和纵横比。基础锚大小为 255,255。

锚点比率将乘以 x 维度并除以 y 维度,因此如果纵横比为 0.5,则 255x255 的锚点变为 128x510。应用列表中的每个纵横比,然后将结果乘以比例。因此,第一步是将您的图像调整为训练/测试大小,然后手动检查您期望的最小和最大对象是什么,以及最极端的纵横比是多少。设置配置文件的值,当基础锚大小通过纵横比调整并乘以比例时,这些值将涵盖这些情况。

我认为这很简单。我也使用了这个“解决方法”。

【讨论】:

    猜你喜欢
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2021-03-17
    • 2018-10-01
    相关资源
    最近更新 更多