使用完全相同图片的空分类

Empty classification using exact same picture

我正在玩 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": [] 部分。

有什么指点吗?

The .zip files contain two different images (.jpg) of my face - one each.

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

你检查过训练请求的返回结果了吗?我怀疑它返回了一个 400 代码和关于最小示例数量的消息。

此外,classifier 中的 classes 是相互排斥的,因为 classifier 训练过程正在学习 class 1 与其余的部分。例如,"broken window" 与 "normal window"。该系统也没有针对人脸识别进行优化(它适用于一般场景),但在多个 classes 中提供同一个人的照片将(第 n 个最好的情况)导致它找到任何随机差异来区分两组示例,例如服装或照明条件。