0

我在玩 Watson VR,并尝试训练,然后针对在其中一个 zip 文件中添加为正面示例的同一张图片执行一个简单的自定义分类器。


我创建分类器的代码:

ClassifierOptions cOptions = new ClassifierOptions.Builder()
    .classifierName("Mena")
    .addClass("Mena", new File("/the/path/to/my_face.zip"))
    .addClass("Mena2", new File("/the/path/to/my_face_new.zip"))
    .build();

VisualClassifier classifier = VR_SERVICE.createClassifier(cOptions).execute();

这些.zip文件包含我的两张不同的图像 ( .jpg) - 每张一张。

图像文件名不包含特殊字符。


然后我按如下方式运行分类服务:

ClassifyImagesOptions ciOptions = new ClassifyImagesOptions.Builder()
    .classifierIds(classifier.getId())
    .images(new File("/the/path/to/my_face.jpg")) // same file as one of the images 
    // uploaded previously in zip
    .threshold(0d) // tried specifying explicitly but changes nothing
    .build();

VisualClassification result = VR_SERVICE.classify(ciOptions).execute();

不幸的是,当我打印出结果时,没有喜悦:

{
  "images_processed": 1,
  "images": [
    {
      "classifiers": [],
      "image": "my_face.jpg"
    }
  ]
}

考虑到我使用的是添加到分类器中的一张图片的完全相同的副本,我的印象是我在做一些完全错误的事情,特别是考虑到这"classifiers": []部分。

任何指针?

4

1 回答 1

1

.zip 文件包含我的两张不同的图像 (.jpg) - 每张一张。

训练时,包含示例的 zip 文件必须至少有 10 个唯一示例。(唯一性由每个图像文件内容的哈希码决定。)

您是否检查了培训请求返回的结果?我怀疑它返回了关于最少示例数量的 400 代码和消息。

此外,分类器中的类是互斥的,因为分类器训练过程正在学习是什么使类 1 与其他类不同。例如,“破窗”与“正常窗”。该系统也没有针对人脸识别进行优化(它旨在用于一般场景),但在多个类别中提供同一个人的图片将(在最好的情况下)导致它找到区分两组示例的任何随机差异,例如衣服或照明条件。

于 2017-01-18T16:57:16.477 回答