【问题标题】:mlmodel doesn’t work properly after conversion from Caffe using coremltools使用 coremltools 从 Caffe 转换后,mlmodel 无法正常工作
【发布时间】:2020-09-15 09:02:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: caffe coreml coremltools mlmodel


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 哈哈,相信你已经回答了这个模型和相关问题。但是我厌倦了 is_bgr=True 没有任何运气。 stackoverflow.com/questions/44663214/…
    • 在有或没有 image_scale 的情况下尝试了这个,到目前为止输出相同:( coreml_model = coremltools.converters.caffe.convert(('resnet_50_1by2_nsfw.caffemodel', 'deploy.prototxt'), image_input_names='data ', is_bgr=True, red_bias=-123.68, green_bias=-116.78, blue_bias=-103.94)
    猜你喜欢
    • 2021-12-05
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多