CoreML - 如何将InceptionV3的图像预处理成MultiArray <double,3 =“”>?

时间:2017-08-08 06:10:20

标签: ios swift keras coreml

我使用Keras(2.0.4)&amp ;;重新训练和微调Inception_v3。 Tensorflow(1.1.0)。当我使用coremltools将Keras模型转换为MLmodel时,我得到一个需要输入MultiArray的模型。 如果我明白它要求[高度,宽度,RGB] =(299,299,3),这是有道理的。但我不知道如何将CVPixelBuffer转换为该格式。

有人可以帮助我理解我的重新训练的incpetion模型需要在coreml中进行的预处理吗?或者我需要在转换中做些什么才能接受CVPixelBuffer?

2 个答案:

答案 0 :(得分:1)

我重新训练过InceptionV3,但又回去查看我的代码。我没有在keras中将输入形状设置为299,299。我强制所有的照片在预处理中都是那么大。结果是Model-JSON不包含输入维度,而是具有值:[null,null,null,3]并且转换为CoreML无法知道输入dims应该是299,299。能够保存模型权重,保存模型的json字符串,编辑json以获得正确的输入[null,299,299,3],将编辑过的json字符串作为新模型加载,加载权重和中提琴! coreML模型现在正确接受Image

答案 1 :(得分:0)

这是一个很好的问题。似乎pixelbuffer几乎总是在BGRA中,并且不会崩溃开始,可以预测类很好,但问题是值和向量不同,我敢打赌coreml不会将BGRA转换为RGB,并且通道顺序错误。我不再找到任何快速进行像素缓冲区转换的方法,请让我知道它是否存在。