如何使用Firebase-CloudVision(ML)获取图像的特定信息

时间:2019-04-09 11:50:11

标签: ios swift firebase image-recognition firebase-mlkit

我正在使用Firebase cloudVision(ML)API读取图像。 我可以取回图像的信息,但不是特定的。

示例:当我拍摄并上传MacBook的照片时,其输出为“笔记本,笔记本电脑,电子设备..etc”。

但是我想获得苹果MacBook这样的品牌名称, 我看到很少有应用程序可以这样做。 我找不到与此有关的任何信息,因此我在这里发布。 请建议或指导是否有人遇到此问题

我的代码:

    func pickedImage(image: UIImage) {
    imageView.image = image
    imageView.contentMode = .scaleAspectFit
    guard let image = imageView.image else { return }
    // let onCloudLabeler = 
        Vision.vision().cloudImageLabeler(options: options)

    let onCloudLabeler = Vision.vision().cloudImageLabeler()


    // Define the metadata for the image.
    let imageMetadata = VisionImageMetadata()


    imageMetadata.orientation = .topLeft

    // Initialize a VisionImage object with the given UIImage.
    let visionImage = VisionImage(image: image)
    visionImage.metadata = imageMetadata

    onCloudLabeler.process(visionImage) { labels, error in
        guard error == nil, let labels = labels, !labels.isEmpty 
   else {
            // [START_EXCLUDE]
            let errorString = error?.localizedDescription ?? "No results returned."
            print("Label detection failed with error: \(errorString)")
            //self.showResults()
            // [END_EXCLUDE]
            return
        }

        // [START_EXCLUDE]
        var results = [String]()
        let resultsText = labels.map { label -> String in
            results.append(label.text)
            return "Label: \(label.text), " +
                "Confidence: \(label.confidence ?? 0), " +
            "EntityID: \(label.entityID ?? "")"
            }.joined(separator: "\n")
        //self.showResults()
        // [END_EXCLUDE]
        print(results.count)
        print(resultsText)

        self.labelTxt.text = results.joined(separator: ",")
        results.removeAll()

    }


}

2 个答案:

答案 0 :(得分:0)

如果您看到其他应用程序执行了您的应用程序无法执行的操作,则这些其他应用程序可能会使用与您所使用的机器学习模型不同的机器学习模型。

如果您想使用ML Kit for Firebase完成相同的工作,可以use a custom model训练自己或从其他来源获得。

答案 1 :(得分:0)

正如Puf所说,您看到的应用程序可能正在使用他们自己的自定义ML模型。 ML Kit现在支持根据您自己的训练数据创建自定义图像分类模型。在此处查看AutoML Vision Edge功能:https://firebase.google.com/docs/ml-kit/automl-vision-edge