我正在使用 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 header 。
