使用coremltools从Caffe转换后,mlmodel不能正常工作。

问题描述 投票:0回答:1

我想把这个NSFW模型转换成CoreML模型。我做了什么。

  1. 下载Anaconda 2. 7
  2. 安装coremltools
  3. 从这里转换这个雅虎Nsfw模型--。https:/github.comyahooopen_nsfwtreemasternsfw_model。 但我不确定它是Caffe v1,因为苹果文档说只有这个版本支持。总之...
  4. 我使用这个命令进行转换,转换后没有任何警告。

    coreml_model = coremltools.converters.caffe.convert(('resnet_50_1by2_nsfw.caffemodel', 'deploy.prototxt'), image_input_names='data') coreml_model.save('nsfw2.mlmodel')

  5. 我把这个模型导入到我的项目中,同样一切看起来都很好。
  6. 我准备了224x224的图像,并使用Vision框架,如VNImageRequestHandler与cgImage等。

但是!所有的图像都返回相同的结果。

所有的图像都返回相同的结果

[<VNCoreMLFeatureValueObservation: 0x281b1daa0> 2E00F417-95C0-4AA1-A621-A0945BB5E095 requestRevision=1 confidence=1.000000 "prob" - "MultiArray : Double 1 x 1 x 2 x 1 x 1 array" (1.000000)]

如何调试这个问题,找出问题所在?

enter image description here

caffe coreml coremltools mlmodel
1个回答
0
投票

也许你只看了淘气的图片? ;-)

可能是图像预处理的问题。您没有指定任何预处理选项,而Caffe模型通常使用ImageNet meanstd进行归一化。请参考我的博客文章了解更多信息。https:/machinethink.netbloghelp-core-ml-gives-wrong-output)。

然而,我在你的deploy.prototxt中没有看到任何规范化选项,所以可能不是这个原因。

我将如何调试:从Caffe模型中删除除第一层以外的所有内容,并转换为Core ML。在Caffe和Core ML中同时运行这个单层模型并比较输出。如果它们不一样,说明你加载或预处理输入数据的方式有问题。

© www.soinside.com 2019 - 2024. All rights reserved.