我正在使用Google的新Tensorflow对象检测API在只有一个类的我自己的数据集中进行训练。使用所有默认参数都可以,因此,如果要减少某些(甚至可能是所有)层中的过滤器数量,我想测试模型的性能。我的问题是如何减少现有ssd_mobile_v1模型各层的过滤器?

最佳答案

您可以通过减少配置中的depth_multiplier标量(位于feature_extractor标题下)来修改所有层的过滤器数量。

或者,您可以通过修改相关的feature_extractor模块中的feature_map_layout来指定为本地化/分类层提供特征图的各个图层中的过滤器数量。

对于您的示例,您将修改object_detection.models.ssd_mobilenet_v1_feature_extractor.py模块并更改layer_depth。默认值如下所示。

feature_map_layout = {
    'from_layer': ['Conv2d_11_pointwise', 'Conv2d_13_pointwise', '', '',
                       '', ''],
    'layer_depth': [-1, -1, 512, 256, 256, 128],
    'use_explicit_padding': self._use_explicit_padding,
    'use_depthwise': self._use_depthwise,
}


一个更好的选择是创建自己的feature_extractor模块,确保将其导入到object_detection.builders.model_builder.py中,并在配置中的type标头下修改feature_extractor

08-24 13:49