在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:
找到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文件:
下载下来看看:
可见,结果文件的人脸已经被框起来了。