对等方重置连接:套接字写入错误 IBM Watson 视觉识别

Connection reset by peer: socket write error 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 密钥。

总拉链数: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");

感谢您对 Visual Recognition 的关注。

编写文档时假设您在训练的 classifier 中每 class 提交 1 个 zip 文件。

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

推荐的训练模式是发出总大小不超过 256 MB 的单个请求,其中包含其中每个 class 的所有示例。如果您拥有比这更多的训练数据,您可以提交额外的“再训练”请求,以添加更多 classes 和/或更多示例到现有 classes。再培训记录在此处: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.

澄清一下,这些是最低要求 - 您正在训练的 classifier 中每个 class 必须至少有 10 张示例图像。最好将 class 的所有训练图像放入一个 .zip 文件中,每个 .zip 文件的大小不得超过 100MB。如果你有比class更多的例子,你可以使用再训练功能来添加更多。

此外,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.

虽然系统每个 class 至少有 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,这将超过 256MB 的限制:

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

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

我的建议是开始时训练少于 1000 人的 classes,每个 class 尽可能多的例子,在达到 1000 人之前评估你的结果 classes。如果你已经这样做了,最好的策略(因为你说你总共有大约 1GB 的数据)是将它分成 1 个原始训练请求(总大小小于 256MB)和 3-4 个额外的请求,每个请求小于 256MB。重新训练的费用等于请求中提交的图像数量(与原始训练一样),因此成本与单个大型请求成功时相同。您可以预期每个训练请求每张图像需要 1-2 秒。

此处提供有关培训指南的更多信息:https://www.ibm.com/watson/developercloud/doc/visual-recognition/customizing.html#guidelines-for-good-training