Tinkerboard2/Yolo-Fastest(ncnn)

From wiki
Jump to: navigation, search


Yolo-Fastest

前期准备清单


本教程使用华硕的TinkerBoard 2s,该处理器是基于Arm RK3399的单板计算机(SBC),使用Arm big.LITTLE™技术的64位处理器,以较低的功耗提供增强的计算性能。
具有新64位Armv8架构的6核Rockchip RK3399片上系统(SoC)以及多核Mali-T860提供支持。在此基础上部署Yolo-fastest(ncnn),可以实现全实时30fps+的实时检测。

安装环境

 #启动终端,输入下面命令安装
 sudo apt-get install make cmake git 
 sudo apt-get install aptitude 
 sudo aptitude install libopencv-dev 

note:使用aptitude进行安装opencv库,如果使用apt-get进行安装opencv可能会出现缺少其他依赖库的问题。

6.png

获取Yolo-Fastest源码

 git clone https://github.com/dog-qiuqiu/Yolo-Fastest.git

配置ncnn环境

 cd Yolo-Fastest/sample/ncnn
 git clone https://github.com/Tencent/ncnn.git
 cd ncnn
 mkdir build
 cd build
 cmake ..
 make
 make install
 cp -rf install/* ../../

测试ncnn

 cd ../../
 ls /dev/video* #在未接摄像头情况下
 ls /dev/video* #在接入摄像头情况下,检查是否加载摄像头设备以及摄像头驱动文件是否是0
 #如果摄像头设备文件不是0,将demo.cpp文件中的cv::VideoCapture cap(0);的0修改成摄像头对应的编号
 sh build.sh #编译
 ./demo #运行,检查摄像头是否能启动。

模型转换

这里我们使用的是yolo-fastest-1.1模型

 mkdir yolo-fastest-1.1-model && cd yolo-fastest-1.1-model
 ../ncnn/build/tools/darknet/darknet2ncnn ../../../ModelZoo/yolo-fastest-1.1_coco/yolo-fastest-1.1.cfg ../../../ModelZoo/yolo-fastest-1.1_coco/yolo-fastest-1.1.weights yolo-fastest-1.1.param yolo-fastest-1.1.bin

源码修改

 vim demo.cpp
 #将下面语句
 api.init("model/yolo-fastest-1.1.param", 
             "model/yolo-fastest-1_last.bin");
 #改为
 api.init("yolo-fastest-1.1-model/yolo-fastest-1.1.param", 
             "yolo-fastest-1.1-model/yolo-fastest-1.1.bin");#这里是上一步转换后的模型
 #保存退出
 cd src/include/
 vim YoloDet.h #将NUMRTHREADS 8改为NUMRTHREADS 6,因为使用的tinkerBoard 2s是6核的。
 #保存退出
 rm demo
 sh build.sh #编译
 ./demo #运行

运行效果图如下

Yolo1-faster.png

开启bf16s

打开sample/ncnn/src/YoloDet.cpp文件,在YoloDet::init函数内添加
net.opt.use_packing_layout = true;
DNet.opt.use_bf16_storage = true;语句。最后再设置一下处理器达到最佳性能。

RK3399达到最好的性能的方法:http://blog.sina.com.cn/s/blog_15d5280590102yarw.html

 rm demo
 sh build.sh #编译
 ./demo #运行

运行效果图如下

Yolo1-faster2.png