1

我正在尝试训练/创建自己的分类器,我将此代码附加到主摄像头,但我没有得到控制台的任何响应,也没有收到任何错误。还是我只是做错了?

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!");
        }
    }
}

顺便说一下,这里是 Unity SDK 的链接。谢谢!

4

2 回答 2

2

如果m_positiveExamplesPath并且m_negativeExamplesPath 不是有效路径,您将收到异常信息:

DirectoryNotFoundException:找不到路径的一部分

如果您没有设置凭据,那么您将收到错误消息:

未找到 API 密钥!

这两个问题都消除了。

10运行此代码时,从 IBM 服务器获得回复大约需要几秒钟。请等待至少15几秒钟的回复。等待时间实际上取决于您的cpu_positive_examples.zipnegative_examples.zip文件有多大。有时,可能需要几分钟。

我没有得到控制台的任何响应,也没有收到任何错误。

问题出在Log功能上。如果您仔细观察,您会发现 IBM 使用Log.Debug的是Debug.Log. IBMLog.Debug来自IBM.Watson.DeveloperCloud.Logging命名空间,它不会显示在编辑器控制台选项卡中。我不知道这是错误还是功能,但是将所有替换为Log.Debug应该Debug.Log可以解决您的问题。

我在 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);
    }
}
于 2017-01-10T01:28:47.420 回答
0

如果您正在使用,请在您的or函数Log.Debug()的开头使用Start()Awake()

LogSystem.InstallDefaultReactors();

或者,就像程序员说的那样,使用 Unity 的Debug.Log().

于 2017-03-06T15:47:22.637 回答