【云驻共创】用ModelBox框架,打造AI云宝玩偶

举报
龙腾九州 发表于 2023/03/29 19:43:13 2023/03/29
【摘要】 本次我们通过理论和实操,进行了使用开发板开发AI应用,用ModelBox框架,打造AI云宝玩偶。其主要内容包括云宝介绍,姿势检测,语音交互这三大块。

用ModelBox框架,打造AI云宝玩偶

这次我们主要介绍基于ModelBox框架,打造AI云宝玩偶。此次主要内容包括云宝介绍姿势检测,语音交互这三大块。

一、云宝介绍

1.1起因

一般设计出一个机器人付出的成本比较大,比如说需要熟悉3D打印,需要熟悉机械设计,芯片设计等等这些内容都是普通人力所和不能实现的。所以,我们思考能不能设计一个大家都容易实现的AI创新项目。包括两个层面,一个是硬件简单,一个是通过简单的硬件堆叠,就可以实现我们需要的功能。同时,通过合适的软件框架,能够实现一些酷炫高性能的AI应用。基于此想法便开发了一个AI云宝玩偶这样一个项目。熟悉华为云的小伙伴可能知道,云宝是华为云的一个吉祥物,这个项目为什么称为AI云宝玩偶呢?是因为其有云宝一样的外壳,一样的形象。AI云宝玩偶基于ModelBox AI开发套件:PK开发板,这个板子具有很不错的AI算力,同时提供了非常丰富的外部接口,让我们扩展起来非常方便。此外,AI云宝玩偶实现的功能有语音交互,显示屏显示。

 

1680088699195.jpg

1.2项目结构设计

整个项目结构设计主要有以下几个部分:云宝的外壳、RK开发板、音响、麦克风、扬声器、摄像头。智能云宝玩偶的核心在于RK开发板,它的所有功能都是基于这个开发板进行开发的,其主要包括姿态比对、语音交互这两个AI技能。基于这两个技能,可以衍生出很多的应用。比如说,在锻炼的时候,通过人力姿态检测,判断你的健身操姿态是否正确,当然也可以通过我们的AI应用来进行人脸的检测,人脸识别。姿态比对开发过程中涉及到三个阶段,包括模型训练、模型转换,以及模型集成。在面对模型部署或者模型的集成时,由于每个人代码习惯不同,以及模型集成的方式有很大的不同,华为云为了统一大家的模型集成方式,推出了一个统一的AI应用开发框架ModelBox,它来帮助AI开发者快速完成从模型文件到AI推理的开发和上线工作,降低AI算法的落地门槛,同时给AI应用带来了高稳定性与高性能。

1.3硬件选型

从下面这张图,我们可以看出这些硬件是怎么连接的。在云宝的前面,在它的胸部位置有一个显示屏,这个显示屏是通过与开发板相连。在云宝的眼睛位置有摄像头,这个摄像头是通过相关接口与开发板进行相连的。为了方便使用,这里使用的是蓝牙麦克风以及蓝牙音响。

1.4核心功能

AI云宝玩偶的核心功能是人体姿态检测和语音交互。其中人体姿态检测包含:人体关键点模型,Modelbox人体关键点检测与相似度计算。而语音交互包含:介绍华为云语音交互的功能,语音唤醒,语音识别、语音合成,开源的语音对话机器人:wukong-robot。

 

二、姿势检测

2.1核心功能-人体姿态检测

首先,我们先来看一下人体姿态检测这个核心功能。其实现的效果是这样的,随机选择一个姿态,检查摄像头中画面是否包含人形,计算人体的关键点和并且和刚才选择的姿态关键点进行结果的匹配,计算他们的相似度,当相似度达到一定的阈值时,即实现了该姿态的正确匹配。人体姿态检测的检测流程是先从摄像头里面读取一帧图片,然后进行人形的检测,了解判断是否是人形,若不是进行绘制检测结果,若是,进行人形跟踪与单人过滤,并进行关键点检测和关键点时序滤波,然后绘制检测结果。算法用到了人形检测YOLOv7-tiny和关键点检测TinyPose这两个算法。这两个算法都是开源的,算法相关的一些事项,我们可以参考一下华为云AI说文档。同时这里用到的模型转换的工具是rknn-tool,用到的模型集成是ModelBox这个AI开发框架。

2.2ModelBox的定义

那么,ModelBox是什么呢?ModelBox是端边云统一的、高性能、高扩展、易用的AI推理开发框架,帮助开发者快速完成Al应用开发和部署。一个典型的场景,AI算法的落地,除了模型训练之外,还需要对视频、图片进行解码,预处理、后处理等过程的开发。这些往往需要耗费模型训练很多资源,同时算法的性能和可靠性随着开发人员工程能力的不同,参差不齐,严重影响AI算法的上线效率。基于这些原因,ModelBox应用而生。训练是AI模型的开发,推理是AI模型的应用。一般程序是人编写出来的Al模型是经过训练程序训练出来的。ModelBox是AI推理开发框架,帮助开发者快速完成Al应用开发,降低AI开发门槛,同时也带来了AI应用的高稳定性。

