ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java-IBM视觉识别:创建分类器

2019-10-27 00:01:15  阅读:140  来源: 互联网

标签:ibm-watson java


我已经根据IBM的预配置分类器对图像进行了分类.

现在,我尝试创建然后使用自己的分类器(称为“圣诞老人”)来识别圣诞老人的图像:

    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张图片.谢谢您的帮助!

解决方法:

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>

标签:ibm-watson,java
来源: https://codeday.me/bug/20191026/1940395.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有