使用更快的R-CNN进行物体检测

时间:2017-09-15 10:32:19

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

我的问题是关于更快的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

有人可以给出简单易行的答案,这些参数是什么以及为什么我们真正需要它们?

1 个答案:

答案 0 :(得分:1)

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

RPN的作用是建议物体被认为是图像中的边界框。

对于图像中的每个位置,RPN尝试拟合k个预定义的"锚点中的每一个"并且对于它们中的每一个,它给出了4个参数,这些参数定义了相对于锚点的边界框提议,以及对象在边界框内的概率的2个概率分数。

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

如果我们在第359行和第360行的code查看代码,我们可以看到"锚屏蔽"用于使用真正的回归锚定义图像中的区域。这是因为在Fast-RCNN的损失函数的定义中,我们仅针对正锚来计算回归的损失。

同样适用于" anchor_reg_masks"从第362行可以看出。

术语" anchor_weights"用于标准化loos0项。在第359行之后,如果我们从中计算损失,则损失0对于不在掩模中的位置没有损失,我们将得到偏差结果。 " anchor_weights"规范化loss0仅从真正的锚点计算。