我正在使用Watson Visual Recognition并成功创建了一个自定义分类器。分类器显示它已准备就绪,具有以下状态:
{
"classifier_id": "paintings_----",
"name": "paintings",
"owner": "--- owner id -----",
"status": "ready",
"created": "2016-11-09T14:55:45.835Z",
"classes": [
{"class": "water"},
{"class": "collage"},
{"class": "forest"},
{"class": "beach"},
{"class": "still"},
{"class": "abstract"},
{"class": "building"},
{"class": "garden"}
],
"retrained": "2016-11-09T15:11:50.740Z"
}
我正在执行以下curl命令来测试此分类器:
curl -X POST -F "images_file=@IMG_5309.JPG" -F "parameters=@paintings.json" "https://gateway-a.watsonplatform.net/visual-recognition/api/v3/classify?api_key={valid API key}&version=2016-05-20&threshold=0.0"
并且paintings.json文件具有以下内容:
{
"parameters":{
"classifier_ids": [
"water",
"collage",
"forest",
"beach",
"still",
"abstract",
"building",
"garden"
] ,
"owner":"me",
"threshold":".5"
}
}
运行此查询将返回以下结果:
{
"custom_classes": 0,
"images": [
{
"classifiers": [
{
"classes": [
{
"class": "vegetation",
"score": 1.0
},
{
"class": "flower",
"score": 0.668188,
"type_hierarchy": "/products/gifts/flower"
},
{
"class": "purple",
"score": 0.268941,
"type_hierarchy": "/colors/purple"
}
],
"classifier_id": "default",
"name": "default"
}
],
"image": "IMG_5309.JPG"
}
],
"images_processed": 1
}
视觉识别显然没有使用我的分类器文件,我可能错过了一些非常明显的东西。关于我错过的任何想法?我遵循此处的文档:https://www.ibm.com/watson/developercloud/visual-recognition/api/v3/#classify_an_image,其中声明JSON参数为:
classifier_ids - 用于对图像进行分类的分类器ID数组。
所有者 - 值为“IBM”和/或“ me ”的数组,用于指定要运行的分类器。
阈值 - 浮点值,指定类必须在响应中显示的最低分数。
答案 0 :(得分:2)
您的paintings.json文件中的数组classifier_ids
应该有1个条目:"paintings_----"
(使用数字ID而不是破折号)而不是类名(水,拼贴等)。< / p>
因为它无法将类名理解为classifier_id,所以API会返回&#34;默认&#34;通用分类器(因此字段&#34; custom_classes:0&#34;)
此外,如果使用owners
字段应该是复数 - 但是,"owners": "me"
是告诉API使用所有自定义分类符并跳过默认分类符的简写。在您的情况下,您确切地知道要调用哪个classifier_id,因此您可以省略owners
字段。我只是仔细检查了文档示例,看到我们需要修复这两个问题的API参考中的示例。
感谢您在问题中包含所有细节,并祝您好运!
答案 1 :(得分:0)
@Matt ......似乎文档中存在较大的错误。我试验了JSON文件的结构,该文件通过-F "parameters=@paintings.json"
调用。我想到json文件的参数元素可能在curl语句中复制了参数标识符。我的json文件现在看起来像这样:
{
"classifier_ids": ["paintings_2--------2"],
"owners": "me",
"threshold":"0.0"
}
这适用于Bluemix Public和Bluemix Dedicated。
答案 2 :(得分:0)
尝试将阈值更改为0.5。为我工作。不知道为什么。