我正在使用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?
答案 0 :(得分:0)
我不确定是否有简单的方法来执行此操作,但是Core ML模型确实支持“ NeuralNetworkMeanImage”操作,该操作会从输入图像中减去平均图像。这是模型的“ NeuralNetworkPreprocessing”部分的一部分。
当您使用image_scale
,red_bias
等时,NeuralNetworkPreprocessing使用NeuralNetworkImageScaler操作。但是您想改用NeuralNetworkMeanImage操作。
似乎没有coremltools.converters.keras.convert()
可以让您选择此平均图像操作。因此,解决方案是编写一个新脚本,该脚本将加载转换后的mlmodel并将其替换为NeuralNetworkMeanImage。这需要熟悉protobuf格式。