java - 连接被对等方重置 : socket write error IBM Watson visual-recognition

标签 java ibm-watson visual-recognition

尝试上传 zip 文件时,出现错误:

信息:<-- HTTP 失败:java.net.SocketException:对等方重置连接:套接字写入错误 (Error Screenshot)

这是我发现的 from IBM Watson Documentation

  1. 该服务最多接受 10,000 张图像或每个 .zip 100 MB 文件
  2. 该服务要求每个 .zip 文件至少包含 10 个图像。
  3. 该服务每次训练调用最多接受 256 MB 的数据。
  4. 建议的图片最小尺寸为 32X32 像素。

因此我已经处理了上述的每个方面..

我已支付服务费用,并更改了 api key 。

总 zipper 数:约 1000。

每个 zip 包含大约 15 张图像。

我认为问题可能是,如果我检查所有 zip 文件的总大小,那么它大约是 1GB。那么这是一个拥有大量 zip 文件的问题吗? 对于较少数量的 zip 文件,相同的代码可以正常工作。

List<File> allZipPath = new ArrayList<File>();

// add zip paths

Builder classBuilder = new ClassifierOptions.Builder();

for(int i=0; i<allZipPath.size(); i++){

    //Take the name and add as a name to the class
    classBuilder.addClass(allZipPath.get(i).getName(), allZipPath.get(i));  
}
ClassifierOptions createCanaryOptions = classBuilder.classifierName(classifierName).build();

//   you can add negative zip by using ".negativeExamples(new File(myFilePath +"cats.zip")).build()" 
result = service.createClassifier(createCanaryOptions).execute();
//System.out.println(result);
System.out.println("Classifier created with Id: " + result.getId() +   "\n\n");

最佳答案

感谢您对视觉识别的兴趣。

编写本文档时假设您在正在训练的分类器内为每个提交 1 个 zip 文件。

您是否将同一类的示例拆分为不同的 .zip 文件?这是可能的,但不是必需的,除非单个类的示例超过 100MB。

推荐的训练模式是发出一个总大小低于 256 MB 的请求,其中包含其中每个类的所有示例。如果您有更多的训练数据,您可以提交额外的“再训练”请求,以添加更多类(class)和/或向现有类(class)添加更多示例。再培训记录如下:https://www.ibm.com/watson/developercloud/doc/visual-recognition/tutorial-custom-classifier.html#to-add-new-classes-to-an-existing-classifier

The service requires a minimum of 10 images per .zip file.

Minimum recommend size of an image is 32X32 pixels.

需要澄清的是,这些是最小值 - 您正在训练的分类器中的每个必须至少有 10 个示例图像。最好将的所有训练图像放入单个 .zip 文件中,但每个 .zip 文件的大小不得超过 100MB。如果您的示例多于每个类的示例,您可以使用重新训练功能添加更多示例。

此外,32x32 是最小尺寸。理想情况下,您应该提交原始大小的图像,但如果您需要缩小它们以节省时间或带宽,您可以暂时将大小调整为 224x224,而不会损失训练质量。 (具体尺寸将来可能会发生变化)

I have paid for the service, and changes the api key.

Total zips: Around 1000.

这是否意味着您的 POST/classifiers 请求包含大约 1000 个表单字段?这可能是客户端代码和服务器之间连接中某个时刻出现问题的根源。

Each zip contains around 15 images.

虽然系统每个类至少有 10 个图像,但提供更多示例(例如 100-200 个)通常会带来更好的结果。

what I think the issue might be is, if I check the total size of all my zip files, then it is around 1GB. So is that an issue of having huge amount of zip files? The same code is working fine for less amount of zip files.

正如您所指出的,如果您的总请求大小为 1GB,则这将超过 256 MB 限制:

The service accepts a maximum of 256 MB per training call.

这可能会导致您观察到的错误。

我的建议是开始训练少于 1000 个类(class),每个类(class)尽可能多的示例,以便在进行 1000 个类(class)之前评估您的结果。如果您已经这样做了,那么最好的策略(因为您说总共有大约 1GB 的数据)是将其分成 1 个原始训练请求(总大小低于 256MB)和 3-4 个附加请求,每个请求低于 256MB。再培训的费用等于请求中提交的图像数量(与原始培训相同),因此成本与单个大型请求成功时相同。您预计每个训练请求每张图像需要 1-2 秒。

有关培训指南的其他信息如下:https://www.ibm.com/watson/developercloud/doc/visual-recognition/customizing.html#guidelines-for-good-training

关于java - 连接被对等方重置 : socket write error IBM Watson visual-recognition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44221864/

相关文章:

java - 使用java从图像中获取像素数据

java - Android 位图调整为中心文本

ibm-cloud - IBM Watson Assistant : How to set a 'jump to' target node dynamically (i. e。使用上下文变量)

artificial-intelligence - 使用多个语音转文本 API 来提高准确性

swift - Watson VisualRecognition 无法对图像进行分类,报错 400(使用 swift)

ibm-watson - 沃森视觉识别 API

java - 设置 Logback SMTPAppender 发送的电子邮件的重要性

java - Android GCM 无法实例化接收器

python - Python 和 Node.js 的不同 WPI v3 结果