tensorflow - SSD-Mobilenetv2 300x300 - Tensorflow 异议检测 API
问题描述
我已经微调了一个 SSD-Mobilenetv2,其训练配置固定调整大小为 300x300,使用 tensorflow 异议检测 API 构建并以 TF Saved_Model 格式保存。问题:
- 在推理过程中,它如何能够接受任何形状(而不仅仅是 300x300)的输入图像,而无需进行任何预处理以首先将它们调整为 300x300,然后将它们传递给模型?
- 是不是因为默认情况下 saved_model 在推理过程中会调整大小?(如果是,它是否也会对它们进行归一化,因为在进行卷积操作之前)(我是 save_model 格式的新手,但我认为这不是因为 save_model,但那怎么可能 - 因为我认为 SSD-Mobilenet 包含需要的 FC 层固定输入大小)或者架构是否在 b/w 中使用 AdaptivePooling 来实现这一点?
解决方案
当您进行预测时,您必须使用与训练模型相同大小的图像。因此,如果您将 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
推荐阅读
- java - Java 的 gradle 构建问题:10.0.2,Gradle:4.7
- powershell - Get-AzureDeployment 未返回预期结果
- flask - Flask requests.args 在新的应用程序路由中保持变量
- version - 在运行 Web 应用程序中动态获取 Vaadin Flow 的版本
- javascript - 从 Polygon 获取图钉详细信息列表
- spring-boot - 如何将spring boot配置文件bootstrap.yml移出资源包
- java - Java String.format() 前导零和 1 个小数位
- ios - 进出后台时是否应禁用/重新启用 Firebase“keepSynced”?
- react-native - 在 React Native 中获得完整 ICU + CLDR 支持的最佳方式是什么?
- sql - 具有非唯一 ID 的分层查询