我正在尝试使用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')
答案 0 :(得分:1)
通常,您希望减小批量大小,即一次迭代使用多大部分训练数据。显然在Turicreate中调整起来并不容易,因此看起来程序正在使用完整数据集进行一个时代。理想情况下,您需要使用较小的部分,例如32或64个图像。关于Github上的主题有一些讨论,显然批量大小作为公共参数可能会在未来的版本中出现。
3000 x 5000这种工作也相当大。您可能希望缩小图像的尺寸,即使用例如Scipy中实现的双三次插值。根据您正在处理的图像类型,即使每个维度的因子为10,也不会有太大的收缩。
答案 1 :(得分:1)
将数据集图像的大小减小至(宽度:400高度:300),并将max_iterations增大到至少1000。