2017-10-20 68 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

相關問題