【问题标题】:Object Detection using Faster R-CNN使用 Faster R-CNN 进行目标检测
【发布时间】:2018-02-24 12:34:18
【问题描述】:

我的问题是关于 Faster R-CNN 的实施。

我阅读了这篇论文,并且正在阅读 config.py 文件,该文件由算法作者编写,可在此处获得:https://github.com/rbgirshick/py-faster-rcnn/blob/master/lib/fast_rcnn/config.py

我非常无法理解为什么我们需要 BBOX_INSIDE_WEIGHTS(在第 84 行提到)和 RPN_POSITIVE_WEIGHT(在第 124 行提到)?

在其他一些实现中,我还看到了锚点掩码(第 659 行)、锚点回归权重和锚点回归掩码,可在此处获得:https://github.com/DeepRNN/object_detection/blob/master/model.py

有人可以简单回答一下这些参数的用途以及我们为什么需要它们吗?

【问题讨论】:

    标签: machine-learning computer-vision deep-learning object-detection


    【解决方案1】:

    在更快的 RCNN 中,您有一个 RPN(区域提案网络),它是模型的一部分,并且使用全网络进行了训练

    RPN 的作用是建议图像中的边界框,对象被认为位于该边界框上。

    对于图像中的每个位置,RPN 尝试拟合 k 个预定义的“锚点”中的每一个,并为每个位置提供 4 个参数,这些参数定义了相对于锚点的边界框建议和 2 个概率分数物体在边界框内的概率。

    如果框具有不同的纵横比和比例,则锚点是预定义的集合。

    如果我们查看代码 code 在第 359 和 360 行计算损失,我们可以看到“锚掩码”用于定义图像中具有真正回归锚的区域。这是因为在 Fast-RCNN 的损失函数的定义中,我们只计算了正锚点的回归损失。

    这同样适用于“anchor_reg_masks”,如第 362 行所示。

    术语“anchor_weights”用于规范化 loos0 术语。在第 359 行之后,对于不在掩码中的位置,loss0 的损失为零,因此如果我们从中计算损失,我们将得到偏差结果。 “anchor_weights”将 loss0 标准化为仅从真正的锚点计算。

    【讨论】:

    • 表示anchor mask、anchor regression weights、anchor regression mask和BBOX_INSIDE_WEIGHTS是一回事吗?正如我对论文的理解,除了概率分数之外,对于图像的每个位置,还有 4*k 的 RPN 输出(回归部分),其中 k 是锚点的数量。那么RPN的回归部分不应该有4*k的权重吗?
    • 这对我很有用,谢谢。您所说的“仅对正锚的回归损失”是什么意思?正锚是正确放置的锚吗?在这种情况下,什么是“回归”?
    猜你喜欢
    • 2018-01-23
    • 2021-04-27
    • 2021-10-14
    • 2023-03-31
    • 2016-09-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    相关资源
    最近更新 更多