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

iOS模拟器CoreML报错Code=9:无法创建推理上下文,求助解决

CoreML + Vision 报错:Could not create inference context 解决办法

问题场景

按照苹果官方文档《使用Vision和Core ML分类图像》操作时,使用官方提供的MobileNetV2模型正常,但自行创建的CoreML模型在iPhone模拟器上触发报错:

- some : Error Domain=com.apple.vis Code=9 "Could not create inference context" UserInfo={NSLocalizedDescription=Could not create inference context}

排查与解决步骤

  • 检查模型输入格式兼容性
    Vision要求CoreML模型的主输入为Image类型(对应CVPixelBuffer),若自定义模型输入为MLMultiArray或尺寸、色彩空间不匹配,会导致上下文创建失败。打开Xcode中的.mlmodel文件,在"Model Inspector"中确认输入类型为Image,且尺寸(如224x224)、色彩空间(如RGB)与代码中VNImageRequestHandler处理的图像一致。

  • 验证模型转换流程
    若从PyTorch/TensorFlow转换模型,确保coremltools版本与目标iOS版本兼容(如coremltools 6.x对应iOS 15+)。转换时显式指定图像输入参数,示例:

    import coremltools as ct
    # 以PyTorch模型为例
    converted_model = ct.convert(
        pytorch_model,
        inputs=[ct.ImageType(name="input_image", shape=(1, 224, 224, 3), scale=1/255.0)]
    )
    converted_model.save("CustomModel.mlmodel")
    

    转换后检查.mlmodel在Xcode中无红色警告,确保模型结构完整。

  • 重置模拟器环境
    模拟器的硬件加速缓存可能导致异常,尝试:

    1. 关闭模拟器与Xcode,重新启动
    2. 重置模拟器内容:菜单栏选择Device → Erase All Content and Settings
    3. 关闭Metal API验证:Window → Show Device Inspector,取消勾选"Metal API Validation"
  • 核对代码实现细节
    确保代码正确用VNCoreMLModel包装自定义模型,示例:

    // 正确加载并包装模型
    guard let coremlModel = try? CustomModel().model,
          let visionModel = try? VNCoreMLModel(for: coremlModel) else {
        fatalError("Failed to initialize model")
    }
    // 创建Vision请求
    let classificationRequest = VNCoreMLRequest(model: visionModel) { request, error in
        // 处理分类结果
    }
    // 执行请求
    let imageHandler = VNImageRequestHandler(cgImage: targetImage.cgImage!, options: [:])
    try? imageHandler.perform([classificationRequest])
    

    避免直接将CoreML模型传入Vision请求,必须通过VNCoreMLModel转换。

内容的提问来源于stack exchange,提问作者Qazi Ammar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 23:30:21