Bilibili视频链接:
使用MindStudio完成基于CTC算法的语音热词唤醒_哔哩哔哩_bilibili
一、 MindStudio 介绍与安装
相关课程:昇腾全流程开发工具链(MindStudio)在线课程,提供了系统的、全面的MindStudio使用,可为初学者、一线工程师、经验丰富的开发者提供参考和帮助。
本课程主要介绍MindStudio在昇腾AI开发中的使用,作为昇腾AI全栈中的全流程开发工具链,提供覆盖训练模型、推理应用和自定义算子开发三个场景下端到端工具,极大地提高开发效率。
MindStudio 提供您在AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务。依靠模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio能够帮助您在一个工具上就能高效便捷地完成AI应用开发。MindStudio采用了插件化扩展机制,开发者可以通过开发插件来扩展已有功能。
1.功能介绍
●针对安装与部署,MindStudio提供多种部署方式,支持多种主流操作系统,为开发者提供最大便利。
●针对网络模型的开发,MindStudio支持TensorFlow、PyTorch、MindSpore框架的模型训练,支持多种主流框架的模型转换。集成了训练可视化、脚本转换、模型转换、精度比对等工具,提升了网络模型移植、分析和优化的效率。
●针对算子开发,MindStudio提供包含UT测试、ST测试、TIK 算子调试等的全套算子开发流程。支持 TensorFlow、PyTorch、MindSpore 等多种主流框架的TBE和AICPU自定义算子开发。
●针对应用开发,MindStudio 集成了Profiling性能调优、编译器、MindX SDK的应用开发、可视化pipeline业务流编排等工具,为开发者提供了图形化的集成开发环境,通过 MindStudio能够进行工程管理、编译、调试、性能分析等全流程开发,能够很大程度提高开发效率。
2.功能框架
MindStudio功能框架如图1所示,目前含有的工具链包括:模型转换工具、模型训练工具、自定义算子开发工具、应用开发工具、工程管理工具、编译工具、流程编排工具、精度比对工具、日志管理工具、性能分析工具、设备管理工具等多种工具。
图1工具链功能架构
3.工具功能
MindStudio工具中的主要几个功能特性如下:
工程管理:为开发人员提供创建工程、打开工程、关闭工程、删除工程、新增工程文件目录和属性设置等功能。SSH管理:为开发人员提供新增SSH连接、删除SSH连接、修改SSH连接、加密SSH密码和修改SSH密码保存方式等功能。
应用开发:针对业务流程开发人员,MindStudio工具提供基于AscendCL(Ascend Computing Language)和集成 MindX SDK 的应用开发编程方式,编程后的编译、运行、结果显示等一站式服务让流程开发更加智能化,可以让开发者快速上手。
自定义算子开发:提供了基于TBE和AICPU的算子编程开发的集成开发环境,让不同平台下的算子移植更加便捷,适配昇腾AI处理器的速度更快。
离线模型转换:训练好的第三方网络模型可以直接通过离线模型工具导入并转换成离线模型,并可一键式自动生成模型接口,方便开发者基于模型接口进行编程,同时也提供了离线模型的可视化功能。
日志管理:MindStudio为昇腾AI处理器提供了覆盖全系统的日志收集与日志分析解决方案,提升运行时算法问题的定位效率。提供了统一形式的跨平台日志可视化分析能力及运行时诊断能力,提升日志分析系统的易用性。
性能分析:MindStudio以图形界面呈现方式,实现针对主机和设备上多节点、多模块异构体系的高效、易用、可灵活扩展的系统化性能分析,以及针对昇腾AI处理器的性能和功耗的同步分析,满足算法优化对系统性能分析的需求。
设备管理:MindStudio提供设备管理工具,实现对连接到主机上的设备的管理功能。
精度比对:可以用来比对自有模型算子的运算结果与Caffe、TensorFlow、ONNX标准算子的运 算结果,以便用来确认神经网络运算误差发生的原因。
开发工具包的安装与管理:为开发者提供基于昇腾 AI处理器的相关算法开发套件包 Ascend-canntoolkit,旨在帮助开发者进行快速、高效的人工智能算法开发。开发者可以将开发套件包安装到MindStudio上,使用MindStudio进行快速开发。Ascend-cann-toolkit包含了基于昇腾AI处理器开发依赖的头文件和库文件、编译工具链、调优工具等。
MindStudio安装:安装指南-5.0.RC1-MindStudio,昇腾社区 (hiascend.com)提供MindStudio环境搭建指导视频全流程讲解、实操演示助您轻松完成环境搭建。
- 场景介绍
●纯开发场景(分部署形态):在非昇腾AI设备上安装MindStudio和Ascend-cann-toolkit开发套件包。可作为开发环境仅能用于代码开发、编译等不依赖于昇腾设备的开发活动(例如ATC模型转换、算子和推理应用程序的纯代码开发)。如果想运行应用程序或进行模型训练等,需要通过MindStudio远程连接功能连接已部署好运行环境所需软件包的昇腾AI设备。
●开发运行场景(共部署形态):在昇腾AI设备上安装MindStudio、Ascend-cann-toolkit 开发套件包、npu-firmware安装包、npu-driver安装包和AI框架(进行模型训练时需要安装)。作为开发环境,开发人员可以进行普通的工程管理、代码编写、编译、模型转换等功能。同时可以作为运行环境,运行应用程序或进行模型训练。
- 软件包介绍
MindStudio:提供图形化开发界面,支持应用开发、调试和模型转换功能,同时还支持网络移植、优化和分析等功能。
Ascend-cann-toolkit:开发套件包。为开发者提供基于昇腾AI处理器的相关算法开发工具包,旨在帮助开发者进行快速、高效的模型、算子和应用的开发。开发套件包只能安装在Linux服务器上,开发者可以在安装开发套件包后,使用MindStudio开发工具进行快速开发。
二、MindX SDK介绍与安装
1、MindX SDK介绍
MindX SDK提供昇腾AI处理器加速的各类AI软件开发套件(SDK),提供极简易用的 API,加速AI应用的开发。
应用开发旨在使用华为提供的SDK和应用案例快速开发并部署人工智能应用,是基于现有模型、使用pyACL提供的Python语言API库开发深度神经网络应用,用于实现目标识别、图像分类等功能。
通过MindStudio实现SDK应用开发分为基础开发与深入开发,通常情况下用户关注基础开发即可,基础开发主要包含如何通过现有的插件构建业务流并实现业务数据对接,采用模块化的设计理念,将业务流程中的各个功能单元封装成独立的插件,通过插件的串接快速构建推理业务。
mxManufacture & mxVision关键特性:
●配置文件快速构建AI推理业务。
●插件化开发模式,将整个推理流程“插件化”,每个插件提供一种功能,通过组装不同的插件,灵活适配推理业务流程。
●提供丰富的插件库,用户可根据业务需求组合JPEG解码、抠图、缩放、模型推理、数据序列化等插件。
●基于Ascend Computing Language(ACL),提供常用功能的高级API,如模型推理、解码、预处理等,简化Ascend芯片应用开发。
●支持自定义插件开发,用户可快速地将自己的业务逻辑封装成插件,打造自己的应用插件。
2、MindX SDK 安装
步骤1 Windows场景下基于MindStudio的SDK应用开发,请先确保远端环境上 MindX SDK软件包已安装完成,安装方式参见MindX SDK 2.0.4 mxManufacture用户指南和MindX SDK 2.0.4 mxVision用户指南的“使用命令行方式开发”>“安装 MindX SDK 开发套件”章节。
步骤2 在Windows本地进入工程创建页面,工具栏点击 File > Settings > Appearance & Behavior > System Settings > MindX SDK 进入MindX SDK管理界面。界面中MindX SDK Location为软件包的默认安装路径,默认安装路径为 “C:\Users\用户名\Ascend\mindx_sdk”。 单击 Install SDK 进入 Installation settings 界面,如图2。
图2 Installation settings 界面
如图3所示,为MindX SDK的安装界面,各参数选择如下:
Remote Connection:远程连接的用户及IP。
Remote CANN location:远端环境上CANN开发套件包的路径,需配置到版本号一级。
Remote SDK location:远端环境上SDK的路径,请配置到版本号一级。IDE将同步该层级下的include、opensource、python、samples文件夹到本地Windows环境,层级选择错误将导致安装失败。
Local SDK location:同步远端环境上SDK文件夹到本地的路径。默认安装路径为“C:\Users\用户名\Ascend\mindx_sdk”。
图3 MindX SDK 的安装界面
步骤3 单击OK结束,返回SDK管理界面,可查看安装后的SDK的信息,可单击OK结束安装流程。
三、基于CTC算法的语音热词唤醒模型介绍
随着嵌入式设备、移动设备的快速发展,部署在嵌入式、移动设备的程序越来越多。语音处理应用已在机器人、汽车电子、ATM机等嵌入式、移动设备得到广泛应用。
程序、系统在移动设备上运行,必须具有较小的内存占用和较低的计算能力。
关键字检测KWS( Keyword Spotting ) 使用深度神经网络DNN训练音频,基于训练的模型对关键字唤醒、推理。
基于CTC算法的语音热词唤醒模型基于TensorFlow框架。
KWS模型每25ms计算40维log-mel特征,帧移位为10ms。每一帧左重复23帧,向右重复8帧,并将其输入DNN。
四、运行基于CTC算法的语音热词唤醒模型步骤
1、打开基于CTC算法的语音热词唤醒模型
●基于CTC算法的语音热词唤醒模型代码连接:
https://gitee.com/mingyuzz/keyword-spotting_2
●通过SecoClient连接VPN,以确保MindStudio能够连接远程服务器。
●双击MindStudio点击右上角Open按钮,选择事先准备好的KWS模型,点击Ok即可进入工程。如图4所示。
图4 导入KeywordCTC项目
●进入工程后显示如图5界面
图5 项目打开界面
●单击菜单栏 Ascend > Convert To Ascend Project,如图6所示。
图6 工程转换界面
●弹出如图7窗口。
图7 转换晟腾功能配置
对窗口参数介绍如下,用户请根据实际场景选择。
Project Type:可选择三种工程类型,分别为Ascend Operator、Ascend Training和Ascend App。确定了Project Type后,再选择项目类型对应的Framework,Framework可选择框架如表1所示。
Project Type | Framework |
Ascend Operator | MindSpore |
PyTorch | |
TensorFlow | |
ONNX | |
Ascend Training | MindSpore |
PyTorch | |
TensorFlow | |
Ascend App | Ascend ACL App |
Ascend Python ACL App | |
Ascend MindX SDK App |
表1 FrameWork可选框架
Project Desc:项目描述。
单击OK,工程目录以树状呈现。此时成功创建带有.project文件的昇腾工程如图8,请以实际创建结果为准。
图8 转换晟腾功能成功界面
2、 基于CTC算法的语音热词唤醒模型训练
●在项目Project区的KeywordCTC项目目录树找到kws_train_2.py文件,双击打开,如图9所示。
kws_train_2.py文件是基于CTC算法的语音热词唤醒模型的训练文件。
图9打开kws_train2.py界面
●Kws_train2中主要代码介绍:
图10 主要代码介绍1
图11 主要代码介绍2
●在工具栏选择Run>Edit Configurations...进入运行配置界面。配置Deployment,点击Run,将代码同步到远程服务器如图12。
图12 Deployment配置
●在工具栏选择Tools>Start SSH session…如图13。
图13 选择Strat SHH session
●选择终端连接的服务器
图14 选择服务器连接
●远程终端开启后,在MindStudio底部状态栏目的Remote Terminal图标由之前的灰色变为蓝色,并展示欢迎界面如图15。
图15 连接成功界面
●输入 cd MindStudio-WorkSpace/KeywordCTC进入同步到服务器的代码,输入ll命令展示内容如图16。
图16 服务器上的代码目录展示
●输入python kws_train_2.py 命令进行模型训练如图17、图18。
图17 开始训练
图18 训练过程
●kws_train_2.py文件开启模型训练结束如图19。
图19 训练结束
●训练结束后在在result_CTC_2下生成model_weights.h5文件如图20。
图20 生成model_weights.h5
3、 基于CTC算法的语音热词唤醒模型转换
●通过pip install 命令安装onnx和tf2onnx如图21、图22。
图21 安装onnx
图22 安装tf2onnx
●输入python keras2onnx.py命令将model_weights.h5模型转换成pb模型如图23。
图23 keras2onnx.py开始执行
●模型转换成功在tmp_model下可以看到saved_model.pb模型如图24。
图24 pb模型生成成功
●输入python -m tf2onnx.convert --saved-model tmp_model --output model1.onnx --opset 11命令将pb模型转换为onnx模型如图25、图26。
图25 pb模型开始转onnx模型
图26 pb模型转onnx模型过程
●模型转换成功输入ll命令查看,可以看到model.onnx模型如图27。
图27 生成model1.onnx
输入命令:
Exportinstall_path=/usr/local/Ascend/ascend toolkit/latestexportPATH=/usr/local/python3.7.5/bin:${install_path}/atc/ccec_compiler/bin:${install_path}/atc/bin:$PATHexportPYTHONPATH=${install_path}/atc/python/site-packages:$PYTHONPATHexportLD_LIBRARY_PATH=${install_path}/atc/lib64:${install_path}/acllib/lib64:$LD_LIBRARY_PATHexportASCEND_OPP_PATH=${install_path}/oppexportASCEND_AICPU_PATH=/usr/local/Ascend/ascend-toolkit/latest/
设置模型转换环境。
●借助ACT工具将onnx模型转换为om模型。
atc --framework=5 --model=model1.onnx --output=modelctc1 --input_format=ND --input_shape="input:1,958,13" --log=debug --soc_version=Ascend310输入这行命令,模型转换如图28。
图28 onnx模型开始转换om模型
图29 om模型转换成功生成modelctc1.om文件
4、基于CTC算法的语音热词唤醒模型评估
模型训练完成后,运行性能评估文件评估模型性能,判断模型是否正常以及达到训练精度。
kws_evaluate.py文件是基于CTC算法的语音热词唤醒模型的模型性能评估文件。
●kws_evaluate.py主要代码介绍如下图30、图31。
图30 kws_evaluate.py代码介绍1
图31 kws_evaluate.py代码介绍2
●输入python kws_evaluate.py命令进行模型性能评估如图32、图33。
图32 kws_evaluate.py开始运行
图33 kws_evaluate.py运行过程
●运行结束后在result_CTC_2下面生成performance.txt文件,输入more performance.txt命令查看结果如图34。
图34 performance.txt内容
●performanc.txt文件里给出性能评价数据,包括keywords、TP、FN、FP 等其中TP,TN,FP,FN的理解定义为:
第一个字母T/F代表预测的结果是否和实际情况相符,即如果真实情况为正样本(P),预测为正样本(P),则为T;如果真实情况为负样本(N),预测为负样本(N),则为T;如果真实情况为P,预测为N,则为F;如果真实情况为N预测为P,则为F。
第二个字母P/N代表预测结果的正负:如果预测为正样本,则为P;如果预测为负样本,则为N。
TP:true positive,被判定为正样本,事实上也是正样本;
TN:true negative,被判定为负样本,事实上也是负样本;
FP:false positive,被判定为正样本,但事实上是负样本;
FN:false negative,被判定为负样本,但事实上是正样本;
5、基于CTC算法的语音热词唤醒预测
●kws_predict.py主要代码介绍如下图35。
图35 kws_predict.py主要代码介绍
●kws_predict.py运用训练模型对指定的音频文件进行预测。
●输入python kws_predict.py命令运行kws_predict.py文件如图36、图37。
图36 kws_predict.py文件开始运行
图37 kws_predict.py文件运行过程
●基于CTC算法的语音热词唤醒预测结果,如图38、图39所示。图38是从音频文件预测“北京”热词的结果;图39是从含噪音的音频文件预测“北京”热词的结果。
图38 推理结果1
图39 推理结果2
五、推广
MindStudio提供图形化开发界面,支持应用开发、调试和模型转换功能,同时还支持网络移植、优化和分析等功能,功能强大。文档以图文说明用MindStudio IDE分析基于CTC算法的语音热词唤醒的训练、精度评估、推理的过程。
六、从昇腾社区获取更多帮助
开发者在使用 MindStudio 或进行算子开发过程中遇到任何问题,都可以来昇腾社区获得更多的帮助。
昇腾官网:昇腾社区-官网丨昇腾万里 让智能无所不及 (hiascend.com)
昇腾社区:昇腾众智计划-昇腾社区 (hiascend.com)
昇腾论坛:昇腾论坛 (hiascend.com)