Coremltools:如何从输入图像中减去图像的平均值?

时间:2018-10-29 06:54:42

标签: average normalization mean subtraction coreml

我正在使用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?

1 个答案:

答案 0 :(得分:0)

我不确定是否有简单的方法来执行此操作,但是Core ML模型确实支持“ NeuralNetworkMeanImage”操作,该操作会从输入图像中减去平均图像。这是模型的“ NeuralNetworkPreprocessing”部分的一部分。

当您使用image_scalered_bias等时,NeuralNetworkPreprocessing使用NeuralNetworkImageScaler操作。但是您想改用NeuralNetworkMeanImage操作。

似乎没有coremltools.converters.keras.convert()可以让您选择此平均图像操作。因此,解决方案是编写一个新脚本,该脚本将加载转换后的mlmodel并将其替换为NeuralNetworkMeanImage。这需要熟悉protobuf格式。