美文网首页
从零开始搭建AI应用

从零开始搭建AI应用

作者: 笑傲NLP江湖 | 来源:发表于2022-01-18 18:13 被阅读0次

    原创:晏茜
    资料来源:邱丹

    1. intel 开发工具及实验平台介绍

    1.1 Intel® OpenVINO™工具包

    定义

    Intel® OpenVINO™ 工具包是为了让英特尔的硬件平台最大的发挥它的算力出来而诞生的工具套件。Open 代表开源的。V 代表 Visual,说明它是基于计算机视觉应用的,N 代表的是 Network,O 代表的是 Optimization,网络优化。所以,Intel® OpenVINO™ 工具包是开源的用于优化计算机视觉应用以及模型性能的一套工具包。

    特点

    Intel® OpenVINO™ 工具包的显著特点是它能够给硬件平台带来指数级的性能提升。这个工具包像是一个智能路由器,基于这个工具包去做开发,运行的硬件平台无论是6代酷睿,还是至强处理器,都是可以的,因为 OpenVINO 会自动的匹配这些硬件平台,这也是它能简化开发的意义所在。

    组成

    Intel® OpenVINO™ 工具包包含两个模块,第一个模块是模型优化器,第二个模块是搜索引擎。

    模型优化器 (Model Optimizer)

    • 一个基于python的工具,用于导入训练好的模型并将其转换为中间表示
    • 通过模型拓扑转换优化性能及存储空间
    • 硬件无关的优化

    推理引擎 (Inference Engine)

    • 高层级的 C/C++ 和 Python,推理运行时API
    • 为不同的硬件提供统一接口,每个硬件类型以动态加载插件的方式实现接口
    • 为不同硬件类型提供最佳性能,无需用户实现和维护多个代码路径

    工作流

    为什么 OpenVINO 工具包可以做到优化,原因可以通过它的工作流体现出来。第一步是模型的构建,TensorFlow,ONNX 等,这些大厂的系统学习框架,训练出来的模型,经过 OpenVINO 之后,首先进行第一个层次的优化,也就是通过模型优化器,它会把这些模型进行转换,转换的过程中对模型进行简化,之后输出一个优化过后的模型。优化过后的模型同时又会经过第二重优化,第二重优化是由推理引擎来完成的,推理引擎像是一个智能路由,它可以导航,如果你在英特尔的 CPU 上面做你的深度学习,那么它就会自动的去调用 CPU 相关的优化。同理,如果你在英特尔的其他硬件平台上面做你的深度学习,例如集成显卡,或者计算棒,它就会去调集成显卡,或是计算棒对应的一些优化。所以,推理引擎已经提供了一些优化。当我们在做开发的时候,只要调用这一层 API,就可以达到硬件的最佳性能。

    总的来说,第一层优化的模型优化器加上第二层优化的推理引擎,这两层优化的复合效用会使 OpenVINO 最后的输出结果达到很好的效果。

    1.2 英特尔® DevCloud for the Edge 概述

    英特尔® DevCloud for the Edge 是 intel 自家的一个云,它的特点是,第一,它是可以免费申请的,第二,云环境上面首先除了提供给你一个自己的空间之外,它还额外提供了很多 intel 的其它算力,包括 intel 最新的 CPU 或者是最新的设备,都会放在这上面,也就是说,如果你注册了英特尔® DevCloud for the Edge,你可以免费获取到当下比较热门的英特尔的所有的算力设备。

    我们为什么要使用英特尔的算力呢?

    英特尔的算力有其优点。首先,英特尔作为一个 CPU 大厂,它对于 CPU 的优化是毋庸置疑的。 CPU 是无处不在的,只要有 CPU,就可以做 AI 计算。所以它可以降低你的 AI 准入门槛,你不一定需要去花钱买很昂贵的设备;第二,英特尔的产品线非常丰富,它的 CPU 有多种型号,可以提供很多的选择空间。在具体的应用场景上,比如,一个智慧门店,如果这个门店很小,只有两平米,你完全无需花大价钱去购买一个昂贵的配置,相反,如果这个门店很大,有二十平米,你就必须得去花钱买相对昂贵的配置,这是一种资源的合理配置;第三,简化,你可以通过构建一个优化的 AI 平台来减少“移动部件”,也就是说只要是 intel 的硬件,都可以通过 OpenVINO 把它们连接到一起,这就是一种简化;第四,领先,我们在选择框架时,一般会选用主流框架,这是因为一些小众的框架不能长久的保留其使用价值。而英特尔的软件亦或其硬件,质量都是有保证的,并且其使用价值具有可持续性。

    英特尔® DevCloud for the Edge注册链接如下:

    https://www.intel.com/content/www/us/en/developer/tools/devcloud/overview.html

    1.3 Open Model Zoo

    Open Model Zoo 是 Github 上的资源仓库,其中包括预训练模型,演示代码,以及相关的辅助工具。它包含的模型可分为三个种类,第一个种类是计算机视觉的模型,第二个种类是自然语言处理的模型,第三个种类是一些其它模型,比如强化学习的模型。除了众多模型之外,Open Model Zoo 还包含对应的演示代码,并且它的模型和代码都是非常容易搭建的。

    2. intel 在 AI 项目中的工作流程

    本部分主要介绍了 intel 在 AI 项目开发的各个阶段中的工作流程。

    AI 项目的开发流程

    上图是一个 AI 项目开发的生命周期,总共分为六个阶段。

    第一阶段,问题的定位和分析。现阶段 AI 的应用案例是很多的,但其实在过去的很长一段时间,AI 相关项目是门槛相对高的,现在,随着 AI 产业的发展,在各行各业中纷纷涌现出大量的 AI 相关产品。比如,一些传统行业,比如像纺织业,过去检查布匹的瑕疵是依赖于肉眼的,现在如果想运用 AI 技术来解决这个问题,其实是可以使用计算机视觉的方式来解决的,可以进行目标的检测,把布匹的瑕疵检测出来。在农业方面,比如,可以运用 AI 技术,去收集植物作物生长的数据,然后利用这些数据,去调控湿度,温度等指标至适宜作物生长的环境。在我们日常的学习和生活当中,可以打破局限,当遇到问题的时候,去思考如何从人工智能的角度去解决它,有了这样一些想法之后,再尝试去实现你的想法。

    在计算机视觉中,有两种任务,一是目标分类,比如一个可爱的小狗,如果我的程序识别出这是一个 Dog,那表示对它做了分类,二是目标检测,如果我不仅知道这是一个 Dog,还能把 Dog 的位置框出来,返回 Dog 的坐标,那表示对它做了检测。

    事实上,如果我们能够把实际生活中遇到的问题与这样的例子进行对照,那么你可能就会产生一些新的想法。

    第二阶段,获取样本数据和数据集。通常来讲,我们出于学习的目的,在网络上获取数据集是很容易的。

    第三阶段,数据的清洗和分析。

    Titanic Dataset (csv file from Kaggle)

    以上是关于泰坦尼克的数据集,用来预测泰坦尼克号上乘客的存活率,根据姓名,性别,年龄等特征值,去预测这个乘客是否存活。这是一个普通的数据集,而应用于机器视觉的数据集并不是以这种形式来呈现的,它其实是由大量的图片和图片的标注数据共同组成的。在非计算机视觉领域中,数据集的主要作用是去重,填补缺失值,去除不需要的字段,去除不合理值等。而这些动作在计算机视觉的图片处理上也是同样适用的。

    (虚构数据)

    针对李雷、韩梅梅、Lily 和 Lucy 的数据集如何进行数据的清洗和分析呢?第一行,李雷他的年龄是 200 岁,这是不合理的数据。第二行和第三行有各有一个韩梅梅,其实韩梅梅的名字是一样的,只不过第三行名字中有其他的字符,所以这两行是重复的数据,第五行中,Lucy 的年龄是空缺的,而 Lucy 和 Lily 是一对双胞,所以可推测 Lucy 的年龄也应该是 18 岁,此处是填补缺失值。

    对于普通的数据集的数据清洗方式与在计算机视觉领域中运用的数据清洗方式是非常类似的。比方说,为了能够得到更好的训练结果,或是预测的结果,我们需要对图片来进行处理,可能是灰阶的处理,或者是需要把这个图片进行缩放。清洗方法本质上是类似的。

    第四阶段,模型的获取和训练。对于学生而言,模型的获取途径通常是一些先进的论文,获取之后,再去复现模型的结构。但实际上,在真正的产业中,复现论文的做法并不普遍,大家多数还是去获取已有的成熟的一些模型,例如YOLO, MobileNet,其原因是学术与产业的不对等关系,产业往往会滞后学术若干时间,所以模型的获取多数情况下都是选择开源的,经典的,并且容易获取的模型,再将它做重新的训练。

    第五阶段,模型的评价。

    常用的模型评价指标

    模型的获取和训练做完了之后,我们需要做模型的评价,这个评价相信大家比较熟悉的肯定是前面的这一部分,也就是 Precision,Recall 和 F1 Score,这里不去专门的讲解,因为这三个评价指标是非常常用的,也是在我们模型训练的时候一定会用到的。下面提到的这两个指标,Latency 和 FPS,笔者会去解释,因为这两个指标相对来说,与工程部署的关系更大。

    因为模型的训练通常是在实验室的环境里面进行的,当前三个指标训练好了之后,并真正将其投入到生产环境里面去部署是,其实并不会 100 % 得到想要的结果。因为生产环境与实验室的环境是不尽相同的,所以,即使你在实验室做出一个非常完美的算法,当真正投入到生产环境里面去部署它时,产生的的问题也会是很多的。举例来说,你可能只考虑到了一些高价的设备,但是你没有考虑到一些低性能的设备等等。

    那么,这里解释一下后面这两个参数,第一个参数是 Latency,也就是延时,这个延时通常是拿来衡量一个模型,它推理一次需要的耗时的,它的单位通常是毫秒。Latency 是越小越好的,越小代表你的模型处理起来是越快的,尤其是在工业的一些需要实时响应的场景中,其耗时是非常小的,甚至可以达到微秒级别。第二个参数是 FPS,即 Frame Per Second,也就是一秒钟可以处理的帧数,它的另一个名字叫做吞吐量。

    第六阶段,模型的部署。模型的部署是最复杂的,也是 OpenVINO 和 DevCloud 重点想解决的问题。

    如上图所示,分别给出了三个不同的工作负载端。第一个工作负载是手机,第二个工作负载是电脑终端,第三个工作负载是在云端。传统来说,模型的部署在整个 AI 应用的生产环节中是最耗费资源的。不同的工作负载,它的生产环境是不一样的。由于现在 AI 的发展趋势是降低 AI 的使用门槛,让整个 AI 开发变得自动化,所以现在出现了各种各样的工具来解决模型部署的问题,包括 OpenVINO 和 DevCloud。

    以上是关于 intel 开发工具及实验平台介绍,以及它们在 AI 项目工作流程中的运用,欢迎大家批评指正。

    相关文章

      网友评论

          本文标题:从零开始搭建AI应用

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