当请求时,应用程序崩溃。将CoreML sqeezeNet模型的结果转换为[VNRectangleObservation]

时间:2017-10-20 05:30:34

标签: ios swift coreml apple-vision

我正在使用CoreML SqueezeNet Model来检测图像中的纸张或矩形。

我根据苹果文档创建了模型和请求。

guard let model = try? VNCoreMLModel(for: squeezeNetModel.model)else {fatalError()}
let request = VNCoreMLRequest(model: model) { (request, error) in
     guard let rectangles = request.results as? [VNClassificationObservation] else{ fatalError()}
}

以上代码运行正常。但我想检测纸张,因此使用[VNRectangleObservation]代替[VNClassificationObservation]。 这会导致我的应用崩溃。我没有在任何地方找到解决这个问题的方法。我想使用[VNRecatangleObservation]的主要原因是捕获检测到的图像并在检测到的图像上绘制红色叠加。

1 个答案:

答案 0 :(得分:2)

您的应用崩溃的原因是request.resultsVNClassificationObservation个对象的数组。您无法将其转换为VNRectangleObservation个对象的数组,因为这是完全不同的东西。这就像从商店购买一瓶牛奶,并试图通过在瓶子上放一个可口可乐标签将其变成可乐。它不起作用。

如果要在图像中检测 where ,则需要使用不同的模型,例如squeezeDet(带有D)或YOLO。