无法从请求 VNCoreMLRequest 的结果中获取边界框

Unable to get boundingBox from result for a request VNCoreMLRequest

我正在尝试将 Vision 与我训练的自定义模型一起使用,但我没有找到一种方法来获取 Vision 在帧中检测到它的边界框。

模型:我使用 CreateML 训练了模型,它可以检测 2 个特定项目。 我用各种图像在 CreateML 中测试了模型,它正确地检测到 2 个项目并在它们周围放置了一个框。那么,Vision 不应该也能给我边界框吗?

func prepare() {
    do {
        let vnModel = try VNCoreMLModel(for: modelFile.model)
        let coreMlRequest = VNCoreMLRequest(model: vnModel,
                                            completionHandler: { (request, error) in
            guard
                let results = request.results
                    as? [VNClassificationObservation]  // is this the right cast?
            else { return }

            // how do I get the bounding box from the results?
        })
        vnRequests = [coreMlRequest]
    }
    catch {
        print(error)
    }
}

func run(arFrame: ARFrame) {
    do {
        let requestHandler = VNImageRequestHandler(cvPixelBuffer: arFrame.capturedImage,
                                                   options: [:])
        try requestHandler.perform(self.vnRequests)
    }
    catch {
        print(error)
    }
}

你真的训练过物体检测模型吗?还是 class化模型?

您只能获得对象检测模型的边界框,而不是 classifier。

假设您训练了一个对象检测器,正确的 class 是 VNRecognizedObjectObservation,而不是 VNClassificationObservation