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