average - Coremltools:如何从输入图像中减去图像的平均值?
问题描述
我正在使用 swift 来运行我的模型,该模型是从 keras 转换而来的,不幸的是,在 swift 上运行时结果非常糟糕,所以我考虑可能会在我的预处理中运行一些东西。然后我发现 coremltools 可以在以下代码中使用特定值(如 255 和 -1)缩放和减去输入:
coremltools.converters.keras.convert(model,image_scale=255,red_bias=-1,green_bias=-1,blue_bias=-1)
但是,如果我需要从图像中减去输入图像的平均值并进行归一化,我该怎么办?我应该使用 coremltools 还是 swift?
解决方案
我不确定是否有一种简单的方法可以做到这一点,但 Core ML 模型确实支持从输入图像中减去平均图像的“NeuralNetworkMeanImage”操作。这是模型的“NeuralNetworkPreprocessing”部分的一部分。
当您使用image_scale
等red_bias
时,NeuralNetworkPreprocessing 使用 NeuralNetworkImageScaler 操作。但是您想改用 NeuralNetworkMeanImage 操作。
似乎不允许coremltools.converters.keras.convert()
您选择这种平均图像操作。因此解决方案是编写一个新脚本来加载转换后的 mlmodel 并用 NeuralNetworkMeanImage 替换预处理操作。这需要熟悉 protobuf 格式。
推荐阅读
- google-chrome - 为什么 Chrome 开发者工具的网络标签显示的大小比下载的文件大小要小很多?
- c++ - 无法在 C++ 中为停车场 OOP 声明抽象类型的变量
- c - 如何在 mmaped 内存中删除脏页并为快速 munmap 做准备?
- php - 如何在foreach循环中使用mysql左连接和回显变量
- apache-poi - Domino V10 和 POI
- bootstrap-4 - 设置所有等高的卡片 (mdbootstrap)
- c# - 在字典中存储多个逆变委托
- java - 解析 Rest API 响应
- android - 获取 DeviceId 弃用 Android
- authentication - .NET Core 2.x Web API 中的身份验证过滤器?改用什么