具有 tensorflow/models/object_detection 的特征金字塔网络
Posted
技术标签:
【中文标题】具有 tensorflow/models/object_detection 的特征金字塔网络【英文标题】:Feature Pyramid Network with tensorflow/models/object_detection 【发布时间】:2017-12-19 00:58:54 【问题描述】:如果我想在用于对象检测的特征金字塔网络中实现 k = k0 + log2(√(w*h)/224),我应该在哪里更改哪个文件?
请注意,此公式适用于 ROI 池。 W 和 H 是 ROI 的宽度和高度,而 k 表示应该使用该 ROI 的特征金字塔的级别。
*说在 object_detection 中的 FasterRCNN meta_architecture 文件可能会有所帮助,但请告知我可以更改哪种方法。
【问题讨论】:
【参考方案1】:简短的回答是,由于我们目前不支持从多个图层裁剪区域,因此更改不会是微不足道的。如果您想继续这样做,以下是需要更改的大纲:
生成新的锚集 目前 Faster RCNN 使用“GridAnchorGenerator”作为 first_stage_anchor_generator - 而您必须使用 MultipleGridAnchorGenerator(与我们在 SSD 管道中使用的相同)。 你必须使用一个 32^2 的锚框 -> 作为锚生成器的 scales 字段,基本上你必须添加一个 .125 您必须修改代码以从多个层生成和裁剪:首先,在名为“_extract_rpn_feature_maps”的faster_rcnn_meta_arch 文件中查找一个函数,该函数具有暗示性的名称,但目前只返回一个张量!您还必须添加一些逻辑来根据提案的大小确定从哪一层裁剪(论文中的方程式 1) 您最终必须在 Derek 链接到的 directions 之后创建一个新的特征提取器。【讨论】:
非常感谢您的留言!我正要完成FPN。只剩下几个小错误(关于批次和尺寸)有待解决。 嘿乔纳森,你能详细说明一下 .125 和 MultipleGridAnchorGenerator 吗? box_specs_list=[[(2.0, 0.5), (2.0, 1.0), (2.0, 2.0)], #P2 [(1.0, 0.5), (1.0, 1.0), (1.0, 2.0)], #P3 [(0.5) , 0.5), (0.5, 1.0), (0.5, 2.0)], #P4 [(0.25, 0.5), (0.25, 1.0), (0.25, 2.0)], #P5 [(0.125, 0.5), (0.125) , 1.0), (0.125, 2.0)]], # P6 这样的事情有意义吗?一些实现使用 8 的比例......【参考方案2】:查看this document 以大致了解该过程。简而言之,您必须为所需的元架构创建一个“FeatureExtractor”子类。对于 FasterRCNN,您可能可以从我们的 Resnet101 Feature Extractor 副本作为起点。
【讨论】:
感谢您回答我的问题。那么我可以在 fast_rcnn_meta_arch.py 中进行任何可能的更改吗?因为我看到了很多控制第一阶段和第二阶段的方法。同时,我已经更改了 Resnet101 特征提取器(返回变量已从单层 resnet 更改为包含整个金字塔的字典)。我真的很想知道在哪里可以将这个公式付诸实践。以上是关于具有 tensorflow/models/object_detection 的特征金字塔网络的主要内容,如果未能解决你的问题,请参考以下文章
编写一个Car类,具有String类型的属性品牌,具有功能drive;
具有多个视图的 UIScrollView(具有按钮、滚动视图和标签)