张小白教你使用MindStudio 5.0.RC2的Windows版本进行FaceBoxes人脸识别

举报
张辉 发表于 2022/08/25 16:37:40 2022/08/25
【摘要】 MindStudio 体验官 升职记。

在MindStudio团队提供的镜像基础上,张小白基于AI1S云服务器完成了MindStudio的卡通风格迁移,https://bbs.huaweicloud.com/blogs/371113

张小白在200DK上也自行完成了MindStudio的MMNet人像分割,https://bbs.huaweicloud.com/blogs/371825

今天就拿 FaceBoxes人脸检测试一试吧!


一、背景

先考虑完成纯200DK后台的应用执行,因为MindStudio执行200DK Python代码的思路就是无需编译,远程执行代码。所以只要在200DK的命令行调通了代码,那么MindStudio Windows版本通过ssh通道执行应该也没啥问题。

注:以下操作是基于 https://bbs.huaweicloud.com/blogs/371825 搭建环境的基础上做的继续尝试,如果读者尚未搭建相关的环境,可按照这个链接提到的从零开始的安装过程进行相关环境的安装。

FaceBoxes人脸检测的代码仓链接:https://gitee.com/ascend/mindxsdk-referenceapps/tree/master/contrib/FaceBoxes

二、安装ffmpeg

看这个链接的软件依赖要求:

由于我们只使用推理,可以直接用现成的pb模型做ATC模型转换即可,所以并不需要安装PyTorch,但是可能需要安装ffmpeg。

所以我们来源码安装ffmpeg:

打开 https://gitee.com/ascend/samples/blob/master/cplusplus/environment/separate_environmental_guidance_CN.md

找到ffmpeg的安装方法:

cd ~

wget http://www.ffmpeg.org/releases/ffmpeg-4.1.3.tar.gz --no-check-certificate

cke_15027.png

解压

tar -zxvf ffmpeg-4.1.3.tar.gz

cke_15945.png

cd ffmpeg-4.1.3

./configure --enable-shared --enable-pic --enable-static --disable-x86asm --cross-prefix=aarch64-linux-gnu- --enable-cross-compile --arch=aarch64 --target-os=linux --prefix=${THIRDPART_PATH}

cke_16707.png

cke_17251.png

make -j8

cke_18335.png

make  install

cke_19590.png

在200DK上的ffmpeg安装完毕。

三、模型转换

获取人脸检测的FaceBoxes的pb模型:

cd ~/mindxsdk-referenceapps/contrib/FaceBoxes

mkdir models

cd models

wget https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/Faceboxes/model.zip --no-check-certificate

cke_27610.png

解压 unzip model.zip

cke_28093.png

ATC模型转换:

cke_30010.png

cke_30551.png

模型转换成功。

四、准备FaceBoxes人脸检测的SDK插件库

MindX SDK是以pipeline(流水线)的方式去执行推理的相关代码,有些步骤可以使用MindX SDK提供的标准插件,有些步骤需要自行开发相关的插件。

在本次人脸检测的应用中,后处理部分就自行开发了相关的插件 FaceBoxesPostProcess。


制作pipeline的SDK插件库的方法如下:

cd ~/mindxsdk-referenceapps/contrib/FaceBoxes/plugin/FaceBoxesPostProcess

bash build.sh

cke_35008.png

生成的so在build文件夹下:

cke_35532.png

需将其拷贝到 ${MX_SDK_HOME}/lib/modelpostprocessors/  目录下:

cke_38254.png

并将该so的权限改成跟其他so文件一样的440

cd /home/HwHiAiUser/mxVision/lib/modelpostprocessors/

chmod 440 libfaceboxespostprocess.so

cke_49375.png

五、配置和调试FaceBoxes人脸检测的相关代码

cd ~/mindxsdk-referenceapps/contrib/FaceBoxes/pipeline

vi Faceboxes.pipeline

Faceboxes.pipeline是MindX SDK的pipeline配置定义文件。这里面原来代码中很多配置写了相对路径,跟实际的路径是否一致还是需要检查一下的:


