我一直试图使用Turi创建一个简单的Core ML模型,但是程序在迭代之后停止了。我有一个名为“RenderedImages”的文件夹,其中包含有标签名称和所有相关图像的文件夹。
守则:
import turicreate as tc
print("Processing images for training...")
# load the images
labels = list(poses)
def get_label(path, labels=labels):
for label in labels:
if label in path:
return label
data = tc.image_analysis.load_images('RenderedImages', with_path = True)
data['label'] = data['path'].apply(get_label)
print(data.groupby('label',[tc.aggregate.COUNT]))
# save the data
sFramePath = 'Data.sframe'
data.save(sFramePath)
data.explore()
#Train the model
print("Training model..")
# load the data
data = tc.SFrame(sFramePath)
train_data, test_data = data.random_split(0.8)
model = tc.image_classifier.create(
train_data,
target='label',
model='squeezenet_v1.1',
max_iterations=500)
print("ENDED")
model.save('MyModel.model')
model.export_coreml('Data.mlmodel')
predictions = model.predict(test_data)
metrics = model.evaluate(test_data)
print(metrics['accuracy'])产出如下:
实现SFrame..。好了。训练模式。19:49:50 src/nnvm/legacy_json_util.cc:190:先前版本v0.8.0保存的加载符号。试图升级..。19:49:50 src/nnvm/legacy_json_util.cc:198:符号成功升级!调整图像大小..。对调整大小的图像进行特征提取..。完成154/154进展:根据5%的培训数据创建一个验证集。这可能需要一段时间。可以将
validation_set=None设置为禁用验证跟踪。 警告:与示例数相比,这个问题中的特征维数非常多。除非设置了适当的正则化值,否则该模型可能无法为验证/测试集提供准确的预测。 Logistic回归: 示例数:143个类数:31个特征列数:1个未打包特征数:1000个系数数: 30030 启动L +-----------+----------+-----------+--------------+-------------------+---------------------+ \\\...-------+----------+-----------+--------------+-------------------+---------------------+.000000 \x{e76f}\x{e76f}=..181818 \x=.=272727 \x{e76f}\x{e76f}272727\x{e76f}\x{=125171x1 x 1.000000 \x{e76f} 9.240253 \x{e76f} 1.000000 \x{e76f} 0.545455 \ +-----------+----------+-----------+--------------+-------------------+---------------------+ 成功:找到最佳解决方案。
然后,在这一点之后,内存完全填满,即使我等待了一段时间,也不会发生任何事情。
我有16 50的内存,为了确保图像的数量不是问题,我甚至在每个标签上运行了5张图片(总共大约有50张图片)。我的电脑和内存我不认为是问题,所以我做错了什么?
谢谢您的任何答复
更新
我发现了问题所在!不过,我不知道怎么解决。
本节:
def get_label(path, labels=labels):
for label in labels:
if label in path:
return label
data['label'] = data['path'].apply(get_label)没有根据其文件路径正确地标记所有图像吗?这是因为这样的事情
data["foodType"] = data["path"].apply(lambda path: "Rice" if "rice" in path else "Soup")工作,但使用这种方法,我只能有两个不同的标签(两个不同的文件夹),但我想要更多。是否有任何方法根据他们在超过两个文件夹中的文件夹的名称来标签图像?
谢谢!
发布于 2018-03-29 00:19:46
也许您正在使用的squeezenet_v1.1会比其他模型好得多。您可以尝试通过以下方式来注释data.explore()
# data.explore()这仅仅是可视化您在turi中的所有图像可能会导致您的内存问题(如果您的数据集有很多图像)。
https://stackoverflow.com/questions/49531494
复制相似问题