I'm experiencing issues with the Core ML Async API, as it doesn't seem to be working correctly. It consistently hangs during the "03 performInference, after get smallInput, before prediction" part, as shown in the attached:
**** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction
**** createFrameAsync before performInference 01 performInference, before resizeFrame **** createFrameAsync before performInference 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction 04 performInference, after prediction, before get result 05 performInference, after get result, before setRenderData 06 performInference, after setRenderData **** createFrameAsync after performInference **** createFrameAsync before performInference 01 performInference, before resizeFrame 02 performInference, after resizeFrame, before get smallInput 03 performInference, after get smallInput, before prediction
private func createFrameAsync(for sampleBuffer: CMSampleBuffer ) {
guard let pixelBuffer = sampleBuffer.imageBuffer else { return }
Task {
print("**** createFrameAsync before performInference")
do {
try await runModelAsync(on: pixelBuffer)
} catch {
print("Error processing frame: \(error)")
}
print("**** createFrameAsync after performInference")
}
}
func runModelAsync(on pixelbuffer: CVPixelBuffer) async
{
print("01 performInference, before resizeFrame")
guard let data = metalResizeFrame(sourcePixelFrame: pixelbuffer, targetSize: MTLSize.init(width: InputWidth, height: InputHeight, depth: 1), resizeMode: .scaleToFill) else {
os_log("Preprocessing failed", type: .error)
return
}
print("02 performInference, after resizeFrame, before get smallInput")
let input = model_smallInput(input: data)
print("03 performInference, after get smallInput, before prediction")
if let prediction = try? await mlmodel!.model.prediction(from: input) {
print("04 performInference, after prediction, before get result")
var results: [Float] = []
let output = prediction.featureValue(for: "output")?.multiArrayValue
if let bufferPointer = try? UnsafeBufferPointer<Float>(output!) {
results = Array(bufferPointer)
}
print("05 performInference, after get result, before setRenderData")
let localResults = results
await MainActor.run {
ScreenRecorder.shared
.setRenderDataNormalized(
screenImage: pixelbuffer,
depthData: localResults
)
}
print("06 performInference, after setRenderData")
}
}
Replies
1
Boosts
0
Views
574
Participants
2