首页 > 解决方案 > 从 PyTorch 转换后 CoreML 模型出现“来自层的异常:149”问题

问题描述

我使用 PyTorch 训练了一个 YOLOv3-SPP 模型。然后我将其保存为 ONNX 模型,然后使用onnx-coreml. 当我尝试使用该模型进行预测时,出现此错误:

    YOLOv3-CoreML[13481:1004975] [espresso] [Espresso::handle_ex_plan] exception=Espresso exception: "Invalid state": reshape mismatching size: 13 13 24 1 1 -> 6 10 8 3 1 [Exception from Layer: 149: 300]
2020-03-16 13:46:05.248612-0500 YOLOv3-CoreML[13481:1004975] [coreml] Error computing NN outputs -1

这是我用来进行预测的代码:

 if let prediction = try? model.prediction(input_1: image) {
      print("Output: \(prediction)")
    }

我进行了一些挖掘以找到第 149 层。我用这个脚本来找到它的名字:

import coremltools
import numpy as np

mlmodel = coremltools.models.MLModel("model.mlmodel")
spec = mlmodel._spec

print(spec.neuralNetwork.layers[149]) 

我发现它的名字是“308”。所以我在 Netron 中打开了模型,得到了这个:

在此处输入图像描述

有问题的图层以红色圈出。如何让我的 CoreML 模型正常工作?

标签: iospytorchcoremlonnxonnx-coreml

解决方案


推荐阅读