张小白教你使用MindStudio 5.0.RC2的Windows版本进行FaceBoxes人脸识别
在MindStudio团队提供的镜像基础上,张小白基于AI1S云服务器完成了MindStudio的卡通风格迁移,https://bbs.huaweicloud.cn/blogs/371113
张小白在200DK上也自行完成了MindStudio的MMNet人像分割,https://bbs.huaweicloud.cn/blogs/371825
今天就拿 FaceBoxes人脸检测试一试吧!
一、背景
先考虑完成纯200DK后台的应用执行,因为MindStudio执行200DK Python代码的思路就是无需编译,远程执行代码。所以只要在200DK的命令行调通了代码,那么MindStudio Windows版本通过ssh通道执行应该也没啥问题。
注:以下操作是基于 https://bbs.huaweicloud.cn/blogs/371825 搭建环境的基础上做的继续尝试,如果读者尚未搭建相关的环境,可按照这个链接提到的从零开始的安装过程进行相关环境的安装。
FaceBoxes人脸检测的代码仓链接:https://gitee.com/ascend/mindxsdk-referenceapps/tree/master/contrib/FaceBoxes
二、安装ffmpeg
看这个链接的软件依赖要求:
由于我们只使用推理,可以直接用现成的pb模型做ATC模型转换即可,所以并不需要安装PyTorch,但是可能需要安装ffmpeg。
所以我们来源码安装ffmpeg:
找到ffmpeg的安装方法:
cd ~
wget http://www.ffmpeg.org/releases/ffmpeg-4.1.3.tar.gz --no-check-certificate
解压
tar -zxvf ffmpeg-4.1.3.tar.gz
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}
make -j8
make install
在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
解压 unzip model.zip
ATC模型转换:
模型转换成功。
四、准备FaceBoxes人脸检测的SDK插件库
MindX SDK是以pipeline(流水线)的方式去执行推理的相关代码,有些步骤可以使用MindX SDK提供的标准插件,有些步骤需要自行开发相关的插件。
在本次人脸检测的应用中,后处理部分就自行开发了相关的插件 FaceBoxesPostProcess。
制作pipeline的SDK插件库的方法如下:
cd ~/mindxsdk-referenceapps/contrib/FaceBoxes/plugin/FaceBoxesPostProcess
bash build.sh
生成的so在build文件夹下:
需将其拷贝到 ${MX_SDK_HOME}/lib/modelpostprocessors/ 目录下:
并将该so的权限改成跟其他so文件一样的440
cd /home/HwHiAiUser/mxVision/lib/modelpostprocessors/
chmod 440 libfaceboxespostprocess.so
五、配置和调试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
由于原来 faceboxes-b0_bs1.cfg 在 config目录下,所以需要将其拷贝到models目录下(其实也可以将pipeline文件内容改为models目录)
cd ~/mindxsdk-referenceapps/contrib/FaceBoxes/config/
cp faceboxes-b0_bs1.cfg ../models/
六、在200DK命令行完成图片推理
准备一张带人脸的图片(看图片貌似杨紫琼),改名为test.jpg,放入 项目工程根目录下:
执行test.py进行 该照片的人脸推理:
python3 test.py
从日志上来看没报什么错。
在目录下生成了一个testresult.jpg文件:
下载下来看看:
可见,结果文件的人脸已经被框起来了。
七、使用MindStudio Windows版本配置和运行FaceBoxes人脸检测项目
既然后台运行没啥问题,那么我们就用MindStudio Windows版打开试试吧!
启动MindStudio :
点击Open:
打开FaceBoxes工程目录:
点击Trust。
进入项目工程主页面:
点击Ascend-》Convert to Ascend Project:
输入Ascend APP, Ascend MindX SDK App后,点击OK,将当前项目转换成一个MindX SDK的项目。
点击File-》Project Structure:
点击SDK下来菜单,点击Add Python SDK:
切换到 SSH Interpreter:
在检测出右边的Python解释器后,点击OK。
系统会刷新出SDK:
创建Windows本地models目录,并将200DK上对应下models目录下的文件都下载下来:
将项目工程根目录下的test.jpg文件也下载下来(当然也可以自己准备别的人脸文件)
点击Run-Edit Run Configuration:
选择可执行程序为 test.py
点击OK。
打开test.py,将 open pipeline的文件名改为 ./pipeline/Faceboxes.pipeline
保存文件后,
点击Run-》Run FaceBoxes运行:
耐心等待程序上传项目代码,并且远程执行,并将结果传回本地。。。
报了文件不存在的错:
原来尽管 在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
保存之后,重新执行。
耐心等待执行结束:
结果图片也生成了:
我们重新上传一张张学友的图片,也命名为test.jpg(当然也必须是jpg格式)。然后删除testresult.jpg文件:
重新Run:
运行结束:
如图所示,张学友的脸也被框起来了。
至此就完成了FaceBoxes人脸检测样例的两种推理尝试。
(全文完,谢谢阅读)
- 点赞
- 收藏
- 关注作者
评论(0)