如何将额外的参数传递给Vision框架?

问题描述 投票:0回答:1

我有一个运行良好的Swift / CoreML代码。我想通过使用Vision框架简化代码。在这段代码中,我想摆脱UIImage-> CGImage-> CVPixelBuffer转换。我知道使用Vision可以直接传递CGImage作为输入参数。我的问题是我的模型需要2个输入(图像+ MLMultiArray)以及输出和图像:

Inputs

    my_input : Image (Color 512 x 512)
    my_sigma : MultiArray (Float32 1)

Outputs

    my_output : Image (Color 512 x 512)

我尝试按以下方式传递sigma参数:

guard let cgImage = uiImage.cgImage else {
    return nil
}

let options:[VNImageOption: Any] = [VNImageOption(rawValue: "my_sigma"): 0.1]

let handler = VNImageRequestHandler(cgImage: cgImage, options: options)
do {
    try handler.perform(visionRequest)
} catch {
    print(error)
}

这样做时,出现以下错误:

[coreml]验证输入失败。没有结果:Error Domain = com.apple.vis代码= 3“ VNCoreMLTransform请求失败” UserInfo = {NSLocalizedDescription = VNCoreMLTransform请求失败,NSUnderlyingError = 0x280cbbab0 {Error Domain = com.apple.CoreML代码= 0“没有必需的输入功能传递给神经网络。“

所以,似乎我没有正确地将第二个参数传递给请求处理程序。我一直找不到答案。

  • 将此类参数传递给Vision的正确方法是什么?
  • 您知道我是否可以使用Vision直接输出图像吗?

谢谢您的帮助。

swift coreml vision
1个回答
0
投票

[查看featureProviderVNCoreMLRequest属性。这是一个提供其他输入的对象,即图像输入以外的任何其他输入。

© www.soinside.com 2019 - 2024. All rights reserved.