Чтобы заархивировать это, я думал только о результате выполнения 1, который является лучшим, поэтому я проверяю документацию, и у VisionCloudDetectorOptions есть эта переменная maxResults
, поэтому, если я установлю ее на 1, моя цель -завершено, но это работает только с облачной маркировкой изображений.Поэтому я проверяю VisionLabelDetectorOptions , которые запускаются локально, и для этого нет опций.И результат при печати из этого
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)
Это пример кода, который я запускаю из Firebase / quickstart-ios , начиная сстрока 645.
Мое второе решение - сделать topResult
подобно CoreML, который использует VNClassificationObservation
для возврата первого результата.Примерно так
guard let results = request.results as? [VNClassificationObservation],
let topResult = results.first else {
fatalError("Unexpected result")
}
, но я еще не выяснил, как это повторить.
Итак, есть ли способ получить только самый высокий ярлык Confidence
?В данном случае это метка Food
.