0

我想将此 NSFW 模型转换为 CoreML 模型。我做了什么:

  1. 下载 Anaconda 2.7
  2. 安装 coremltools
  3. 从这里转换这个 yahoo nsfw 模型 - https://github.com/yahoo/open_nsfw/tree/master/nsfw_model但我不确定它是 Caffe v1,因为 Apple 文档说只支持这个版本。无论如何……</li>
  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)]

如何调试此问题并找出问题所在?

在此处输入图像描述

4

1 回答 1

0

也许您只看顽皮的图像?;-)

这可能是图像预处理。您没有指定任何预处理选项,而 Caffe 模型通常使用 ImageNet mean/std 进行归一化。有关更多信息,请参阅我的博客文章:https ://machinethink.net/blog/help-core-ml-gives-wrong-output/

但是,我在您的 deploy.prototxt 中没有看到任何规范化选项,所以可能不是这样。

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

于 2020-05-28T10:19:14.130 回答