1

我正在尝试使用 Turicreate 在大约 150 张非常高分辨率的图片(每张 4Mb,3000X5000)上训练模型。我在跑

model = tc.object_detector.create(train_data, max_iterations=10)

过了一会儿,我收到“低虚拟内存”警告,并且在我的计算机卡住之后。

我想知道在这里能够训练这样一批图片的最佳做法是什么。

我正在使用的完整代码:

import turicreate as tc
data =  tc.SFrame('annotations.sframe')
train_data, test_data = data.random_split(0.8)
model = tc.object_detector.create(train_data, max_iterations=10)
predictions = model.predict(test_data)
metrics = model.evaluate(test_data)
model.save('mymodel.model')
model.export_coreml('MyCustomObjectDetector.mlmodel')
4

2 回答 2

1

将数据集图像的大小例如减小到(宽度:400 高度:300),并将 max_iterations 提高到至少 1000。

于 2018-07-14T16:30:35.813 回答
1

通常你会想要减少批量大小,即有多少训练数据的一部分用于一次迭代。显然这在 Turicreate 中还不容易调整,所以看起来程序正在使用一个时期的完整数据集。理想情况下,您希望使用较小的部分,例如 32 或 64 个图像。在Github上有一些关于该主题的讨论,显然批量大小作为公共参数可能会在未来的某个版本中出现。

对于这种工作,3000 x 5000 也相当大。您可能希望缩小图像的大小,即通过使用在例如Scipy中实现的双三次插值。根据您正在处理的图像类型,即使是每个维度的 10 倍也可能不会有太多的收缩。

于 2018-06-15T13:46:52.873 回答