Watson Visual-Recognition不使用自定义分类器

我正在使用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
}

视觉识别显然没有使用我的分类器文件,我错过了?'ve probably missed something REALLY obvious. Any ideas on what I'?我在这里遵循文档:https://www.ibm.com/watson/developercloud/visual-recognition/api/v3/#classify_an_image,其中声明JSON参数是:

classifier_ids - 用于对图像进行分类的分类器ID数组 .

owners - 具有值(s)"IBM"和/或“ me ”的数组,用于指定要运行的分类器 .

threshold - 浮点值,指定类必须在响应中显示的最低分数 .

回答(3)

2 years ago

您的paintings.json文件中的数组 classifier_ids 应该有1个条目: "paintings_----" (使用数字ID而不是破折号)而不是类名(水,拼贴等) .

因为它无法将类名理解为classifier_id,所以API返回“默认”通用分类器的结果(因此字段“custom_classes:0”)

此外,如果使用 owners 字段应为复数 - 但是, "owners": "me" 是告诉API使用所有自定义分类器并跳过默认分类器的简写 . 在您的情况下,您确切地知道要调用哪个classifier_id,因此您可以省略 owners 字段 . 我只是仔细检查了文档示例,看到我们需要修复这两个问题的API参考中的示例 .

感谢您在问题中包含所有细节,祝您好运!

2 years ago

@Matt ......似乎文档中存在较大的错误 . 我试验了JSON文件的结构,该文件通过 -F "parameters=@paintings.json" 调用 . 我想到json文件的参数元素可能在curl语句中复制了参数标识符 . 我的json文件现在看起来像这样:

{
  "classifier_ids": ["paintings_2--------2"],
  "owners": "me",
  "threshold":"0.0"
}

这适用于Bluemix Public和Bluemix Dedicated .

2 years ago

尝试将阈值更改为0.5 . 为我工作 . 不知道为什么 .