IBM Watson Unity 3d Visual Recognition SDK:解析分类器输出结果
IBM Watson Unity 3d Visual Recognition SDK: Parsing the classifier output results
我正在尝试将 Onclassify 调用的结果转换为可用的格式。我似乎不知道如何 return
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!");
}
}
ClassifyTopLevelMultiple
对象包含 images
属性 中的 ClassifyTopLevelSingle
个对象数组。在每个 ClassifyTopLevelSingle
对象中,都有一个 ClassifyPerClassifier
对象数组,它们为您提供每个自定义 classifier 的结果。每个 ClassifyPerClassifier
对象都有一个 ClassResult
对象列表,其中包含 class
和 score
.
您可以像这样提取每个数组中第一项的每个结果的 class 和分数:
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;
}
您发布的示例代码将遍历所有图像、classifiers 和 classes 以列出每个 ClassifyTopLevelMultiple
结果中的所有 classes 和分数。
另外值得注意的是,有一个 updated version 的 Watson Unity SDK。如果您刚刚开始一个项目,那么从最新的 SDK 版本开始可能是值得的,因为最新版本是对所有以前版本的重大更改。
我正在尝试将 Onclassify 调用的结果转换为可用的格式。我似乎不知道如何 return 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!");
}
}
ClassifyTopLevelMultiple
对象包含 images
属性 中的 ClassifyTopLevelSingle
个对象数组。在每个 ClassifyTopLevelSingle
对象中,都有一个 ClassifyPerClassifier
对象数组,它们为您提供每个自定义 classifier 的结果。每个 ClassifyPerClassifier
对象都有一个 ClassResult
对象列表,其中包含 class
和 score
.
您可以像这样提取每个数组中第一项的每个结果的 class 和分数:
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;
}
您发布的示例代码将遍历所有图像、classifiers 和 classes 以列出每个 ClassifyTopLevelMultiple
结果中的所有 classes 和分数。
另外值得注意的是,有一个 updated version 的 Watson Unity SDK。如果您刚刚开始一个项目,那么从最新的 SDK 版本开始可能是值得的,因为最新版本是对所有以前版本的重大更改。