VNImageRequestHandler 可以接受 MLMultiArray 作为输入吗? (不转换为 UIImage)

Can VNImageRequestHandler accepts MLMultiArray as an input? (Without converting to UIImage)

我的应用程序中有两个 MLModel。第一个是生成一个 MLMultiArray 输出,该输出将用作第二个模型输入。
因为我正在努力让事情尽可能地表现最好。我正在考虑使用 VNImageRequestHandler 为它提供第一个模型输出(MLMultiArray)并使用 Vision resize 和 rectOfIntersent 来避免将第一个输入转换为图像,裁剪特征,以避免需要将第一个输出转换为图像,手动执行所有操作并使用常规图像初始化程序。

类似的东西:

   let request = VNCoreMLRequest(model: mlModel) { (request, error) in
        // handle logic?
    }
    
    request.regionOfInterest = // my region

    let handler = VNImageRequestHandler(multiArray: myFirstModelOutputMultiArray)

或者我必须来回转换?努力减少处理延迟。

Vision 使用图像(因此得名 ;-))。如果你不想使用图像,你需要直接使用 Core ML API。

如果第一个模型的输出确实是图像,最简单的方法是将该模型的输出类型更改为图像,这样您就可以获得 CVPixelBuffer 而不是 MLMultiArray。然后就可以直接把这个CVPixelBuffer传给下一个使用Vision的模型了。