Core ML(一):model简单使用

2017-12-15  本文已影响235人  younger_times

经过机器学习算法训练的模型将作为运用的结果。这个模型的预测基于新的输入数据。比如,根据一个区域的房价历史数据,结合卧室和浴室数量来预测房子的价格。

76309543.png

Core ML 是特定领域和功能的基础。Core ML 支持视觉图像分析基础的自然语言处理(比如 NSLinguisticTagger 类)和GamepayKit ,评估和学习决策树,Core ML 本身构建在底层处理之上,像Accelerate (进行大规模的数学计算和图像计算,对高性能进行优化。)和 BNNS(使用之前获得的训练数据来实现和运行神经网络。)

Core ML 充分利用一台设备的性能,使用最少的内存和电量,严格地在设备上运行可以确保用户数据的隐私,并保证当网络连接不可用时,您的应用程序仍然具有功能性响应性

构建更多智能机器学习的应用

model 说明
MobileNet 从一组1000个类别中检测出图像中的占主导地位的物体,如树、动物、食物、车辆、人等等。
SqueezeNet 从一组1000个类别中检测出图像中的占主导地位的物体,如树、动物、食物、车辆、人等等。虽然只有5 MB的内存空间,但是,压缩zenet与alex net的精度相同,但其参数却少了50倍。
Places205-GoogLeNet 侦测到一个来自205个类别的图像的场景,如机场终端、卧室、森林、海岸等。
ResNet50 从一组1000个类别中检测出图像中的占主导地位的物体,如树、动物、食物、车辆、人等等。
Inception v3 从一组1000个类别中检测出图像中的占主导地位的物体,如树、动物、食物、车辆、人等等
VGG16 从一组1000个类别中检测出图像中的占主导地位的物体,如树、动物、食物、车辆、人等等。

获取 Core ML 模型

获得Core ML模型用于你的APP

Core ML 支持多样化的机器学习模型,包括神经网络集合树,支持向量机 和广泛的线性模型,Core ML 要求Core Model 模型格式(.mlmodel 文件扩展名).mlmodel 是通过第三方python来生成的,你可以通过python来制定你属于你自己业务模型

Apple 早已提供几个受欢迎,开源的Model格式化模型。你能在你的APP里下载并开始使用它们,此外,多方面的研究调查组和大学发布它们训练的模型,这可能不是核心的ML模型格式。如果你需要转换它们,你可以阅读以下:
Converting Trained Models to Core ML.

在你的APP集成Core ML

为APP添加下例模型,通过为model输入数据来进行模型预测

下载模型项目

你能看见model中的信息,包括model的类型,期望的输入和输出。模型的输入是太阳能板和温室的数量,以及大量的栖息地(在英亩的土地上)。该模型的产量是栖息地的预期价格。

ef4547b6-2725-4185-989c-4daa9ba9aa77.png

在代码中创建Model(Objective-C)

Xcode还使用模型的输入和输出信息来自动生成一个定制的编程接口到Model

拖入.mlmodel 比如MarsHabitatPricer.mlmodel,XCode生成接口来代表这个model(MarsHabitatPricer)的输入输出

#import "MarsHabitatPricer.h"

MarsHabitatPricer *pricer = [[MarsHabitatPricer alloc]init];

将输入值传递给模型

 //1. 实例化
        MarsHabitatPricer *pricer = [[MarsHabitatPricer alloc]init];
        
        //2.输入数据 太阳能板大小,数量,尺寸
        MarsHabitatPricerInput *input = [[MarsHabitatPricerInput alloc]initWithSolarPanels:2.0 greenhouses:1.0 size:11];
        
        //3. 建立输出数据 预测价格
        MarsHabitatPricerOutput *output = [pricer predictionFromFeatures:input error:nil];
        
        NSLog(@"-----%lf",output.price);

图像分类

iOS Core ML与Vision初识

通过Core ML 框架 ,您可以使用经过训练的机器学习模型来对输入数据进行分类。视觉框架与 Core ML 一起工作,将分类模型应用到图像上,对这些图像进行预处理,使机器学习任务更容易、更可靠。

+(void)getImage:(UIImage *)imgage{
    
    CIImage *ci = [[CIImage alloc]initWithImage:imgage];
    
    //11.0以上才能使用
    if (@available(iOS 11.0, *)) {
        MobileNet *mobileNet = [[MobileNet alloc]init];
        NSError *error = nil;
        
        //创建VNCoreMLModel
        VNCoreMLModel *vncoreMMolder = [VNCoreMLModel modelForMLModel:mobileNet.model error:&error];
        
        // 创建处理requestHandler
        VNImageRequestHandler *handler = [[VNImageRequestHandler alloc] initWithCIImage:ci options:@{}];
        
        VNCoreMLRequest *request = [[VNCoreMLRequest alloc]initWithModel:vncoreMMolder completionHandler:^(VNRequest * _Nonnull request, NSError * _Nullable error) {
            
            NSMutableArray *arry = [NSMutableArray array];
            for (VNClassificationObservation *classification in request.results) {
                
                //接收识别率大于0.1的数据
                if (classification.confidence > 0.1) {
                    NSNumber *number = [NSNumber numberWithFloat:classification.confidence];
                    NSDictionary *dict = @{@"name:":classification.identifier,@"confidence":number};
                    [arry addObject:dict];
                }
            }
            NSLog(@"%@",arry);
        }];
        [handler performRequests:@[request] error:&error];
        if (error) {
            NSLog(@"error:%@",error.localizedDescription);
        } 
    } else {
        NSLog(@"iOS版本大于11.0方可使用");
    }
}

上一篇下一篇

猜你喜欢

热点阅读