美文网首页
Core ML(一):model简单使用

Core ML(一):model简单使用

作者: younger_times | 来源:发表于2017-12-15 17:11 被阅读235次

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

    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方可使用");
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Core ML(一):model简单使用

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