使用 turicreate 训练大量高分辨率图片,内存不足
Training on a big set of high-res pictures with turicreate out of memory
我正在尝试使用 Turicreate 在大约 150 张非常高分辨率的图片(每张 4Mb,3000X5000)上训练模型。
我 运行
model = tc.object_detector.create(train_data, max_iterations=10)
过了一会儿,我收到 'low virtual memory' 警告,就在我的计算机卡住之后。
我想知道能够对这样一批图片进行训练的最佳实践是什么。
我正在使用的完整代码:
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')
通常您希望减小批量大小,即一次迭代使用了多少训练数据。显然这在 Turicreate 中还不容易调整,所以看起来该程序正在使用一个时期的完整数据集。理想情况下,您希望使用较小的部分,例如 32 或 64 张图像。在 Github 上有一些关于该主题的讨论,显然批大小作为 public 参数可能会出现在未来的某个版本中。
3000 x 5000 对于此类作品来说也相当大。您可能希望缩小图像尺寸,即通过使用 Scipy 中实现的双三次插值。根据您正在处理的图像类型,即使沿每个维度缩小 10 倍也可能不会太大。
例如将数据集图像的大小减小到(宽度:400 高度:300),并将 max_iterations 增加到至少 1000。
我正在尝试使用 Turicreate 在大约 150 张非常高分辨率的图片(每张 4Mb,3000X5000)上训练模型。 我 运行
model = tc.object_detector.create(train_data, max_iterations=10)
过了一会儿,我收到 'low virtual memory' 警告,就在我的计算机卡住之后。
我想知道能够对这样一批图片进行训练的最佳实践是什么。
我正在使用的完整代码:
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')
通常您希望减小批量大小,即一次迭代使用了多少训练数据。显然这在 Turicreate 中还不容易调整,所以看起来该程序正在使用一个时期的完整数据集。理想情况下,您希望使用较小的部分,例如 32 或 64 张图像。在 Github 上有一些关于该主题的讨论,显然批大小作为 public 参数可能会出现在未来的某个版本中。
3000 x 5000 对于此类作品来说也相当大。您可能希望缩小图像尺寸,即通过使用 Scipy 中实现的双三次插值。根据您正在处理的图像类型,即使沿每个维度缩小 10 倍也可能不会太大。
例如将数据集图像的大小减小到(宽度:400 高度:300),并将 max_iterations 增加到至少 1000。