尝试上传zip文件时,会给出错误:
信息:<- HTTP失败:java.net.Socket异常:对等方重置连接:套接字写入错误 (错误截图)
在这里我发现了什么 来自 IBM Watson 文档
- 该服务最多接受 10,000 张图像或每张.zip 100 MB 文件
- 该服务要求每个.zip文件至少 10 张图像。
- 该服务每次训练调用最多接受 256 MB。
- 建议的最小图像大小为 32X32 像素。
因此,我已经处理了上述各个方面。
我已经为服务付费,并更改了 api 密钥。
拉链总数:约1000个。
每个压缩包含大约 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() + "nn");
感谢您对视觉识别的兴趣。
编写文档时假设您在训练classifier
内每class
提交 1 个 zip 文件。
您是否将同一类中的示例拆分为不同的.zip文件? 这是可能的,但不是必需的,除非您的单个类的示例超过 100MB。
建议的训练模式是发出一个请求,该请求总计小于 256 MB,其中包含其中每个类的所有示例。 如果您有比这更多的训练数据,您可以提交额外的"再训练"请求,这些请求向现有类添加更多类和/或更多示例。再培训记录如下:https://www.ibm.com/watson/developercloud/doc/visual-recognition/tutorial-custom-classifier.html#to-add-new-classes-to-an-existing-classifier
该服务要求每个.zip文件至少 10 张图像。
建议的最小图像大小为 32X32 像素。
澄清一下,这些是最小值 - 在您训练classifier
中,每个class
必须至少有 10 个示例图像。 最好将class
的所有训练图像放入单个.zip文件中,每个.zip文件的限制为 100MB。 如果每个类的示例数多,则可以使用重新训练函数添加更多示例。
此外,32x32 是最小大小。 理想情况下,您应该提交原始大小的图像,但如果您需要缩小它们以节省时间或带宽,您现在可以调整为 224x224,而不会损失训练质量。(具体尺寸可能会在未来发生变化)
我已经为服务付费,并更改了 api 密钥。
拉链总数:约1000个。
这是否意味着您的 POST/分类器请求包含大约 1000 个表单字段? 这可能是客户端代码和服务器之间连接中某个点问题的根源。
每个压缩包含大约 15 张图像。
虽然系统每个类至少有 10 张图像,但提供更多示例(如 100-200 张)通常会带来更好的结果。
我认为问题可能是,如果我检查所有zip文件的总大小,那么它大约是1GB。那么这是拥有大量zip文件的问题吗?相同的代码适用于较少数量的 zip 文件。
如您所指出的,如果总请求大小为 1GB,这将超过 256 MB 的限制:
该服务每次训练调用最多接受 256 MB。
这可能会导致您观察到的错误。
我的建议是训练少于 1000 个的类开始,每个类尽可能多地使用示例,以便在进入 1000 个类之前评估您的结果。 如果你已经这样做了,最好的策略(因为你说你总共有大约1GB的数据)是将其拆分为1个原始训练请求(总大小在256MB以下)和3-4个额外的请求,每个请求小于256MB。 重新训练的账单等于请求中提交的图像数量(与原始训练一样),因此成本与单个大型请求成功相同。 您可以预期每个训练请求每个图像需要 1-2 秒。
有关培训指南的其他信息,请访问:https://www.ibm.com/watson/developercloud/doc/visual-recognition/customizing.html#guidelines-for-good-training