使用VNCoreMLModel和Inceptionv3.model()之间的区别?
我一直在尝试使用CoreML(Apple的机器学习库)。我下面这些教程上手使用VNCoreMLModel和Inceptionv3.model()之间的区别?
1)https://www.appcoda.com/coreml-introduction/
2)https://www.raywenderlich.com/164213/coreml-and-vision-machine-learning-in-ios-11-tutorial
第一个教程使用一个盗梦空间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
框架是一套工具,帮助您设置所有的图像处理流水线。在这些工具中,有CoreML
和您提供的模型,但它不仅限于机器学习。 Vision可帮助您:预处理,重新缩放,裁剪图像,检测矩形,条形码,面部等等。检查docs获取更多信息。除了直接在图像上执行的工作外,它还有助于对模型执行请求,如果您有复杂的请求序列或想要将这些操作与其他处理连接起来,这非常重要。
纯粹的CoreML
,你必须自己实现所有这些功能,因为CoreML
责任只是设置你的模型,并获得简单的API。
Vision
不在身边CoreML
一个纯粹的包装,因为它确实比要求执行和初始化模式多得多,但它使用CoreML
一些它的功能(具体 - 在VNCoreMLRequest
)。
在您提供的链接中:1st(appcoda)是关于纯CoreML,2nd(Ray)是关于Vision。
关于Core ML与Vision框架之间的API如何相互关联,有一篇文章[here](http://deepdojo.com/mlmodel-api)。 – otto