我正在尝试训练/创建自己的分类器,我将此代码附加到主摄像头,我没有从控制台得到任何响应,也没有收到任何错误。或者我只是以错误的方式做到了?
public class VisualRecog : MonoBehaviour{
private VisualRecognition m_VisualRecognition = new VisualRecognition();
void Start()
{
string m_positiveExamplesPath = Application.dataPath + "/testData/cpu_positive_examples.zip";
string m_negativeExamplesPath = Application.dataPath + "/testData/negative_examples.zip";
Dictionary<string, string> positiveExamples = new Dictionary<string, string>();
positiveExamples.Add("cpu", m_positiveExamplesPath);
if (!m_VisualRecognition.TrainClassifier(OnTrainClassifier, "compClassifier", positiveExamples, m_negativeExamplesPath))
Log.Debug("ExampleVisualRecognition", "Train classifier failed!");
}
private void OnTrainClassifier(GetClassifiersPerClassifierVerbose classifier, string data)
{
if (classifier != null)
{
Log.Debug("ExampleVisualRecognition", "Classifier is training! " + classifier);
}
else
{
Log.Debug("ExampleVisualRecognition", "Failed to train classifier!");
}
}
}
顺便提一下here是Unity SDK的链接。谢谢!
答案 0 :(得分:2)
如果m_positiveExamplesPath
和m_negativeExamplesPath
不是有效路径,您将获得以下异常:
DirectoryNotFoundException:找不到路径的一部分
如果您没有设置凭据,则会收到错误:
未找到API密钥!
消除了这两个问题。
运行此代码时,从IBM服务器获取回复大约需要10
秒。
请等待至少15
秒以获得回复。
等待时间实际上取决于 cpu_positive_examples.zip 和 negative_examples.zip 文件的大小。有时,可能需要几分钟。
我没有从控制台得到任何回复,也没有收到任何错误。
问题来自Log
功能。如果仔细观察,您会发现IBM正在使用Log.Debug
而不是Debug.Log
。 IBM的Log.Debug
来自IBM.Watson.DeveloperCloud.Logging
命名空间,它不会显示在“编辑器控制台”选项卡中。我无法判断这是一个错误或功能,但用Debug.Log
替换所有Log.Debug
应该可以解决您的问题。
我在10秒内收到了以下代码的回复(使用Debug.Log
):
private VisualRecognition m_VisualRecognition = new VisualRecognition();
void Start()
{
string positiveExamplesPath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers/giraffe_positive_examples.zip";
string negativeExamplesPath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers/negative_examples.zip";
Dictionary<string, string> positiveExamples = new Dictionary<string, string>();
positiveExamples.Add("giraffe", positiveExamplesPath);
if (!m_VisualRecognition.TrainClassifier(OnTrainClassifier, "unity-test-classifier-example", positiveExamples, negativeExamplesPath))
Debug.Log("Train classifier failed!");
}
private void OnTrainClassifier(GetClassifiersPerClassifierVerbose classifier, string data)
{
if (classifier != null)
{
Debug.Log("Classifier is training! " + classifier);
}
else
{
Debug.Log("Failed to train classifier!" + data);
}
}
答案 1 :(得分:0)
如果您使用的是Log.Debug()
,请使用
Start()
或Awake()
函数的开头初始化反应堆
LogSystem.InstallDefaultReactors();
或者,像程序员说的那样,使用Unity的Debug.Log()
。