【云驻共创】1/10代码,1/6时间,如何基于Mindx快速开发一个商业AI应用

举报
lte网络工程师 发表于 2021/07/09 14:35:40 2021/07/09
【摘要】 1/10代码,1/6时间,如何基于 Mi ndx 快速开发一个商业AI应用 人工智能已经进入场景化应用时代: 早些年人工智能还处在实验室,现在人工智能技术不管是计算机视觉的图像识别、目标检测,还是图像分割、人脸识别 ,都已经跟行业结合得很紧密了。 人工智能技术也只有跟行业结合起来才能发挥它应有的价值。 我们核心是说到, 这样一些人工智能的技术怎么样把它用到行业里面。 同时成...

 【云驻共创】1/10代码,1/6时间,如何基于Mindx快速开发一个商业AI应用

人工智能已经进入场景化应用时代:

早些年人工智能还处在实验室,现在人工智能技术不管是计算机视觉的图像识别、目标检测,还是图像分割、人脸识别 ,都已经跟行业结合得很紧密了。 人工智能技术也只有跟行业结合起来才能发挥它应有的价值。 我们核心是说到, 这样一些人工智能的技术怎么样把它用到行业里面。 同时成熟的还有语音识别,最近很火的NLP类的BERT,GPT-3这样的一些模型,慢慢的已经开始达到非常高的精度,可以真正进入场景解决行业场景的一些问题。

核心是说,怎么样把人工智能的技术,用到行业中去,解决行业的问题。 比如说我们行业面临的问题,就像工业质检 ,它其实当前就面临着一个用工荒的一个问题,因为如果生产线那么多设备那么多,都需要一个人一个人去看的话,那它整个工作量和人力的消耗,劳动力的消耗都是非常巨大的,就当前这个能力是严重不足的,那么需要通过一些机器设备和一些智能技术来解决我们当前这样一个用工荒的一个问题。 同样的还有智慧园区、智能驾驶,电力线巡检问题。

