训练大量的高分辨率图片与turicreate内存不足

时间:2018-06-15 00:50:22

标签: image-processing computer-vision turi-create

我正在尝试使用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')

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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