raspberry 3B 编译 NCNN

1.安装依赖,其中 cmake要求3.10以上

sudo apt-get install git
 sudo apt-get install cmake
 sudo apt-get install -y gfortran
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev libatlas-base-dev

2.下载ncnn源码

     git clone https://github.com/Tencent/ncnn

3.修改CmakeList.txt文件。去掉下面两段代码前面的#,便于后续的测试

add_subdirectory(examples)
add_subdirectory(benchmark)

https://github.com/Tencent/ncnn/wiki/how-to-build

4.编译

$ cd <ncnn-root-dir>
$ sudo mkdir -p build
$ cd build
$ cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/pi3.toolchain.cmake -DPI3=ON ..
$ make -j4 # 生成./src/libncnn.a
$ sudo make install # 安装在在当前的./install目录下

5.模型转换

 5.1下载训练好的yolo模型:
https://github.com/eric612/MobileNet-YOLO/tree/master/models/yolov2

比如下载:

mobilenet_yolo_deploy_iter_80000.caffemodel

mobilenet_yolo_deploy.prototxt


 5.2使用前面编译好的工具转换成ncnn框架可以使用的文件:

caffe2ncnn mobilenet_yolo_deploy.prototxt mobilenet_yolo_deploy_iter_80000.caffemodel mobilenet_yolo.param  mobilenet_yolo.bin

6.执行

转换完成后,拷贝mobilenet_yolo.param mobilenet_yolo.bin到编译好的build/examples文件夹下面,再传一张测试图片进来,执行

./yolov2 zoo.jpeg

7.开启openmp

发现按照wiki里的方法在树莓派上编译并不能支持openmp,虽然我在前面安装过openmp相关的库。

开启的方法就是在src/CMakelist.txt大概41行。把41行注释掉,改为下面的样子:

后面跑benchmark的时候,可以开启top并按H切换到线程视图下,看是否支持了多线程加速。

上面的修改方法用benchmark和example测试都开启了openmp,说明这个方法的可靠性。

8.速度测试

用ncnn自带的benchamark测试,发现多线程没啥用。后来找到办法开启了OpenMP,重新编译,多线程就可以用了。

单线程情况下关闭NEON优化后的测试时间变为之前的5倍左右。

开启NEON和OpenMP情况下,使用benchmark程序在树莓派3B+上测试。分别测试1~8线程的性能,表格如下:
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值