文章目录
前言
ncnn学习过程记录
一、 ncnn_demo工程的编译(PC x86 demo)
- 环境变量更改
- 修改脚本
scripts/build-linux-x86.sh
,在[ncnn_dir]中填入自己的ncnn源码路径
- 修改脚本
export ncnn_DIR=[ncnn_dir]/build/install/lib/cmake/ncnn
- 编译
# 当前路径:ncnn_demo/
$ mkdir build
$ cd build
$ ../scripts/build-linux-x86.sh
$ make -j$(nproc)
- 运行可执行文件
# 当前路径:ncnn_demo/build/
$ cp nanodet_demo ..
$ cd ..
$ ./nanodet_demo
二、简单的测试代码修改
- 修改模型
// 修改 main.cpp 中调用的 SetModelPath 函数的参数,
// 即可修改使用的模型。
detector.SetModelPath(
"data/old_assset/model_6.28/s-320-0628/picodet-s-320.bin",
"data/old_assset/model_6.28/s-320-0628/picodet-s-320.param",
0 // 0-320,1-640,2-416
);
- 修改测试视频
// 修改 main.cpp 中的 left_video_path 和 right_video_path 路径,
// 可以更改测试使用的视频文件
std::string left_video_path = "./data/test_video/video_left.mp4";
std::string right_video_path = "./data/test_video/video_right.mp4";
- 修改测试类型(单路/左右两路上下拼接)
// 在 main.cpp 的 main 函数里,用大括号括住了两段测试代码,
// 需要进行哪种测试就使用哪部分代码,并注释掉另一部分代码。
// 检测 (Ln 168)
// 检测1:单路检测,仅显示目标图
{
// 检测代码1
}
// 检测2:两路上下拼接,输出报警结果图的检测
{
// 检测代码2
}
- 选择是否输出测试结果视频
// bsd.cpp
#define GENERATE_VIDEO 0 // 为0代表不保存视频,为1代表保存视频,默认路径为 result.avi
三、ONNX转NCNN
- 在ncnn的build/tools/onnx文件夹下有onnx2ncnn
执行
./onnx2ncnn xxxx.onnx xxxx.param xxxx.bin
- 第一个参数是onnx模型文件
- 第二个参数是要生成的 .param 文件
- 第三个参数是要生成的 .bin 文件
四、将文件PUSH到平台
1.安装adb:
- 更新一遍软件源:
sudo apt-get update
- 安装adb工具:
sudo apt-get install android-tools-adb
- 检查安装是否成功:
adb version
2.文件结构
- 自己电脑
-ncnn_demo
-build
-build_aarch64
-data
-s-416
-imgs
...
- 平台
-data
-ncnn_demo
-data
-imgs
...
3.传文件到平台
!!!先用数据线连接平台和电脑
- 查看连接,获取权限
adb devices
adb root
adb remount
3.1将模型s-416放在平台data/ncnn_demo/data/下
- 在电脑ncnn_demo/data/下运行终端
adb push s-416 data/ncnn_demo/data
3.2将数据imgs放在平台data/ncnn_demo/data/下
- 在电脑ncnn_demo/data/下运行终端
adb push imgs data/ncnn_demo/data
3.3将可执行文件ncnn_demo放在平台data/ncnn_demo/下
- 在电脑ncnn_demo/下运行终端
cd..
adb push ncnn_demo data/ncnn_demo
五、运行demo
1.登陆设备
adb devices
adb shell
Tips:退出登陆:exit
2.执行demo
cd data/ncnn_demo
./ncnn_demo
3. 查看结果
- 可以将结果传回查看
adb pull result.avi ./