为了在不同路径运行都没问题,我们特意将这些路径都改为绝对路径,如:

modelPath改为 /home/HwHiAiUser/mindxsdk-referenceapps/contrib/FaceBoxes/models/faceboxes-b0_bs1.om

postProcessConfigPath改为 /home/HwHiAiUser/mindxsdk-referenceapps/contrib/FaceBoxes/models/faceboxes-b0_bs1.cfg

postProcessLibPath 改为 /home/HwHiAiUser/mxVision/lib/modelpostprocessors/libfaceboxespostprocess.so

cke_56075.png

由于原来 faceboxes-b0_bs1.cfg 在 config目录下,所以需要将其拷贝到models目录下(其实也可以将pipeline文件内容改为models目录)

cd ~/mindxsdk-referenceapps/contrib/FaceBoxes/config/

cp faceboxes-b0_bs1.cfg ../models/

cke_63088.png


六、在200DK命令行完成图片推理

准备一张带人脸的图片(看图片貌似杨紫琼),改名为test.jpg,放入 项目工程根目录下:

cke_65037.png

cke_65383.png

执行test.py进行 该照片的人脸推理:

python3 test.py

cke_70921.png

cke_71753.png

cke_72364.png

cke_73047.png

从日志上来看没报什么错。

在目录下生成了一个testresult.jpg文件:

cke_91081.png

下载下来看看:

cke_92200.png

可见,结果文件的人脸已经被框起来了。

七、使用MindStudio Windows版本配置和运行FaceBoxes人脸检测项目

既然后台运行没啥问题,那么我们就用MindStudio Windows版打开试试吧!

启动MindStudio :

cke_106812.png

点击Open:

cke_108205.png

打开FaceBoxes工程目录:

cke_110732.png

点击Trust。

进入项目工程主页面:

cke_113115.png

点击Ascend-》Convert to Ascend Project:

cke_115287.png

输入Ascend APP, Ascend MindX SDK App后,点击OK,将当前项目转换成一个MindX SDK的项目。

点击File-》Project Structure:

cke_120921.png

点击SDK下来菜单,点击Add Python SDK:

cke_123609.png

切换到  SSH Interpreter:

cke_126151.png

在检测出右边的Python解释器后,点击OK。

系统会刷新出SDK:

cke_132408.png


创建Windows本地models目录,并将200DK上对应下models目录下的文件都下载下来:

cke_1332.png

将项目工程根目录下的test.jpg文件也下载下来(当然也可以自己准备别的人脸文件)

cke_3146.png

点击Run-Edit Run Configuration:

选择可执行程序为 test.py

cke_4696.png

点击OK。

打开test.py,将 open pipeline的文件名改为 ./pipeline/Faceboxes.pipeline

cke_7142.png

保存文件后,

点击Run-》Run FaceBoxes运行:

cke_9660.png

耐心等待程序上传项目代码,并且远程执行,并将结果传回本地。。。

报了文件不存在的错:

cke_16359.png

原来尽管 在200DK后台修改了pipeline文件,但是在windows下,这个文件还是旧的。

当然可以按照前面 的方式一一修改:

modelPath改为 /home/HwHiAiUser/mindxsdk-referenceapps/contrib/FaceBoxes/models/faceboxes-b0_bs1.om

postProcessConfigPath改为 /home/HwHiAiUser/mindxsdk-referenceapps/contrib/FaceBoxes/models/faceboxes-b0_bs1.cfg

postProcessLibPath 改为 /home/HwHiAiUser/mxVision/lib/modelpostprocessors/libfaceboxespostprocess.so

cke_24365.png

保存之后,重新执行。

耐心等待执行结束:

cke_27547.png

结果图片也生成了:

cke_29314.png

我们重新上传一张张学友的图片,也命名为test.jpg(当然也必须是jpg格式)。然后删除testresult.jpg文件:

cke_1964.png

重新Run:

cke_2809.png

运行结束:

cke_7460.png

如图所示,张学友的脸也被框起来了。

至此就完成了FaceBoxes人脸检测样例的两种推理尝试。

(全文完,谢谢阅读)

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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