Visual Recognition error 400: Cannot execute learn

2019-05-24 12:19发布

I am using Visual Recognition curl command to add a classification to an image:

curl -u "user":"password"  \
-X POST \
-F "images_file=@image0.jpg" \
-F "classifier_ids=classifierlist.json" \
"https://gateway.watsonplatform.net/visual-recognition-beta/api/v2/classifiers?version=2015-12-02"

json file:

{
  "classifiers": [
    { 
        "name": "tomato",
        "classifier_id": "tomato_1",
        "created": "2016-03-23T17:43:11+00:00",
        "owner": "xyz"
    }
  ]
}        

(Also tried without the classifiers array. Got the same error) and getting an error: {"code":400,"error":"Cannot execute learning task : no classifier name given"}

Is something wrong with the json?

2条回答
ら.Afraid
2楼-- · 2019-05-24 12:56

To specify the classifiers you want to use you need to send a JSON object similar to:

{"classifier_ids": ["Black"]}

An example using Black as classifier id in CURL:

curl -u "user":"password"  \
-X POST \
-F "images_file=@image0.jpg" \
-F "classifier_ids={\"classifier_ids\":[\"Black\"]}"
"https://gateway.watsonplatform.net/visual-recognition-beta/api/v2/classify?version=2015-12-02"

If you want to list the classifier ids in a JSON file then:

curl -u "user":"password"  \
-X POST \
-F "images_file=@image0.jpg" \
-F "classifier_ids=@classifier_ids.json"
"https://gateway.watsonplatform.net/visual-recognition-beta/api/v2/classify?version=2015-12-02"

Where classifier_ids.json has:

{
 "classifier_ids": ["Black"]
}

You can test the Visual Recognition API in the API Explorer.
Learn more about the service in the documentation.

查看更多
Summer. ? 凉城
3楼-- · 2019-05-24 13:01

The model schema you are referencing, and what is listed in the API reference, is the format of the response json. It is an example of how the API will return your results.

The format of the json that you use to specify classifiers should be a simple json object, as German suggests. In a file, it would be:

{
"classifier_ids": ["tomato_1"]
}

You also need to use < instead of @ for the service to read the contents of the json file correctly. (And you might need to quote the < character on a command line since it has special meaning (redirect input).) So your curl would be:

curl -u "user":"password"  \
-X POST \
-F "images_file=@image0.jpg" \
-F "classifier_ids=<classifier_ids.json"
"https://gateway.watsonplatform.net/visual-recognition-beta/api/v2/classify?version=2015-12-02"
查看更多
登录 后发表回答