CoreML和Vision

现在讲CoreML和Vision的 文章已经比较多了.我谈谈我对这两个框架的认识.

CoreML

CoreML是一个工具.不是机器学习的框架.首先现阶段的移动端的机器学习只能做到预测或者推荐.而不能在移动端上进一步学习,推送各种信息. 而是都离线训练各种模型,然后使用模型,模型根据手机输入信息,进而得到正确的输出信息.那么CoreML就是使用模型的工具.必须将模型转换成mlmodel文件,才能被CoreML识别.所以机器学习的重点是在模型.而不是CoreML上.
模型现在我们平民玩家只能使用别人的.分别有苹果提供的:
1.apple machine-learning
2. coreml-model-store
3. mlmodelzoo
这是我收集到一些能使用的模型.
以及我简单对现有模型的测试

Apple提供的模型

模型检测

以上的模型基本都可以在我提供的链接中找到.

Vision

Vision 是处理图片的一个全新框架.它主要的功能我在上篇文章的<>有说到.并且实现了在WWDC2017上的一个不错的功能.
我就说说Vision和CoreML的结合吧.一般来说只使用CoreML的话,在图片识别的模型上来说的话,是要根据模型的输入参数的规格来输入同样规格的参数的.比如GoogLeNetPlaces模型是需要224*224的图片.则我们必须输入同样大小的图片否则就会报错.然而 使用Vision一起的话,则Vision会帮我们处理.

GoogLeNetPlaces模型参数

我们直接上一段代码


- (void)createGoogleNetPlaceWithCoreMLCGImage:(CGImageRef)requestHandlerCGImage{
    GoogLeNetPlaces *googModel = [[GoogLeNetPlaces alloc]init];
    VNCoreMLModel *coreMLModel = [VNCoreMLModel modelForMLModel:googModel.model error:nil];
    VNCoreMLRequest *request = [[VNCoreMLRequest alloc] initWithModel:coreMLModel completionHandler:^(VNRequest * _Nonnull request, NSError * _Nullable error) {
        CGFloat confidence = 0.3;//低于0.3的不显示
        VNClassificationObservation *temClassification = nil;
        for (VNClassificationObservation *classifiction in request.results) {
            if (classifiction.confidence > confidence) {
                confidence = classifiction.confidence;
                temClassification = classifiction;
            }
        }
        dispatch_async(dispatch_get_main_queue(), ^{
            self.label.text = [NSString stringWithFormat:@"GoogLeNetPlaces 识别结果:%@\n 匹配率:%@",temClassification.identifier,@(temClassification.confidence)];
        });
        
        
        
    }];
    
    VNImageRequestHandler *requestHandler = [[VNImageRequestHandler alloc]initWithCGImage:requestHandlerCGImage options:@{}];
    NSError *error = nil;
    [requestHandler performRequests:@[request] error:&error];
    if (error) {
        NSLog(@"%@",error.localizedDescription);
    }
}

扩展

然后我们扩展一下机器学习.我觉得这是未来两年到十年的高速发展方向.其实我们很多时候现有的模型并不能满足我们的需求.就需要我们自己去开发模型.然而这一步你没有一定机器学习知识,是寸步难行的.然而我们apple爸爸在去年12月中旬提供了一个第三方框架turiCreate.他是只注重使用,而不注重算法的机器学习框架.下一章我会抽空写一下turiCreate.他可以写出属于我们自己的模型.

原创文章转载需获授权并注明出处
请在后台留言联系转载

你可能感兴趣的:(CoreML和Vision)