IBM视觉识别:创建分类器

3
我已经使用IBM预配置的分类器对图像进行了分类。
现在,我想创建并使用自己的分类器(称为“Santa”)来识别圣诞老人的图像:
    VisualRecognition service = new VisualRecognition(VisualRecognition.VERSION_DATE_2016_05_19);
    service.setApiKey("***************");
    
    File santa = new File("src/images/Santa.zip");
    File notSanta = new File("src/images/NotSanta.zip");
    CreateClassifierOptions classifierOptions = new CreateClassifierOptions.Builder()
            .classifierName("Santa").addClass("Santa", santa).negativeExamples(notSanta).build();
    VisualClassifier santaClassifier = service.createClassifier(classifierOptions).execute();
    List<String> classifierIds = new ArrayList<String>();
    classifierIds.add(santaClassifier.getId());
    ClassifyImagesOptions classifyOptionsSanta = new ClassifyImagesOptions.Builder()
            .classifierIds(classifierIds)
            .images(new File ("src/images/lilSanta.png")).build();
    VisualClassification resultSanta = service.classify(classifyOptionsSanta).execute();
    System.out.println(resultSanta);

但是我得到了这个答案:

{
  "images_processed": 0,
  "images": [
    {
      "classifiers": [],
      "image": "lilSanta.png"
    }
  ]
}

为什么答案中没有处理的图像和分类器?我做错了什么吗?

编辑

我现在使用Curl创建了分类器,并等待其完全训练。然后,我记下了分类器ID,现在可以轻松地使用Java。我还使用了50张图片。感谢您的帮助!

2个回答

4

images_processed为零,因为使用自定义分类器不会产生费用。该参数旨在用于计算API调用的成本。

你的代码看起来没问题。我做了一些微小的更改并降低了阈值(默认为0.5):

VisualRecognition service = new VisualRecognition(VisualRecognition.VERSION_DATE_2016_05_19);
service.setApiKey("***************");

CreateClassifierOptions classifierOptions = new CreateClassifierOptions.Builder()
    .classifierName("Santa")
    .addClass("Santa", new File("src/images/Santa.zip"))
    .negativeExamples(new File("src/images/NotSanta.zip"))
    .build();

VisualClassifier santaClassifier = service.createClassifier(classifierOptions).execute();

ClassifyImagesOptions classifyOptionsSanta = new ClassifyImagesOptions.Builder()
    .classifierIds(santaClassifier.getId())
    .images(new File ("src/images/lilSanta.png"))
    .threshold(0.0)
    .build();

VisualClassification resultSanta = service.classify(classifyOptionsSanta).execute();
System.out.println(resultSanta);

请确保您发送了50张圣诞老人和非圣诞老人的图片。我发现当我在Mac上创建zip文件时,会额外添加一些__MACOX文件。使用unzip检查zip文件。

unzip -l <zip-file>

0

我现在使用Curl创建了分类器,并等待其完全训练。然后我记录了分类器ID,现在我可以轻松地使用Java。我现在也使用了50张图片。感谢您的帮助!


你在使用Java创建自定义分类器时没有成功吗?我现在也在尝试做同样的事情,并遇到了你的问题。 - Vini
我想在使用curl创建分类器后就没有再尝试过了...抱歉,我已经没有代码了。 - Mr. T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接