首页 文章

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

提问于
浏览
0

我正在使用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 回答

  • 2

    您的应用崩溃的原因是 request.results 是一个 VNClassificationObservation 对象的数组 . 你不能将它转换为 VNRectangleObservation 对象的数组,因为这是完全不同的东西 . 它's like buying a bottle of milk from the store and trying to turn it into a coke by putting a Coca-Cola label on the bottle. It doesn'工作 .

    如果要检测对象出现在图像中的哪个位置,则需要使用不同的模型,如squeezeDet(带有D)或YOLO .

相关问题