0

我正在使用 CoreML SqueezeNet 模型从图像中检测纸张或矩形。

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

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] 的主要原因是捕获检测到的图像并在检测到的图像上绘制红色叠加层。

4

1 回答 1

2

您的应用程序崩溃的原因是对象request.results数组。VNClassificationObservation你不能把它转换成一个VNRectangleObservation对象数组,因为那是完全不同的东西。这就像从商店买一瓶牛奶,然后在瓶子上贴上可口可乐标签,试图把它变成可乐。它不起作用。

如果您想检测图像物体出现的位置,您需要使用不同的模型,例如squeezeDet(带有D)或YOLO。

于 2017-10-20T08:51:05.090 回答