2017-01-09 38 views
1

我想訓練/創建我自己的分類器,我將此代碼附加到主攝像頭,並且沒有從控制檯得到任何響應,也沒有得到任何錯誤。或者我只是做錯了方式?IBM Watson視覺識別在Unity3d中訓練自己的分類器

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

嗨,請提供該課程中的所有內容,包括課程名稱。這對幫助你很有幫助。您可能希望標記C#以讓其他人也幫助您。 – Programmer

+0

編輯*謝謝你的男人!你可以幫我嗎?我不知道我爲什麼沒有在控制檯中得到任何迴應,並且我沒有任何錯誤。我真的需要做這個工作。謝謝! – MDLots

回答

2

如果m_positiveExamplesPathm_negativeExamplesPath不是有效的路徑,你會得到不同的是說:

DirectoryNotFoundException: Could not find a part of the path

如果你沒有設置你的證書,那麼你將得到錯誤:

No API Key was found!

這兩個問題被消除。

運行此代碼時,需要大約10秒才能從IBM服務器獲得答覆。 請等待至少15秒的回覆。 等待時間實際上取決於你的cpu_positive_examples.zipnegative_examples.zip文件。有時候,這可能需要幾分鐘的時間。

I didnt got any response from the console nor getting any errors.

問題來自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); 
    } 
} 
0

如果使用的是Log.Debug(),使用初始化您Start()Awake()功能開始反應器

LogSystem.InstallDefaultReactors(); 

另外,像程序員說的,使用Unity的Debug.Log()

相關問題