SSD-Mobilenetv2 300x300 - Tensorflow 异议检测 API

Posted

技术标签:

【中文标题】SSD-Mobilenetv2 300x300 - Tensorflow 异议检测 API【英文标题】:SSD-Mobilenetv2 300x300 - Tensorflow objection detection API 【发布时间】:2021-11-12 12:57:28 【问题描述】:

我已经微调了一个 SSD-Mobilenetv2,其训练配置固定调整大小为 300x300,使用 tensorflow 异议检测 API 构建并以 TF Saved_Model 格式保存。 问题:

在推理过程中,它如何能够接受任何形状(而不仅仅是 300x300)的输入图像,而无需进行任何预处理以先将其大小调整为 300x300,然后再将它们传递给模型? 是不是因为默认的 saved_model 在推理过程中会调整大小? (如果是,它是否也会对它们进行归一化,因为在进行卷积操作之前)(我是 save_model 格式的新手,但我认为这不是因为 save_model,但那怎么可能 - 因为我认为 SSD-Mobilenet 包括需要的 FC 层固定输入大小)或者该架构是否在 b/w 中使用 AdaptivePooling 来实现这一点?

【问题讨论】:

【参考方案1】:

Mobilenet V1 (paper) 接受 224x224x3 的输入。 Mobilenet V2 的添加主要是层和快捷/跳过连接之间的线性瓶颈,所以我认为架构的输入维度没有改变(Google AI blog post on MobileNetV2)。

(这是基于我的个人经验):我几乎可以肯定,调整大小只是保持原始纵横比并对其进行零填充的图像的缩放。或者,他们可以直接缩放它并更改纵横比,但这似乎不太可能。他们绝对没有使用自适应池之类的东西来调整大小。

【讨论】:

【参考方案2】:

进行预测时,您必须使用与模型训练时大小相同的图像。因此,如果您将 300 X 300 图像转换为 224 X 224,则必须对要预测的图像执行相同操作。 MobileNet 还期望像素在 -1 到 +1 的范围内,函数 tf.keras.applications.mobilenet_v2.preprocess_input 执行该操作。对于要预测的图像,您也需要类似地缩放像素。您可以使用提到的功能,也可以使用下面显示的等效功能。此外,如果模型是在 RGB 上训练的,那么图像会确保您要预测的图像是 RGB。

def scale(image):
    return image/127.5-1

【讨论】:

以上是关于SSD-Mobilenetv2 300x300 - Tensorflow 异议检测 API的主要内容,如果未能解决你的问题,请参考以下文章

自动将 300x300 图像设置为缩略图,这可能吗?

如何在 python 中绘制 300x300 RGB 图像的灰度值

UIImageView 填写 UIView

Android 位图平移/缩放/裁剪

为啥来自 Tensorflow 2 对象检测 API 的微调模型上的 mAP 较低?

gl_PointSize 是如何工作的