我正在使用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]的主要原因是捕获检测到的图像并在检测到的图像上绘制红色叠加。
答案 0 :(得分:2)
您的应用崩溃的原因是request.results
是VNClassificationObservation
个对象的数组。您无法将其转换为VNRectangleObservation
个对象的数组,因为这是完全不同的东西。这就像从商店购买一瓶牛奶,并试图通过在瓶子上放一个可口可乐标签将其变成可乐。它不起作用。
如果要在图像中检测 where ,则需要使用不同的模型,例如squeezeDet(带有D)或YOLO。