我们常见的AI开发流程是这样的,首先获取训练数据,然后对这些数据进行预处理,接着算法开发和模型训练,训练好一个模型后,将模型通过AI应用开发,形成一个AI应用。这就是ModelBox的用武之地,ModelBox主要是在AI应用开发者阶段来实现的。开发出AI应用后,可以将其部署到云、边、端不同的设备,供业务系统进行调用。华为云ModelBox就能够完成从数据的预处理到通过AI应用开发及部署到云边设备中的整个流程。华为HiLens服务可以将AI应用部署到轻量级的端设备中。

2.3ModelBox关键特性一

ModelBox具备三大特性,其中第一个特性就是应用编排异构计算组件。其缩短跨平台开发和减少部署成本,一次开发,端边云部署运行。在AI应用中通常有一个视频输入、视频解码、预处理、推理、后处理等流程。这些流程在ModelBox中用功能单元来实现,功能单元其实就是单独的实现了相应功能的意思。在实际业务中,部署的硬件可能有不同的架构,不同的操作系统,对框架也是各种各样的影响,如有NPU、GPU、CPU等,兼容多种操作系统,支持多种主流基础推理框架等。ModelBox对这些异构的软硬件进行了上层的封装,删除了相同的接口,屏蔽掉了底层的明显差异,使得我们可以实现一次开发,端边云部署。

2.4ModelBox关键特性二

ModelBox第二个特性是什么?高性能并发调度引擎,开发者无须掌握底层调度机制,也能保证应用优化效果。它的灵活调度策略保证推理性能:线程池调度,灵活分发计算单元到异构硬件执行;基于队列的数据生成,执行与数据绑定,保证数据合理分配。基于ModelBox开发应用性能提升:数据吞吐量比原来提升了七倍,而处理时延比原来降低了58%。

2.5ModelBox的其他特性

ModelBox的其他特性:1.预置视频处理、图像处理、HTTP服务等通用功能单元,缩短开发成本。2.集成可视化编排服务,零代码体验AI应用开发。

2.6ModelBox的基本概念

我们看一下ModelBox的基本概念。

1. 流程图:有向图,表达应用逻辑,控制ModelBox执行过程,采用GraphvizDOT语言进行表述。

2. 功能单元:流程图中的顶点,应用的基本组成部分,ModelBox的执行单元,开发者主要开发的组件。

3. ModelBoxAl应用开发流程:

流程图设计:定义业务流程,划分功能单元,理顺功能单元间的数据传递关系;功能单元开发:采用框架已提供的通用功能单元,实现自己定义的业务功能单元;运行与测试:使用图片、视频文件、实时视频流等测试应用。

2.7代码实现姿态检测

我们看一下用ModelBox是怎么实现姿态检测的个功能的,具体看一下它的代码是怎么实现的这里创建了一个姿态识别的工程,这个工程有以下几个文件夹。其中需要关注的一个是etc/flowunit,这个文件夹里是我们定义的各种各样的功能单元。另一个graph文件夹是我们定义的流程图。ModelBox最重要的两个概念是功能单元和流程图,那功能单元是怎么实现的?它有个类叫flowunit,它也是所有功能单元的。此外,它最重要的一个函数是process功能单元其实是上游功能单元的输出,作为当前功能单元的输入。当前功能单元,它有两个输出,叫二级image最终处理的结果,会放到这两个分支上面去,可以看到这里面对获取的输入的图片进行了处理。

三、语音交互

通过相关代码和操作演示完姿势匹配技能后,我们来看下另一个核心功能语音对话。在云宝上面也实现了一个类似于智能音箱这样应用,其实现效果是怎样的呢?使用“云宝云宝”关键词唤醒云宝,开始进入录音模式,录音完成后,将录音数据上传到华为云语音交互服务,在华为云语音交互服务提前设置好语料。将回复通过语音合成的API返回语音文件到云宝,在云宝中播放回复的语音文件,完成语音对话的功能。其中涉及到三个技术,语音唤醒:snowboy;语音识别:华为云语音交互服务;语音合成:华为云语音交互服务。

本次我们通过理论和实操,进行了使用开发板开发AI应用,用ModelBox框架,打造AI云宝玩偶。

本文参与华为云社区【内容共创】活动第22期

任务30用ModelBox框架,打造AI云宝玩偶 理论+实操 教你使用开发板开发AI应用

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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