云社区 博客 博客详情

ModelArts与Atlas 的邂逅,AI从云到端让你一步到位

小百货 发表于 2020-05-03 12:37:36 2020-05-03
0
3

【摘要】 看到了HilLens的端云协同开发功能,你是否也想使用你的Atlas 200 DK牛刀小试一翻?这里向你分享使用华为云ModelArts进行模型训练,使用Atlas 200 DK进行模型部署,基于sample-facedetection-python项目案例跑通从云到端的AI业务全流程开发案例,让你也能和我一样掌握端到端的流程开发,共同Dream Big,Fly High!!!

1、前奏:

使用ModelArts进行模型训练与使用Atlas 200DK进行过社区案例的实践。

2、使用ModelArs实现模型训练

        参考华为云ModelArts平台中使用预置算法实现物体检测(Ascend310)案例实现yolov3_resnet18的训练,本次训练使用的数据集相比案列中的数据集做了简化,即本次训练只对是否带口罩进行检测,对应的数据集使用的是口罩检测模型开发指导文档中的数据集,而不是使用预置算法实现物体检测(Ascend310)中使用的数据集,目的是让大家学会迁移得到自己的检测案例。关于模型的具体训练过程,读者朋友可以参考五讲四美好少年的ModelArts+200DK 从modelarts到线下部署,开发口罩识别AI应用

需要注意的地方:

(1)、训练模型时数据集需要重新生成并发布,目前暂不支持使用之前已生成的数据集,本模型的训练不需要设置训练比例。

(2)、模型转换时需要注意路径问题,仔细参考上述链接中模型转换的每一句话

(3)、注意“元模型来源”:选择“从模板中选择”;模型模板选择“ARM-Ascend模板”, 模型目录选择模型转换时转换好的om模型;“输入输出模式”:需选择预置物体检测模式。

(4)、部署时需要注意计算节点的规格选择的是“ARMCPU:3 核 6 GiB Ascend: 1 * Ascend 310”资源规格。

图1 模型部署测试时注意事项示意


图2 模型部署时注意事项示意

3、将模型部署到Atlas 200 DK中

在ModelArts完成对预置算法的训练及模型转换后会在桶里的输出目录中得到下图中比较重要的文件夹:其中frozen_graph文件夹与om文件夹是我们所关注的。

图3 训练生成的生成的模型文件目录示意

 图 4 rozen_graph 目录的内容示意



 图5 转换生成的om目录的内容示意

        我们需要关注的点有使用ModelArts训练结束后frozen_graph目录中的aipp.cfg文件,因为由这个文件,我们可以得知模型转换结果目录om->model路径下的convert-szu-mask.om模型的数据输入格式。aipp详细的解说官网aipp的配置说明。模型的推理输入数据要求为RGB格式,模型宽度为640,高度为352。

得到训练的模型后,接下来便可以进行模型的替换,实现推理,对于模型的替换,由以下两种方式可以实现:

方案一:使用python的方式,上手快,并且可以参考ModelArts 训练结果中om->model目录下的customize_service.py推理文件。

方案二:使用c++的方式,在性能方面会比较好,上手不那么快。

        本文使用方案一进行验证,正所谓人生苦读,我用python嘛。对于该案例,在将ModelArts训练得到的模型部署到Atlas 200DK前需要确保Atlas 200DK已经能够跑通人脸检测(python)应用sample-facedetection-python,因为我们将基于该案例进行模型的替换,从而快速完成基于yolov3_resnet18目标检测从云到端的搭建。

        需要注意事项: sample-facedetection-python使用的是python3的环境,opencv使用的是4.1.01版本,需要在Atlas 200 DK上进行源码编译安装,能跑通人脸检测(python)应用sample-facedetection-python,说明环境已经搭建好了。

模型替换流程:

1)将sample-facedetection-python目录下的模型文件替换为所要替换的模型,如face_detection_rgb.om替换为convert-szu-mask.om模型

2)在atlasutil目录下的ai目录中增加针对该模型的处理函数utils.py,utils.py可以从ModelArts-Lab中获取,并在ai目录中的__init__.py文件中加入对utils的引用,如下图所示。

图6 utils.py添加示意


 图7 在__init__.py中加入对utils引用的示意

3)对于yolov3_resnet18模型,需要在使用时根据实际训练类别标签来修改untils.py中class_names的值,并需要根据实际情况对输出信息的类别解析进行修改。

图8 classs_names修改示意

4)对utils.py文件中的Acus_yolov3_post_process函数进行修改,因为原来的函数是针对face,mask,person三个类进行处理,而咱们将修改为对no_mask和yes_mask两个类作处理:

 图9 对输出类别信息进行修改示意

5)在main.py中进行模型与函数调用,注意方框部分的代码,同时需要注意,模型输入RGB格式的图像,模型的宽高也需要根据实际情况设定,这里w=640,h=352。

图10 在main.py中实现对模型与后处理函数的调用示意

6)完成上述修改后,将该工程在PC侧通过指令拷贝到Atlas 200中(具体操作可参考部署步骤)以Mind Studio安装用户进入代码所在根目录,执行以下命令将应用代码拷贝到开发板。

scp -r sample-facedetection-python/ HwHiAiUser@192.168.0.123:/home/HwHiAiUser/HIAI_PROJECTS  (根据自己的实际情况处理)

提示password时输入开发板密码,开发板默认密码为Mind@123

执行如下命令在后台启动人脸检测python应用的Presenter Server主程序。

bash run_presenter_server.sh &

在HwHiAiUser用户下进入应用代码所在目录并执行应用程序

python3 main.py

7)至此,完成ModelArts模型到Atlas 200的部署

后续处理:

停止Presenter Server 服务

ps -ef | grep presenter | grep face_detection

kill -9 ID   (ID为实际的ID号)

图11  实现效果图示意 

8)附件为经修改后的代码案例,由于模型太大没将其上传,想牛刀小试的读者朋友可以自行在model训练模型放到mode目录下。

sample-facedetection-python.zip 757.60KB ,下载次数:9

登录后可下载附件,请登录或者注册

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

评论 (0)


登录后可评论,请 登录注册

评论