Faster-RCNN bbox/图像归一化

Posted

技术标签:

【中文标题】Faster-RCNN bbox/图像归一化【英文标题】:Faster-RCNN bbox/image normalization 【发布时间】:2017-05-12 03:55:01 【问题描述】:

我正在自定义数据集(大约 3000 张图像,7 个不同的类,包括背景)上使用 py-faster-rcnn,并遵循这些教程:

https://github.com/zeyuanxy/fast-rcnn/blob/master/help/train/README.md(Fast-RCNN 教程) https://github.com/deboc/py-faster-rcnn/tree/master/help(Faster-RCNN 教程)

我正在使用带有 VGG16 网络的端到端解决方案。 一切正常,期待我的结果,所以我有一些问题:

图像和 bbox 注释需要什么样的规范化? 与上一个问题类似:有两个配置选项:BBOX_NORMALIZE_TARGETS 和 BBOX_NORMALIZE_TARGETS_PRECOMPUTED。我应该在训练前计算均值和标准差并将这些选项用于 bbox 归一化吗? 我修改了 cls_score 和 bbox_pred 层的 num_output(根据这个线程:https://github.com/rbgirshick/py-faster-rcnn/issues/1),但在 end2end 解决方案中也有 rpn_cls_score 和 rpn_bbox_pred 层。我也应该修改这些的 num_outputs 吗?如果我应该那么我如何计算 7 个类的输出数量?

【问题讨论】:

【参考方案1】:

不,您不需要预先计算任何东西。在 lib/roi_data_layer/roidb.py 中,如果您将 BBOX_NORMALIZE_TARGETS_PRECOMPUTED 设置为 False,它将计算数据集的平均值和标准差,否则,它将使用 lib/fast_rcnn/config.py 中指定的默认值。 RPN 与类的数量无关。它只将包含任何对象的区域视为正面,而将其他所有区域视为负面。

【讨论】:

感谢您的帮助!我试图将 BBOX_NORMALIZE_TARGETS_PRECOMPUTED 设置为 false,但它导致断言错误:“文件”/home/spirit/py-faster-rcnn/tools/../lib/fast_rcnn/train.py”,第 35 行,在 初始化 assert cfg.TRAIN.BBOX_NORMALIZE_TARGETS_PRECOMPUTED AssertionError" 我查看了代码,其中发生了断言,并且有一条注释:“# RPN 只能使用预先计算的规范化,因为没有 # 固定统计信息来计算先验” 我认为您将 BBOX_NORMALIZE_TARGETS 设置为 False,这应该是正确的。无论如何,RPN 不需要这些东西(只有当你有来自其他算法的区域建议时才需要,比如选择性搜索)。即使您注释掉所有规范化代码,它也会起作用。 fast-rcnn 的所有归一化都在 generate_anchors 中完成,anchor_target_layer 用于训练 RPN,proposal_target_layer 和 proposal_layer 用于训练检测器。这些文件位于 RPN 文件夹中。 我猜 RPN 的标准和手段指定了建议框的先验统计信息?那么根据一定的数据集来初始化这些值就没多大意义了。 我发现这部分(BBOX_NORMALIZE_STDSBBOX_NORMALIZE_MEANS)在原论文中没有提到。为什么有用?

以上是关于Faster-RCNN bbox/图像归一化的主要内容,如果未能解决你的问题,请参考以下文章

图像归一化

MATLAB 图像归一化

图像归一化作用和方法

图像归一化

图像归一化

图像归一化