You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Turi Create创建Core ML模型时内存占用过高且无进展

解决Turi Create训练Core ML模型中途停止的问题

看起来你在使用Turi Create构建图像分类的Core ML模型时遇到了程序中途停止的情况,我帮你梳理下代码里的问题和可能的解决方案:

先修正代码里的明显错误

  1. 未定义的poses变量
    你代码里写了labels = list(poses),但poses根本没被定义过,这会直接触发NameError导致程序终止。其实你完全不用手动定义标签列表——Turi Create可以自动从子文件夹名称提取标签,这比自定义函数更可靠。

  2. load_images参数拼写错误
    你写的with_path = Tr...应该是with_path=True,这个参数是用来获取图片的文件路径,后续才能从中提取标签。

替换自定义标签提取逻辑

你自己写的get_label函数容易出错,不如直接用路径解析来提取子文件夹名作为标签,比如:

data['label'] = data['path'].apply(lambda path: path.split('/')[-2])

这里假设你的文件夹结构是RenderedImages/标签名/图片.jpg,split('/')[-2]就能精准拿到子文件夹的标签名称。

程序停止的其他常见原因&解决办法

  • 内存不足:如果你的图片数量多、分辨率高,加载时会占用大量内存,导致程序无响应。可以在load_images里加上target_size=(224,224)参数,统一把图片缩放到224x224的尺寸,大幅降低内存占用。
  • 损坏的图片:数据集里如果有损坏的图片,会导致Turi Create在处理时卡住。可以用data = data.dropna()过滤掉无效的图片数据。
  • 训练迭代设置:如果是训练模型时停止,可以调整max_iterations参数(比如设为50),避免迭代次数过多导致超时。

修正后的完整代码示例

import turicreate as tc

print("Processing images for training...")

# 加载图片,同时获取路径,并统一缩放尺寸
data = tc.image_analysis.load_images('RenderedImages', with_path=True, target_size=(224,224))

# 从路径提取子文件夹名作为标签
data['label'] = data['path'].apply(lambda path: path.split('/')[-2])

# 过滤无效数据
data = data.dropna()

# 划分训练集和测试集
train_data, test_data = data.random_split(0.8)

print("Starting model training...")
# 创建图像分类器,设置迭代次数
model = tc.image_classifier.create(train_data, target='label', max_iterations=50)

# 评估模型性能
metrics = model.evaluate(test_data)
print(f"Model accuracy: {metrics['accuracy']:.2f}")

# 导出为Core ML模型
model.export_coreml('PoseClassifier.mlmodel')
print("Core ML model exported successfully!")

额外调试建议

  • 运行时盯着终端输出,看有没有报错信息(比如文件找不到、内存溢出),这能快速定位问题。
  • 先拿少量图片测试,比如每个标签下放3-5张图,确认程序能正常运行后再用完整数据集。

内容的提问来源于stack exchange,提问作者J.Treutlein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:29:52