【2】coreML基于图像的处理(图像识别)

什么是 Machine Learning?

机器学习是人工智能的一个分支,他的目的在于吸收任何的数据比如说(图像,文本,语音,统计数据) 然后作出预测数据当中所隐藏的特征或是行为。

【2】coreML基于图像的处理(图像识别)_第1张图片

ML可以做什么?

面部识别
面部特征识别 (微笑、哭泣…)
特征检测和替换 (把你的哭变成笑)

ML是怎么学习的?

我们使用海量的图片,数据等等来告诉他A是啥B是啥,笑是什么等等
然后让他通过这些数据找到最符合这个图的结果。

但是,怎么和学习有关吗?
一个模型,经过多次的使用,会越来越聪明,分辨的可靠性越来越高。
有点像走迷宫,有很多种出去的方法。走的多了,就知道最近的一条路是哪了。
万一遇到死胡同怎么办呢?对,比方说他识别是个砖头,但是后面的信息是它的叫声是汪汪汪,很明显猜测砖头是错。我们就返回去,接着去找其它的路。
直到所有的数据都分析完了,给你一个最可靠的答案。当然这个答案也可能是错的。。。

神经网络

1、人工神经网络(ANN)

人工神经网络Artificial Neuron Network是基于生物的神经结构和功能的一种计算模式。

2、积卷神经网络(CNN)

卷积神经网络Convolutional Neural Network是一种反馈形式的人工神经网络。

3、递归神经 (RNN)

递归神经网络Recurrent Neural Network 他是一种深层次的学习模式,他跟 CNN 有点不同,他会在许多的神经网络的隐藏层之间反覆的游走,我们甚至可以说他是有记忆的。

=============================================
【下面让我们通过coreML来识别一条狗,看它能不能行】

STEP1

我找到一只大金毛、hello.jpeg
【2】coreML基于图像的处理(图像识别)_第2张图片

STEP2

导入Resnet50.mlmodel

STEP3

代码如下:

import UIKit
import CoreML
import Vision

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        //在内存里面拿到这个图片。
        let path = Bundle.main.path(forResource: "hello", ofType: "jpeg");

        let imageUrl = NSURL.fileURL(withPath: path!);

        let modelFile = Resnet50();

        let model = try! VNCoreMLModel(for: modelFile.model); //把这个模型拿来视觉处理

        let handler = VNImageRequestHandler(url: imageUrl);

        //结果从模型里面取
        let request = VNCoreMLRequest(model: model, completionHandler: myResultMethod);

        try! handler.perform([request]);

    }

    //处理结果
    func myResultMethod(request: VNRequest,error: Error?){

        //判别结果是否存在
        guard let resultes = request.results as? [VNClassificationObservation] else {
            fatalError("拿不到结果");
        }

        //相似物名称
        var bestPrediction = "";
        //相似度
        var bestConfidence:VNConfidence = 0;
        //递归
        for classIfication in resultes {

            if(classIfication.confidence > bestConfidence){
                bestConfidence = classIfication.confidence;
                bestPrediction = classIfication.identifier;
            }
        }
        print("预测结果\(bestPrediction) 可信度\(bestConfidence)")
    }

}

STEP4

我们看下控制台的结果
【2】coreML基于图像的处理(图像识别)_第3张图片

我们可以看到预测的结果是golden retriever,准确度有96.434%

准确度很高了。我们看下是不是对。

【2】coreML基于图像的处理(图像识别)_第4张图片

恭喜恭喜!!你这个小家伙预测对了。就是我最爱的大金毛。

你可能感兴趣的:(iOS,机器学习ML)