简体   繁体   English

AI Vision 框架错误:M1 Mac 中的“无法创建 Espresso 上下文”

[英]AI Vision framework Error: "Could not create Espresso context" in M1 Mac

I am making an app to classify food images.我正在制作一个对食物图像进行分类的应用程序。 I trained a model using a dataset found from Kaggle.我使用从 Kaggle 找到的数据集训练了 model。 When press the classify button I am getting this error in console:当按下分类按钮时,我在控制台中收到此错误:

Error Domain=com.apple.vis Code=9 "Could not create Espresso context" UserInfo={NSLocalizedDescription=Could not create Espresso context}

So I was looking for solution by googling and found in apple developer forum that it is M1 Mac specific issue.所以我通过谷歌搜索寻找解决方案,并在苹果开发者论坛中发现它是 M1 Mac 特定问题。 What should I do now?我现在该怎么办?

Classify class:分类 class:

import Foundation
import CoreML
import Vision
import UIKit

class VisionClasifier{
    private let model : VNCoreMLModel
    private var completion: (String) -> Void = { _ in }
    
    private lazy var request:[VNCoreMLRequest] = {
        let request = VNCoreMLRequest(model: model){ request, error in
            
            guard let results = request.results as? [VNClassificationObservation] else{
                return
            }
            
            if !results.isEmpty{
                if let result = results.first{
                    self.completion(result.identifier)
                }
            }
        }
        
        request.imageCropAndScaleOption = .centerCrop
        return [request]
    }()
    
    init?(mlModel:MLModel?){
        if let m = mlModel{
            if let model = try? VNCoreMLModel(for: m){
                self.model = model
            }else{
                return nil
            }
        }else{
            return nil
        }
        
    }
    
    func classify(_ image:UIImage, completion:@escaping (String)->Void){
        self.completion = completion
        DispatchQueue.global().async {
            guard let image = image.cgImage else{
                return
            }
            
            let handler = VNImageRequestHandler(cgImage: image, options: [:])
            
            do{
                try handler.perform(self.request)
            }catch{
                print(error) // -> here is the error
            }
        }
    }
}

Is this an M1 Mac specific error?这是 M1 Mac 特有的错误吗?

Yes, it can be a M1 specific error.是的,它可能是 M1 特定的错误。

after line:行后:

request.imageCropAndScaleOption = .centerCrop

add添加

request.usesCPUOnly = true

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM