我正在使用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": []
部分。
任何指针?
答案 0 :(得分:1)
.zip文件包含我脸部的两个不同图像(.jpg) - 每个图像。
培训时,包含示例的zip文件必须至少包含10个唯一示例。 (唯一性由每个图像文件的内容的哈希码确定。)
您是否检查过培训申请的结果?我怀疑它返回了400代码和关于最小数量示例的消息。
此外,分类器中的类是互斥的,因为分类器训练过程正在学习使第1类与其他类不同的原因。例如,"破窗" vs"正常窗口"。该系统也没有针对人脸识别进行优化(它适用于一般场景),但是在多个类中提供相同个体的图片(最好的情况)会导致它找到区分这两组示例的任何随机差异,如衣服或照明条件。