美文网首页
Xamarin.iOS中的CoreML简介

Xamarin.iOS中的CoreML简介

作者: iOSDevLog | 来源:发表于2018-08-09 22:41 被阅读71次

    CoreML为iOS带来了机器学习 - 应用程序可以利用训练有素的机器学习模型来执行从问题解决到图像识别的各种任务。

    该介绍包括以下内容:

    CoreML入门

    这些步骤描述了如何将CoreML添加到iOS项目中。有关实际示例,请参阅Mars Habitat Pricer示例

    Mars Habitat Price Predictor示例截图

    1.将CoreML模型添加到项目中

    将CoreML模型(扩展名为.mlmodel的文件)添加到项目的Resources目录中。

    在模型文件的属性中,其Build操作设置为CoreMLModel。这意味着在构建应用程序时,它将被编译为.mlmodelc文件。

    2.加载模型

    使用MLModel.Create静态方法加载模型:

    C#复制

    3.设置参数

    模型参数使用实现的容器类传入和传出 IMLFeatureProvider

    特征提供程序类的行为类似于字符串和字典MLFeatureValue,其中每个特征值可以是简单的字符串或数字,数组或数据,或包含图像的像素缓冲区。

    单值功能提供程序的代码如下所示:

    C#复制

    使用这样的类,可以以CoreML理解的方式提供输入参数。功能的名称(例如myParam代码示例中)必须与模型所期望的相匹配。

    4.运行模型

    使用该模型需要实例化特征提供程序并设置参数,然后GetPrediction调用该方法:

    C#复制

    5.提取结果

    预测结果outFeatures也是一个例子IMLFeatureProvider; 可以使用GetFeatureValue每个输出参数的名称(例如theResult)访问输出值,如下例所示:

    C#复制

    将CoreML与Vision框架结合使用

    CoreML还可以与Vision框架结合使用,以对图像执行操作,例如形状识别,对象识别和其他任务。

    以下步骤描述了如何在CoreMLVision示例中一起使用CoreML和Vision 。该示例将Vision框架中的矩形识别MNINSTClassifier CoreML模型相结合,以识别照片中的手写数字。

    3号图像识别 5号图像识别

    1.创建Vision CoreML模型

    加载CoreML模型MNISTClassifier,然后将VNCoreMLModel 其包装在一起,使模型可用于Vision任务。此代码还创建了两个Vision请求:首先用于查找图像中的矩形,然后使用CoreML模型处理矩形:

    C#复制

    该类仍然需要实现 Vision请求的方法HandleRectanglesHandleClassification方法,如下面的步骤3和4所示。

    2.启动Vision处理

    以下代码开始处理请求。在CoreMLVision示例中,此代码在用户选择图像后运行:

    C#复制

    此处理程序将传递ciImageVNDetectRectanglesRequest在步骤1中创建的Vision框架。

    3.处理视觉处理的结果

    矩形检测完成后,执行HandleRectangles方法,裁剪图像以提取第一个矩形,将矩形图像转换为灰度,并将其传递给CoreML模型进行分类。

    request传递给此方法的参数包含Vision请求的详细信息,并使用该GetResults<VNRectangleObservation>()方法返回图像中找到的矩形列表。observations[0]提取第一个矩形并传递给CoreML模型:

    C#复制

    ClassificationRequest在步骤1中使用的初始化HandleClassification 在下一步骤中定义的方法。

    4.处理CoreML

    request传递给此方法的参数包含CoreML请求的详细信息,并使用该GetResults<VNClassificationObservation>()方法返回按置信度排序的可能结果列表(最高置信度优先):

    C#复制

    样品

    有三种CoreML样本可供尝试:

    • 火星居价格预测器样品具有简单的数字输入和输出。

    • 所述影像与CoreML样品接受一个图像参数,并使用视觉框架的图像,其被传递到识别单位的CoreML模型中,以确定正方形区域。

    • 最后,CoreML图像识别示例使用CoreML来识别照片中的要素。默认情况下,它使用较小的SqueezeNet模型(5MB),但它已经编写,因此您可以下载并合并更大的VGG16型号(553MB)。有关更多信息,请参阅示例的自述文件

    相关链接

    原文: https://docs.microsoft.com/en-us/xamarin/ios/platform/introduction-to-ios11/coreml#coreml

    相关文章

      网友评论

          本文标题:Xamarin.iOS中的CoreML简介

          本文链接:https://www.haomeiwen.com/subject/xsrhbftx.html