2017-10-20 62 views
0

时,应用程序崩溃我正在使用CoreML SqueezeNet模型从图像检测纸张或矩形。当CoreML sqeezeNet模型的request.results被转换为[VNRectangleObservation]

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

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

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

如果你想检测其中在图像中的对象发生,你需要使用不同的模型,如squeezeDet(带D)或YOLO。

+0

根据模型,它返回[Any]作为结果,因此我认为我可以施放它。谢谢你的回答。 – cgeek