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

Posted

技术标签:

【中文标题】VNImageRequestHandler 可以接受 MLMultiArray 作为输入吗? (无需转换为 UIImage)【英文标题】:Can VNImageRequestHandler accepts MLMultiArray as an input? (Without converting to UIImage) 【发布时间】:2021-08-30 03:57:48 【问题描述】:

我的应用中有两个MLModels。第一个是生成一个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)

或者我必须进行来回转换?试图减少处理延迟。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

这可能是最好的解决方案!不知道我可以直接传递像素缓冲区:) 我会看看 CoreML 幸存者指南 :)

以上是关于VNImageRequestHandler 可以接受 MLMultiArray 作为输入吗? (无需转换为 UIImage)的主要内容,如果未能解决你的问题,请参考以下文章

iOS Vision 检测二值化图像上的光线

入户总线可以接吗

神经网络的全连接层

麻了, 接私活赚翻了,盘点10个程序员可以接私活的平台和一些建议

外接摄像头怎么打开?

where 后面可以接聚合函数吗