Swift 使用VNCoreMLModel和Inceptionv3.model()之间的差异?

Swift 使用VNCoreMLModel和Inceptionv3.model()之间的差异?,swift,xcode,machine-learning,coreml,apple-vision,Swift,Xcode,Machine Learning,Coreml,Apple Vision,我一直在尝试开始使用CoreML(苹果的机器学习库)。我遵循这些教程开始学习 (一) (二) 第一个教程使用Inception V3,第二个教程使用Places205 GoogLeNet模型进行解释 完成所有基本设置步骤后 Places205 GoogLeNet教程使用以下代码 func detectScene(image: CIImage) { answerLabel.text = "detecting scene..." // Load the ML model throu

我一直在尝试开始使用CoreML(苹果的机器学习库)。我遵循这些教程开始学习

(一)

(二)

第一个教程使用Inception V3,第二个教程使用Places205 GoogLeNet模型进行解释

完成所有基本设置步骤后

Places205 GoogLeNet教程使用以下代码

func detectScene(image: CIImage) {
    answerLabel.text = "detecting scene..."

    // Load the ML model through its generated class
    guard let model = try? VNCoreMLModel(for: GoogLeNetPlaces().model) else {
      fatalError("can't load Places ML model")
    }
  }
第二个代码使用这个

guard let prediction = try? model.prediction(image: pixelBuffer!) else {
    return
}

这两种方法的区别是什么?由于这两种类型都可以用来传递像素缓冲区并显示结果,建议使用哪一种方法?

在第一个教程中,您需要自行调整图像大小至299×299。 在第二个教程中,他们使用的Vision框架将自动完成。
我认为Vision方法更干净

在第一个教程中,您需要自行调整图像大小至299×299。 在第二个教程中,他们使用的Vision框架将自动完成。
我认为Vision方法更干净

Vision框架是一套工具,可以帮助您设置所有图像处理管道。这些工具包括
CoreML
,其模型由您提供,但它不仅限于机器学习。Vision帮助您:预处理、重缩放、裁剪图像、检测矩形、条形码、人脸等。有关更多信息,请查看。除了直接在图像上执行的工作外,还可以帮助执行对模型的请求,如果您有复杂的请求序列或希望将这些操作与其他处理连接起来,这一点非常重要

使用纯
CoreML
,您必须自己实现所有这些功能,因为
CoreML
的责任只是设置您的模型并通过它获得简单的API

Vision
并不是一个纯粹围绕
CoreML
的包装器,因为它所做的不仅仅是请求执行和初始化模型,而是将
CoreML
用于它的一些功能(具体来说,在
VNCoreMLRequest
中)


在您提供的链接中:第一个(appcoda)是关于纯CoreML的,第二个(Ray)是关于Vision的。

Vision
框架是一套帮助您设置所有图像处理管道的工具。这些工具包括
CoreML
,其模型由您提供,但它不仅限于机器学习。Vision帮助您:预处理、重缩放、裁剪图像、检测矩形、条形码、人脸等。有关更多信息,请查看。除了直接在图像上执行的工作外,还可以帮助执行对模型的请求,如果您有复杂的请求序列或希望将这些操作与其他处理连接起来,这一点非常重要

使用纯
CoreML
,您必须自己实现所有这些功能,因为
CoreML
的责任只是设置您的模型并通过它获得简单的API

Vision
并不是一个纯粹围绕
CoreML
的包装器,因为它所做的不仅仅是请求执行和初始化模型,而是将
CoreML
用于它的一些功能(具体来说,在
VNCoreMLRequest
中)

在您提供的链接中:第一(appcoda)是关于纯CoreML,第二(Ray)是关于Vision。

有一篇文章介绍CoreML和Vision框架之间的API如何相互关联。有一篇文章介绍CoreML和Vision框架之间的API如何相互关联。