1、前言
本篇在不需要很多机器学习相关知识以及 http://ML.NET 知识的情况下介绍一些机器学习方面的基本概念、工具以及如何利用 .NET Core 上的 http://ML.NET 机器学习框架使用一个已经训练好的机器学习模型。
2、背景
人工智能(Artificial intelligence/AI)也被称做机器智能,它是一种由机器展现出的“学习”与“解决问题”的智能,与之相对应就是自然智能即由人和者其他生物展现出的智能。机器学习(Machine Learning)是实现人工智能的方式之一,而深度学习(Deep Learning)则是机器学习的其中一种方法。这三个概念的关系参考下图
我们要使用的神经网络模型名为 Tiny YOLOv2,它是一个简化版本的 YOLO 模型。这是一个用于图像中对象识别与定位的神经网络模型。关于该神经网络的深入内容有兴趣的读者可以阅读下面两篇文章,其中一篇是简要介绍另外一篇则是对应的论文。
Real-time object detection with YOLOmachinethink.net YOLO 神经网络论文arxiv.org算法有了,还需要一套训练神经网络的数据集,Tiny YOLOv2 是通过 PASCAL VOC 数据集训练得到的模型,数据集的信息可以在下面的链接找到,
PASCAL VOC datasethost.robots.ox.ac.ukTiny YOLOv2 模型的文件可以在 ONNX 项目的 GitHub 站点,这里我们要使用的是ONNX 格式的模型文件。
onnx/modelsgithub.com那什么是ONNX呢? 目前各个语言的机器学习框架的模型都有自己的模型文件格式,比如TensorFlow的.pd,Keras的.keras,CoreML的.mlmodel 等等。ONNX旨在通过提供一个开源的支持深度学习与传统机器学习模型的格式建立一个机器学习框架之间的生态,让我们可以在不同的学习框架之间分享模型,目前受到绝大多数学习框架的支持。详情可以浏览其主页。
ONNX: Open Neural Network Exchange Formatonnx.ai