func performInference()

in SemanticSegmentationSample/SemanticSegmentationSample/DataModel.swift [106:124]


    func performInference(_ pixelBuffer: CVPixelBuffer) async throws {
        guard let model, let postProcessor = postProcessor else {
            return
        }

        let originalSize = CGSize(width: CVPixelBufferGetWidth(pixelBuffer), height: CVPixelBufferGetHeight(pixelBuffer))
        let inputImage = CIImage(cvPixelBuffer: pixelBuffer).resized(to: targetSize)
        context.render(inputImage, to: inputPixelBuffer)
        let result = try model.prediction(image: inputPixelBuffer)

        guard let semanticImage = try? postProcessor.semanticImage(semanticPredictions: result.semanticPredictionsShapedArray) else {
            throw InferenceError.postProcessing
        }
        let outputImage = semanticImage.resized(to: originalSize).image

        Task { @MainActor in
            segmentationImage = outputImage
        }
    }