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。为我工作。不知道为什么。