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的主要内容,如果未能解决你的问题,请参考以下文章
如何在 python 中绘制 300x300 RGB 图像的灰度值