【MindStudio训练营第一季】新手班大作业:基于MindX SDK的疲劳驾驶识别样例运行
收藏回复举报
【MindStudio训练营第一季】新手班大作业:基于MindX SDK的疲劳驾驶识别样例运行
发表于2022-12-13 15:46:42
0 查看

先附上源码地址mindxsdk-referenceapps: MindX SDK Reference Apps - Gitee.com,本文基于样例中的README.md进行操作

这个样例的主体功能是基于视频的检测加识别,总共分为三个部分:

  1. 利用人脸检测模型采集视频中的人脸图像
  2. 利用PFLD模型进行人脸关键点检测,获取眼部位置信息
  3. 通过计算度量疲劳/瞌睡的物理量识别驾驶人员的疲劳状态

首先是应用的实现流程,如下表所示:

cke_187955.png

与之前的人脸情绪识别类似,该应用也是两个模型的串接,前一个检测模型的输出做为后一个检测模型的输入。

下载好源码之后,使用MindStudio打开工程。选择主菜单里的Ascend/convert to Ascend project将工程转为昇腾应用,选择Ascecnd APP即可。

转换完成后,按照与【MindStudio训练营第一季】如何使用MindStudio通过ssh远程登录华为云的服务器进行开发__昇腾论坛 (hiascend.com)中类似的方法为工程配置好deploy和ssh连接,在deploy的Mapping选项卡可以看到我们的工程的部署路径,同步之后整个工程的文件都会放在远端的此路径下,这个样例的运行需要我们进行一些linux系统下的操作。配置完成之后直接点击运行就会把文件同步上去,当然因为还没有做好全部的准备工作,现在是不会有运行结果的。先测试单个视频文件,Executable就选test_video.py,下面有程序的输入参数,必填的就是视频帧数,这里随便填个数。

cke_234105.png

cke_230322.png

根据README,需要我们补充一些环境变量。

export MX_SDK_HOME=${SDK安装路径}/mxVision
export LD_LIBRARY_PATH="${MX_SDK_HOME}/lib:${MX_SDK_HOME}/opensource/lib:${LD_LIBRARY_PATH}"
export PYTHONPATH="${MX_SDK_HOME}/python:${PYTHONPATH}"
export GST_PLUGIN_SCANNER="${MX_SDK_HOME}/opensource/libexec/gstreamer-1.0/gst-plugin-scanner"
export GST_PLUGIN_PATH="${MX_SDK_HOME}/opensource/lib/gstreamer-1.0:${MX_SDK_HOME}/lib/plugins"

打开MindStudio下方的remote terminal新建一个远程终端控制服务器,输入:

vim ~/.bashrc

修改环境变量,按i进入编辑模式,在文件下方粘贴上面的变量,第一行和后两行可以不用加,前面已经有了这些变量了。

cke_210527.png

按esc后输入:wq保存并退出,注意保存并退出的命令前有一个冒号。输入:

source ~/.bashrc

应用环境变量。

从README中的链接下载模型文件,yolov4是转换好的om,需要转换关键点检测的模型,如果有安装了pytorch且有GPU的其他linux服务器可以尝试下从官方github下载pt模型从头转换:pt--onnx--om。这里就直接使用转换好的onnx关键点检测模型,转换方法README写的很清楚,照做即可,这里不再重复了。

cke_340218.png

cke_531932.png

完成转换后即可开始编译和执行

切到工程主目录,执行bash build.sh进行编译。这里编译的是样例为人脸关键点检测开发的后处理插件的cpp代码,编译完会生成一个so文件放到指定的路径下。

由于程序中的视频数据是rtsp视频流,我们需要在服务器上下载安装一个软件来把h264的视频转成rtsp流,参考docs/参考资料/Live555离线视频转RTSP说明文档.md · Ascend/mindxsdk-referenceapps - Gitee.com里的操作安装即可。将视频放到指定的目录下,获取到rtsp流的ip之后,就可以执行python程序了。

先跑一下单个视频的推理,按README中的说明修改pipeline的指定参数:cke_507018.png

然后报错了:

cke_5545.png

经过Mindx官方的技术人员确认是插件的so文件权限有问题,使用cd切换到/usr/local/Ascend/mxVision/lib/plugins下,ls发现有之前那个编译时生成的插件so,这个libmxpi_pfldpostprocess.so的读写权限过高了,在当前目录输入:

chmod 440 ./*

将当前目录下的所有so文件的权限改成440,这样就可以执行了。

点击run或者在终端里输入:

python3 test_video.py --frame_num 100

得到了推理结果:

cke_615742.png

可以多换几个视频或者试一下性能测试。

本帖最后由 匿名用户2023/01/16 10:50:40 编辑

我要发帖子