先附上源码地址mindxsdk-referenceapps: MindX SDK Reference Apps - Gitee.com,本文基于样例中的README.md进行操作
这个样例的主体功能是基于视频的检测加识别,总共分为三个部分:
- 利用人脸检测模型采集视频中的人脸图像
- 利用PFLD模型进行人脸关键点检测,获取眼部位置信息
- 通过计算度量疲劳/瞌睡的物理量识别驾驶人员的疲劳状态
首先是应用的实现流程,如下表所示:

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


根据README,需要我们补充一些环境变量。
打开MindStudio下方的remote terminal新建一个远程终端控制服务器,输入:
修改环境变量,按i进入编辑模式,在文件下方粘贴上面的变量,第一行和后两行可以不用加,前面已经有了这些变量了。

按esc后输入:wq保存并退出,注意保存并退出的命令前有一个冒号。输入:
应用环境变量。
从README中的链接下载模型文件,yolov4是转换好的om,需要转换关键点检测的模型,如果有安装了pytorch且有GPU的其他linux服务器可以尝试下从官方github下载pt模型从头转换:pt--onnx--om。这里就直接使用转换好的onnx关键点检测模型,转换方法README写的很清楚,照做即可,这里不再重复了。


完成转换后即可开始编译和执行
切到工程主目录,执行bash build.sh进行编译。这里编译的是样例为人脸关键点检测开发的后处理插件的cpp代码,编译完会生成一个so文件放到指定的路径下。
由于程序中的视频数据是rtsp视频流,我们需要在服务器上下载安装一个软件来把h264的视频转成rtsp流,参考docs/参考资料/Live555离线视频转RTSP说明文档.md · Ascend/mindxsdk-referenceapps - Gitee.com里的操作安装即可。将视频放到指定的目录下,获取到rtsp流的ip之后,就可以执行python程序了。
先跑一下单个视频的推理,按README中的说明修改pipeline的指定参数:
然后报错了:

经过Mindx官方的技术人员确认是插件的so文件权限有问题,使用cd切换到/usr/local/Ascend/mxVision/lib/plugins下,ls发现有之前那个编译时生成的插件so,这个libmxpi_pfldpostprocess.so的读写权限过高了,在当前目录输入:
将当前目录下的所有so文件的权限改成440,这样就可以执行了。
点击run或者在终端里输入:
得到了推理结果:

可以多换几个视频或者试一下性能测试。
先附上源码地址mindxsdk-referenceapps: MindX SDK Reference Apps - Gitee.com,本文基于样例中的README.md进行操作
这个样例的主体功能是基于视频的检测加识别,总共分为三个部分:
首先是应用的实现流程,如下表所示:
与之前的人脸情绪识别类似,该应用也是两个模型的串接,前一个检测模型的输出做为后一个检测模型的输入。
下载好源码之后,使用MindStudio打开工程。选择主菜单里的Ascend/convert to Ascend project将工程转为昇腾应用,选择Ascecnd APP即可。
转换完成后,按照与【MindStudio训练营第一季】如何使用MindStudio通过ssh远程登录华为云的服务器进行开发__昇腾论坛 (hiascend.com)中类似的方法为工程配置好deploy和ssh连接,在deploy的Mapping选项卡可以看到我们的工程的部署路径,同步之后整个工程的文件都会放在远端的此路径下,这个样例的运行需要我们进行一些linux系统下的操作。配置完成之后直接点击运行就会把文件同步上去,当然因为还没有做好全部的准备工作,现在是不会有运行结果的。先测试单个视频文件,Executable就选test_video.py,下面有程序的输入参数,必填的就是视频帧数,这里随便填个数。
根据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新建一个远程终端控制服务器,输入:
修改环境变量,按i进入编辑模式,在文件下方粘贴上面的变量,第一行和后两行可以不用加,前面已经有了这些变量了。
按esc后输入:wq保存并退出,注意保存并退出的命令前有一个冒号。输入:
应用环境变量。
从README中的链接下载模型文件,yolov4是转换好的om,需要转换关键点检测的模型,如果有安装了pytorch且有GPU的其他linux服务器可以尝试下从官方github下载pt模型从头转换:pt--onnx--om。这里就直接使用转换好的onnx关键点检测模型,转换方法README写的很清楚,照做即可,这里不再重复了。
完成转换后即可开始编译和执行
切到工程主目录,执行bash build.sh进行编译。这里编译的是样例为人脸关键点检测开发的后处理插件的cpp代码,编译完会生成一个so文件放到指定的路径下。
由于程序中的视频数据是rtsp视频流,我们需要在服务器上下载安装一个软件来把h264的视频转成rtsp流,参考docs/参考资料/Live555离线视频转RTSP说明文档.md · Ascend/mindxsdk-referenceapps - Gitee.com里的操作安装即可。将视频放到指定的目录下,获取到rtsp流的ip之后,就可以执行python程序了。
先跑一下单个视频的推理,按README中的说明修改pipeline的指定参数:
然后报错了:
经过Mindx官方的技术人员确认是插件的so文件权限有问题,使用cd切换到/usr/local/Ascend/mxVision/lib/plugins下,ls发现有之前那个编译时生成的插件so,这个libmxpi_pfldpostprocess.so的读写权限过高了,在当前目录输入:
将当前目录下的所有so文件的权限改成440,这样就可以执行了。
点击run或者在终端里输入:
得到了推理结果:
可以多换几个视频或者试一下性能测试。