【问题标题】:IBM Watson Unity 3d Visual Recognition SDK: Parsing the classifier output resultsIBM Watson Unity 3d Visual Recognition SDK:解析分类器输出结果
【发布时间】:2018-02-14 04:10:44
【问题描述】:

我正在尝试将 Onclassify 调用的结果转换为可用格式。我似乎不知道如何返回 classResult.m_class 转换为可用格式,例如更新 Text 对象或将其存储在变量中。

有人可以建议将多个或单个分类器的 classResult.m_class 的结果传递到我可以稍后操作或传递给其他函数的变量中的一种好的推荐方法。

private void OnClassify(ClassifyTopLevelMultiple classify, string data)
{
    if (classify != null)
    {
        Log.Debug("WebCamRecognition", "images processed: " + classify.images_processed);
        foreach (ClassifyTopLevelSingle image in classify.images)
        {

            Log.Debug("WebCamRecognition", "\tsource_url: " + image.source_url + ", resolved_url: " + image.resolved_url);
            foreach (ClassifyPerClassifier classifier in image.classifiers) {

                Log.Debug ("WebCamRecognition", "\t\tclassifier_id: " + classifier.classifier_id + ", name: " + classifier.name);
                foreach (ClassResult classResult in classifier.classes) {
                    Log.Debug ("WebCamRecognition", "\t\t\tclass: " + classResult.m_class + ", score: " + classResult.score + ", type_hierarchy: " + classResult.type_hierarchy);
                }
            }
        }
    }
    else
    {
        Log.Debug("WebCamRecognition", "Classification failed!");
    }
}

【问题讨论】:

    标签: c# unity3d ibm-watson visual-recognition


    【解决方案1】:

    ClassifyTopLevelMultiple 对象在 images 属性中包含一组 ClassifyTopLevelSingle 对象。在每个ClassifyTopLevelSingle 对象中,都有一个ClassifyPerClassifier 对象数组,它们为您提供每个自定义分类器的结果。每个ClassifyPerClassifier 对象都有一个ClassResult 对象列表,其中包含classscore

    您可以像这样为每个数组中的第一项提取每个结果的类和分数:

    private void OnClassifyGet(ClassifyTopLevelMultiple classify, string data)
    {
        string class = classify.images[0].classifiers[0].classes[0].m_class;
        string classScore= classify.images[0].classifiers[0].classes[0].score;
    }
    

    您发布的示例代码将遍历所有图像、分类器和类,以列出每个 ClassifyTopLevelMultiple 结果中的所有类和分数。

    另外值得注意的是,Watson Unity SDK 有一个updated version。如果您刚刚开始一个项目,那么从最新的 SDK 版本开始可能是值得的,因为最新版本是对所有先前版本的重大更改。

    【讨论】:

    • 感谢泰姬陵!我不知道有一个新的 SDK。 I 文档是否已更新?
    • 只有一件事我在代码示例/sn-ps(github.com/watson-developer-cloud/unity-sdk/tree/develop/…) 中注意到 taj 您正在引用数据,但它没有在调用中声明变量。 private void OnUpdateClassifier(GetClassifiersPerClassifierVerbose 分类器) { Log.Debug("ExampleVisualRecognition", "更新分类器结果:{0}", data); }
    • Data 是一个字符串,你可以通过它传递任何数据。如果最初调用时数据为空,我会添加从服务返回的原始 json。这是查看对象外观的一种简单方法。
    • Taj 只是为了确认一下,我的项目还在使用之前的unity SDK。我需要更新这个还是我的代码会正常运行。在最后一天左右,平台表明我发出了太多并发 http 请求,并且我使用标准包上的服务。一天之内我接听的电话不可能超过 25 000 个。有什么建议吗?
    • 根据我的经验,Visual Recognition 的限制远低于 25k API 调用。这与 SDK 无关。我认为所有用户都应该更新到最新版本的 Unity SDK。如果您只使用 Visual Recognition,则应该进行最少的更改。
    猜你喜欢
    • 2018-01-13
    • 1970-01-01
    • 2017-05-22
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多