Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 是否有方法仅在VisionLabelDetector中获得最高置信度结果?_Ios_Swift_Firebase Mlkit - Fatal编程技术网

Ios 是否有方法仅在VisionLabelDetector中获得最高置信度结果?

Ios 是否有方法仅在VisionLabelDetector中获得最高置信度结果?,ios,swift,firebase-mlkit,Ios,Swift,Firebase Mlkit,为了归档这个,我考虑只取1个结果,这是最上面的一个,所以我检查了文档并使用这个变量maxResults,所以如果我将它设置为1,我的目标就完成了,但这只适用于基于云的图像标签。所以我检查哪个在本地运行,没有选择。从这个打印出来的结果是什么 return "Label: \(String(describing: feature.label)), " + "Confidence: \(feature.confidence), " + "EntityID: \(String(d

为了归档这个,我考虑只取1个结果,这是最上面的一个,所以我检查了文档并使用这个变量maxResults,所以如果我将它设置为1,我的目标就完成了,但这只适用于基于云的图像标签。所以我检查哪个在本地运行,没有选择。从这个打印出来的结果是什么

return "Label: \(String(describing: feature.label)), " +
      "Confidence: \(feature.confidence), " +
      "EntityID: \(String(describing: feature.entityID)), " +
      "Frame: \(feature.frame)"
    }.joined(separator: "\n")
会变成这样吗

Label: Food, Confidence: 0.795696, EntityID: /m/02wbm, Frame: (0.0, 0.0, 0.0, 0.0)
Label: Fruit, Confidence: 0.71232, EntityID: /m/02xwb, Frame: (0.0, 0.0, 0.0, 0.0)
Label: Vegetable, Confidence: 0.595484, EntityID: /m/0f4s2w, Frame: (0.0, 0.0, 0.0, 0.0)
Label: Plant, Confidence: 0.536178, EntityID: /m/05s2s, Frame: (0.0, 0.0, 0.0, 0.0)
这些是我从第645行开始运行的示例代码

我的第二个解决方案是像CoreML中那样执行topResult,它使用VNClassificationObservation返回第一个结果。像这样的

guard let results = request.results as? [VNClassificationObservation],
            let topResult = results.first else {
                fatalError("Unexpected result")
        }
但我还没有弄明白如何像那样复制

那么,有没有一种方法可以只使用最高置信度标签?在本例中是食品标签。

假设标签是包含VisionLabelDetector返回的所有VisionLabel对象的数组。detectin:completion:,通常数组中的所有标签都已根据其置信度从高到低进行排序,因此您只需使用标签获取最高置信度标签。首先

如果您想更加安全,自己选择最高置信度标签,您可以执行以下操作:

让topLabel=labels.maxby:{a,b->Bool-in 返回a.confidence}

在本例中,示例回购协议使用了功能。只需添加features.top,然后像上面那样打印结果,我们将获得最高的置信度标签。谢谢你的建议!