【问题标题】:How can I set a specific SSD (lite) prediction architecture using a custom input resolution in TensorFlow ObjectDetection API如何使用 TensorFlow ObjectDetection API 中的自定义输入分辨率设置特定的 SSD (lite) 预测架构
【发布时间】:2025-11-28 11:55:02
【问题描述】:

我想使用TensorFlow ObjectDetection API 在 COCO 数据集上训练一个自定义 SSDLite-MobileNetV2 对象检测器。我想要更高的输入分辨率,而不是(300,300)的固定输入分辨率,例如VGA (640,480) 或 (544,544)。 由于该架构是完全卷积的,因此可以有不同的输入分辨率。 但是,我想通过以下方式稍微改变 SSD 架构:

使用 300x300 的原始输入分辨率,在第一个 3x3 转换和 5 个反向瓶颈之后,我们有一个 19x19x96 的特征图,在另外两个瓶颈之后 - 10x10x320,然后是 1x1 - 10x10x1280,然后使用 3x3 深度可分离卷积变为 5x5x512、3x3x256、2x2x256 和 1x1x128。 然后在 19x19 - 19x19x576 的扩展版本、10x10x1280 以及所有其他分辨率较低的特征图(5x5、3x3、2x2、1x1)上进行预测 - 总共 6 个。

如果我的输入分辨率为 554x554,则如下所示: 在 3x3 转换和 5 个倒置瓶颈之后,它是 34x34x96,在另外两个之后 - 17x17x320,但是为了达到 1x1 分辨率,我需要一个额外的层: 9x9、5x5、3x3、2x2,然后是 1x1。

我想修改架构的方式是跳过 2x2 分辨率,并通过未填充的 3x3 深度可分离卷积从 3x3 直接获得 1x1。我的问题是这是否可以使用 TensorFlow ObjectDetection API 而无需大量代码修改,例如通过更改configuration file 或稍微修改代码。

编辑:添加 Python 标记。

EDIT2 - 尝试使问题更清楚: 在当前具有当前填充的架构中,为了从 3x3 的特征图传递到 1x1,我需要通过 2x2 的特征图(3x3 conv,stride=2,padded)。我想知道是否可以更改配置以使用单个 3x3 转换直接从 3x3 到 1x1 特征图,如果没有 - 如何编辑/制作替代 ssd_mobilenet_v2_feature_extractor (或其他代码)以实现那。

【问题讨论】:

  • Tensorflow 支持多种语言。请为您使用的语言添加适当的标签
  • 添加了 Python 标签。谢谢。

标签: python tensorflow object-detection tensorflow-ssd


【解决方案1】:

如果您只想更改输入分辨率,请更改您的 .config 文件(从https://github.com/tensorflow/models/tree/master/research/object_detection/samples/configs 获取)。 找到这个: image_resizer { fixed_shape_resizer { 身高:300 宽度:300 } } 更改高度和宽度值。 如果你想改变网络架构,会有点困难。ssdlite_mobilenet_v2使用的网络架构是ssd_mobilenet_V2。基础网络是slim/mobilenet/上的mobilenet v2,写一些自定义代码并定义你自己的模型(@987654322 @)。

【讨论】:

  • rootkitchao,感谢您的评论。我知道你提到的事情,所以我会尝试更具体地解决这个问题:在当前具有当前填充的架构中,为了从 3x3 的特征图传递到 1x1,我需要通过 2x2 的特征图(3x3 转换,步幅 = 2,填充)。我想知道是否可以更改配置以使用单个 3x3 转换直接从 3x3 到 1x1 特征图,如果没有 - 如何编辑/制作替代 ssd_mobilenet_v2_feature_extractor 以实现这一目标。再次感谢!
  • 如果你想改变基础网络的结构。参见 /slim/nets/mobilenet/。mobilenet V2 封装在 mobilenet_v2.py 中,参见 V2_DEF = dict() 和 mobilenet()。它在moblienet.py中调用了mobilenet()函数。它的基本单元在conv_block.py中实现。我认为你需要阅读代码并修改基本单元。