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
}
}