【发布时间】: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