Watson Visual-Recognition 不使用自定义分类器
Watson Visual-Recognition not using custom classifier
我正在使用 Watson Visual Recognition 并成功创建了自定义 classifier。 classifier 显示它已准备就绪,状态如下:
{
"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 命令来测试这个 classifier:
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"
}
}
运行本次查询returns结果如下:
{
"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
}
Visual-Recognition 显然没有使用我的 classifier 文件,我可能错过了一些非常明显的东西。关于我错过的任何想法?我正在关注此处的文档:https://www.ibm.com/watson/developercloud/visual-recognition/api/v3/#classify_an_image 其中指出 JSON 参数是:
classifier_ids - classifier ID 数组class根据其对图像进行验证。
owners - 具有值 "IBM" and/or "me" 的数组以指定class运行.
阈值 - 一个浮点值,指定响应中必须显示的最低分数 class。
paintings.json 文件中的数组 classifier_ids
应该有 1 个条目:"paintings_----"
(使用数字 ID 而不是破折号)而不是 class 名称(水、拼贴等)。
因为它无法将 class 名称理解为 classifier_id,API 从 "default" 通用 classifier 返回结果(因此字段 "custom_classes: 0")
此外,如果使用 owners
字段应该是复数 - 然而,"owners": "me"
是一个 shorthand 告诉 API 使用您所有的自定义 classifiers 并跳过默认的。在您的情况下,您确切地知道要调用哪个 classifier_id,因此您可以省略 owners
字段。我刚刚仔细检查了文档示例,发现我们需要修复 API 参考中关于这两个问题的示例。
感谢您在问题中包含所有详细信息,祝您服务愉快!
@Matt ... 文档中好像有比较大的错误。我试验了 JSON 文件的结构,它通过 -F "parameters=@paintings.json"
调用。我想到 json 文件中的参数元素可能与 curl 语句中的参数标识符重复。我的 json 文件现在看起来像这样:
{
"classifier_ids": ["paintings_2--------2"],
"owners": "me",
"threshold":"0.0"
}
这适用于 Bluemix Public 和 Bluemix Dedicated。
尝试将阈值更改为 0.5。为我工作。不知道为什么。
我正在使用 Watson Visual Recognition 并成功创建了自定义 classifier。 classifier 显示它已准备就绪,状态如下:
{
"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 命令来测试这个 classifier:
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"
}
}
运行本次查询returns结果如下:
{
"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
}
Visual-Recognition 显然没有使用我的 classifier 文件,我可能错过了一些非常明显的东西。关于我错过的任何想法?我正在关注此处的文档:https://www.ibm.com/watson/developercloud/visual-recognition/api/v3/#classify_an_image 其中指出 JSON 参数是:
classifier_ids - classifier ID 数组class根据其对图像进行验证。
owners - 具有值 "IBM" and/or "me" 的数组以指定class运行.
阈值 - 一个浮点值,指定响应中必须显示的最低分数 class。
paintings.json 文件中的数组 classifier_ids
应该有 1 个条目:"paintings_----"
(使用数字 ID 而不是破折号)而不是 class 名称(水、拼贴等)。
因为它无法将 class 名称理解为 classifier_id,API 从 "default" 通用 classifier 返回结果(因此字段 "custom_classes: 0")
此外,如果使用 owners
字段应该是复数 - 然而,"owners": "me"
是一个 shorthand 告诉 API 使用您所有的自定义 classifiers 并跳过默认的。在您的情况下,您确切地知道要调用哪个 classifier_id,因此您可以省略 owners
字段。我刚刚仔细检查了文档示例,发现我们需要修复 API 参考中关于这两个问题的示例。
感谢您在问题中包含所有详细信息,祝您服务愉快!
@Matt ... 文档中好像有比较大的错误。我试验了 JSON 文件的结构,它通过 -F "parameters=@paintings.json"
调用。我想到 json 文件中的参数元素可能与 curl 语句中的参数标识符重复。我的 json 文件现在看起来像这样:
{
"classifier_ids": ["paintings_2--------2"],
"owners": "me",
"threshold":"0.0"
}
这适用于 Bluemix Public 和 Bluemix Dedicated。
尝试将阈值更改为 0.5。为我工作。不知道为什么。