Skip to main content
 首页 » 编程设计

python之使用谷歌的对象检测 API 减少 SSD 模型中一层的过滤器数量

2024年10月01日30birdshome

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