我们这一轮人工智能技术大概从 08,09 年开始,一直到可能15 年前后,我一直都在解决算法的问题。 那个时候,我们深度学习的算法是卷积的算法,一直在不停的前进。 但我记得大概在15年左右的时候 ,如果说我们要想要搭一个人工智能深度学习的系统, 比如说caffe的这样一个训练平台的话, 一个博士,大概是需要7天左右才能够把GPU 训练环境装好, 然后要把那些bug都调 好,但是今天的话其实已经很简单了,可能一个小时基本上就能够好了,其实已经得到了非常大简化。 但是如果我们再往前看一步,就是说如果我们把这个模型训练好了之后,这个基础训练环境有了,那我们现在想要做一个 应用系统的话,或者是做一个行业解决方案的话,其实中间还是有非常大的一些 GAP( 障碍 的。

从AI算法到产品化应用还有很远, 我们会把它总结出来叫三大鸿沟,八大困难。

1. 算法开发难

算法开发难 ,还不仅仅局限模型复现 ,你把这个模型复现了 之后 ,你需要有行业的数据,你才能够训练出来一个你想要的这个模型。 那如果我们想要训练一个行业模型,比如说你要想训练一个人脸识别,或 者你想要训练一个车辆结构化或者想要识别一个车型,如果你想要做这样一个模型的话呢, 第一个模型获取, 核心是需要选择一个合适的模型。然后需要准备行业的数据, 你可能需要大概占整个模型开发时间的70%都在收集这个行业的有效数据。 据准备好后的训练过程,有可能跟数据是不断迭代的。选择了模型之后数据的标注过程有可能跟你选择的模型或者是后面的应用开发过程是强相关的。我们一般拿到的是开源的模型,比如说是 目标检测选择的yolov3,yolov4 ,yolov5, 有可能会在coco,Pascal_voc 上面 ,针对目标是20类,或者是80类的目标检测。但是实际应用中,你肯定不是这个样子的,你自己的任务里面一般也就是三五类,最多十类的目标检测。这样,你的检测精度实际上可以做的更高。这样就需要有迁移学习,拿自己的数据去做模型调优( Fine tunning )。第四步,还需要验证模型的精度。这四步都完成了,才能算是做完了一个模型训练的闭环

2. 应用开发难

训练完成之后,那后面就是你的应用系统的开发了。比如说做一个目标检测的,假如做一个安全帽的现象,是跟IPC相连的。你的视频图像怎么获取,你跟相机怎么连, 可能选择rtcp协议 ,那rtcp协议怎么配置,完了之后 ,那你拿到的可能是1080p的一个视频流 ,1080p的视频里的帧缓存怎么做?然后呢,你这个解码在哪做?解完码之后 resize在哪做?因为这些其实都是人工智能计算以外的计算。 前面的那个resize ,你到底是选择 YUV还 是选择 BGR的 ,或者选择RGB 的,然后你的数据通道也是选择那个NHWC的还是选择NCHW的,这些都是整个应用开发过程中你需要面临的选择。 这些东西你选完了之后, 就需要去做NPU的一个性能的调优。怎么样才能把NPU的这个资源,做到这个利益最大化的利用。 这个时候系统中除了你的 NPU也好或者GPU也好,除了这个神经网络算力以外 还附加了很多的内存管理 CPU的能力, 系统的调度 ,多线程的调度,只有把这一整个系列全部都做好了之后 ,才能开发出来一个好的应用。

3. 业务部署难

业务开发完了之后,可能还会涉及到一个流程监控和 业务的部署 。因为最终是需要把应用部署的一个环境中去,可能会涉及到更新策略 :假设有五千个或者五万个 边缘设备节点, 怎么更新 怎么管理 然后故障了之后怎么上报 ;怎么去做这个数据的协同和设备的协同,这都是你作为一个完整的解决方案里面需要去完整考虑的。

为解决上述一系列的问题,华为推出了 Mindx 使能应用

这是整个昇腾技术 下往上 ,昇腾的系列硬件 ,包括端、边、云的一些硬件设备。设备之上那就是我们的异构计算架构——CANN 。之上是 MindSpore ,负责模型训练的 ,与TensorFlow / PyTorch 是属于同一层的。再往上 Mindx使能应用 ,希望在模型和应用之间搭建 一个桥梁

Mindx 应用使能核心包含四大组件(2+1+X):

2: Mindx DL 和 Mindx Edge

Mindx DL 负责深度学习使能,核心是做集群计算(训练、推理) Mindx Edge 负责边云协同的组件。

1: ModelZoo 高性能模型库,选择在昇腾上效率和速率更高的模型

X : Mindx SDK 面向 行业应用 SDK。

合作伙伴可以结合深度 学习全 流程参考设计, MindX DL 四大组件之上, 能够快速开发自己的深度学习系统,包含训练系统和推理系统。

Mindx Edge 核心是要提供一个轻量化的边缘计算资源资源管理的一个运维的平台, 核心能力是使能行业客户,快速 搭建边 云协同推理平台。

ModelZoo 为开发者提供多场景、高性能优选模型,筛选出对昇腾性能和效率较高的模型。

使用 MindX SDK可四步快速开发 AI 应用


MindX SDK 每个模块就是一个插件;所有的插件都已经写好了,使用时 只需要替换om文件,就可以进行开发应用 。

第一步:转换离线模型

模型转换的过程 通过文档 或脚本的方式提供出来 。

第二步:插件开发 (可选

如果插件都支持就不需要开发。

第三步:流程编排    支持图形化,可视化,拖拉拽方式开发

流程编排 Json 方式文件 , Mindstudio中提供了流程编排图形化工具 。

第四步: 应用推理调度, 提供两种使用模式

            API调用和Web方式

昇腾的Mindx SDK还 提供了丰富的应用案例供客户参考 ,欢迎大家根据自己的需求来尝试。

应用案例展示:

应用案例展示:动态人脸识别应用


备注:本文整理自华为昇腾应用使能项目群总监王建辉 直播《1/10代码,1/6时间,如何基于Mindx快速开发一个商业AI应用》,点击可以回看。10 代码,1/6 时间,如何基于MindX快速开发一个商业AI应10 代码,1/6 时间,如何基于MindX快速开发一个商业AI应

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。