Не удается преобразовать значение типа ‘MobileNetV2’ в ожидаемый тип аргумента ‘VNCoreMLModel’

#swift #xcode #computer-vision #arkit #coreml

#swift #xcode #компьютерное зрение #arkit #coreml

Вопрос:

В настоящее время я создаю новое приложение и пытаюсь интегрировать модель Core ML с Vision в свое приложение … к сожалению, Xcode показывает мне это сообщение: невозможно преобразовать значение типа ‘MobileNetV2’ в ожидаемый тип аргумента ‘VNCoreMLModel’

Как я могу это решить?

Вот мой код ниже:

 let config = MLModelConfiguration()
    guard let coreMLModel = try? MobileNetV2(configuration: config),
          let visionModel = try? VNCoreMLModel(for: coreMLModel.model) else {
        fatalError("Couldn't load model!")
    }
    
    
    let classificationRequest = VNCoreMLRequest(model: coreMLModel, completionHandler: classificationCompleteHandler)
    classificationRequest.imageCropAndScaleOption = VNImageCropAndScaleOption.centerCrop
    visionRequests = [classificationRequest]
    
    loopCoreMLUpdate()
}
 

Ответ №1:

В этой строке не должно использоваться coreMLModel , но visionModel :

 let classificationRequest = VNCoreMLRequest(model: coreMLModel, completionHandler: classificationCompleteHandler)
 

Комментарии:

1. Я почти уверен, что то, что я написал, правильно. Вы должны передать экземпляр VNCoreMLModel в VNCoreMLRequest, но то, что вы передаете, является экземпляром MobileNetV2. Это буквально то, что говорится в сообщении об ошибке Xcode.

2. Мой плохой … это наконец сработало! Большое спасибо за вашу помощь!