X3派上的bpu有5个T的算力,不用起来着实浪费,在地平线官方的《地平线机器人开发平台用户手册》上介绍了多种神经网络在X3派上部署的实例。看了下代码,发现它这里的代码都是在地平线的tROS框架上来实现的。对于有些人的需求来说可能不需要使用这个ROS框架,因此我在代码里将关于DNN的使用与tROS的框架分离开来,这样在使用的时候可以更加方便。
地平线官方提供的神经网络使用代码主要是在Boxs算法仓库里面,其中最重要的一个代码是dnn_node。这个代码地址可以在Sign in · GitLab
图1. DnnNode的使用说明
具体的使用方法见官方文档即可。
这里我对代码做了简单的整理并将其ROS的部分分离开来,重新建了一个工程,工程地址:https://github.com/softdream/sunrise\_X3\_BPU/tree/master/dnn\_node\_lib
该工程的使用方法如下:
git clone https://github.com/softdream/sunrise_X3_BPU/tree/master/dnn_node_libcd dnn_node_libmkdir build & cd buildcmake ..make
编译完成之后会在build目录下生成一个名为libdnn_node.so的动态库。这个动态库后续就可以直接使用了。
这里提供一个应用实例来介绍使用这个库的方法:使用x3派的bpu来实现人体检测。代码参考地平线官方的例程Sign in · GitLab
修改后的工程目录如图2所示:
图2. 修改后的工程目录
在include目录下存放用户自己的头文件以及上述的dnn_node_lib中的头文件,src中存放用户.cpp文件,lib中存放上述dnn_node_lib中编译生成的动态库文件。model中存放模型文件,test_data中存放测试图片文件。
该工程的使用方法:
git clone https://github.com/softdream/sunrise_X3_BPU/tree/master/dnn_body_detectcd dnn_body_detectmkdir build & cd buildcmake ..make
编译完成之后会在build目录下生成可执行文件body_detect,执行:sudo ./body_detect 即可看到效果如图3所示:
图3.人体检测结果
后续会更新其它应用的使用代码,包括手势识别,跌倒检测等功能的非ROS实现。