我正在摆弄 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 代码和有关最少示例数的消息。
此外,分类器中的类应该是互斥的,因为分类器训练过程正在学习第 1 类与其他类的不同之处。例如,“ splinter 的 window ”与“正常的 window ”。该系统也没有针对人脸识别进行优化(它适用于一般场景),但提供多个类别中同一个体的图片将(在最佳情况下)导致它找到区分两组示例的任何随机差异,例如服装或照明条件。
关于java - 使用完全相同的图片进行空分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41701209/