0

如果我想实现k = k0 + log2(√(w * h)/ 224)特征金字塔网络对象检测,哪里和哪些文件应该改变?特征金字塔网络与tensorflow/models/object_detection

请注意,此公式适用于ROI池。 W和H是ROI的宽度和高度,而k代表应该使用ROI的特征金字塔的级别。

*说object_detection中的FasterRCNN meta_architecture文件可能会有所帮助,但请告知我可以更改哪种方法。

回答

1

查看this document以了解过程的大致概述。简而言之,您必须为您所需的元架构创建一个“FeatureExtractor”子类。对于FasterRCNN,您可以从我们的Resnet101 Feature Extractor的副本开始。

+0

谢谢你回答我的问题。那么在fast_rcnn_meta_arch.py​​中可以进行什么修改?因为我看到很多控制第一阶段和第二阶段的方法。与此同时,我已经更改了Resnet101 Feature Extractor(返回变量已从单层resnet更改为包含整个金字塔的字典)。我真的想知道我可以在哪里实践这个公式。 –

1

简短的回答是,这种变化并不是微不足道的,因为我们目前不支持多层裁剪区域。这里是一个什么需要改变,如果你想反正追求这个大纲:

  • 生成新的定位设置 目前更快RCNN使用“GridAnchorGenerator”作为first_stage_anchor_generator - 而不是你将不得不使用MultipleGridAnchorGenerator(与我们在SSD管道中使用的相同)。
  • 您将不得不使用一个32^2锚点框 - >为锚点生成器的缩放字段,基本上你必须添加一个.125
  • 你将不得不修改代码以生成和裁剪多个图层:要开始,请在faster_rcnn_meta_arch文件中查找名为“_extract_rpn_feature_maps”的函数,该函数具有提示性命名,但目前只返回单张量!您还需要添加一些逻辑,以根据提案的大小确定要裁剪哪个图层(文章中的公式1)
  • 您必须在Derek链接到的directions之后最终创建一个新的特征提取器。
+0

非常感谢您的支持!我即将完成FPN。只有一些小问题(关于批次和维度)留给解决。 –

+0

嘿乔纳森,你能否详细说明.125和MultipleGridAnchorGenerator? (1.0,0.0),(1.0,0.0),(1.0,2.0)],#P3 box_specs_list = [[(2.0,0.5),(2.0,1.0),(2.0,2.0)],#P2 [ [(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的比例... – macguy