mac pytorch模型转onnx转ncnn部署

示例:nanodet 目标检测网络

https://zhuanlan.zhihu.com/p/306530300

https://github.com/RangiLyu/nanodet/tree/325571d27f25fc8f552bc2c639693b1f89620612

 

1、pytorch训练得到.pth网络

2、安装onnx : pip install onnx

3、pytorch 模型转onnx:

#安装nanodet
cd nanodet 
python setup.py develop

#.pth  ---->   .onnx
#修改  tools/export.py   里的模型路径
python tools/export.py

4、简化onnx模型

下载https://github.com/daquexian/onnx-simplifier   并安装   python setup.py develop

python -m onnxsim input_onnx_model output_onnx_model

5、下载、编译  ncnn源码

https://github.com/Tencent/ncnn

需要先提前安装好opencv、protobuf和cmake

#安装cmake

brew install cmake

#安装opencv

https://blog.csdn.net/xiao13mm/article/details/106165477

#或者直接安装,时间比较长

brew install opencv

#安装protobuf

brew install protobuf

建立编译路径

mkdir -p build

转移到编译路径

cd build

生成 Makefile

cmake -DCMAKE_CXX_STANDARD=11 -DNCNN_OPENMP=OFF -DNCNN_BENCHMARK=ON ..

编译

make -j 8

这样就开始编译,编译过程是不需要手工干预的。

安装 NCNN

make install

在 build-mac 目录下进行安装,将多出两个目录 include(NCNN提供的头文件所在)和 lib(libncnn.a)。

onnx转ncnn

./onnx2ncnn model.onnx model.param model.bin

模型加密:

./ncnn2mem age.param age.bin age.id.h age.men.h

测试:

把ncnn/examples下的squeezenet_v1.1.bin,squeezenet_v1.1.param复制到 ncnn/build/examples 下

./squeezenet /Users/duoduo/Desktop/123.jpeg

显示:

mac pytorch模型转onnx转ncnn部署_第1张图片

6、Run NanoDet model with C++

https://github.com/RangiLyu/nanodet/blob/main/demo_ncnn/README.md

参考链接:

https://github.com/RangiLyu/nanodet/blob/main/demo_ncnn/README.md

#Set environment variables. Run:

export ncnn_DIR=YOUR_NCNN_PATH/build/install/lib/cmake/ncnn

#编译

cd nanodet-main/demo_ncnn
mkdir build
cd build
cmake ..
make

#编译完build里面会生成nanodet_demo  unix可执行文件

#复制权重文件过来

cp nanodet_m_oldversion_new.bin nanodet-main/demo_ncnn/build/
cp nanodet_m_oldversion_new.param nanodet-main/demo_ncnn/build/

#修改nanodet-main/demo_ncnn/main.cpp代码de main()函数

NanoDet detector = NanoDet("./nanodet_m_oldversion_new.param", "./nanodet_m_oldversion_new.bin", true);

#测试图片

./nanodet_demo 1 /Users/duoduo/Desktop/234.jpeg

#测试视频

./nanodet_demo 2 VIDEO_PATH

 

7、NanoDet NCNN Android Demo

#下载Android Studio并安装

https://github.com/Tencent/ncnn/releases

#下载 ncnn-android-vulkan.zip 

ncnn-android-vulkan.zip download link

#解压ncnn-android-vulkan.zip

Unzip ncnn-android-vulkan.zip into demo_android_ncnn/app/src/main/cpp or change the ncnn_DIR path to yours in demo_android_ncnn/app/src/main/cpp/CMakeLists.txt

#复制权重文件

Copy the NanoDet ncnn model file (nanodet_m.param and nanodet_m.bin) from models folder into demo_android_ncnn/app/src/main/assets

#从Android Studio中打开demo_android_ncnn

Android Studio下载链接:https://developer.android.com/studio?hl=zh-cn

1)build     

2)根据要连接的安卓手机系统版本来选择下载sdk,以及相应的SDK_build_tools.

mac pytorch模型转onnx转ncnn部署_第2张图片

3)手机设置(华为)

进入开发者模式:设置/关于手机/连续点击‘版本号’

设置:设置/系统和更新/开发人员选项

打开‘USB调试’和‘仅充电模式下允许ADB调试’

USB连接电脑后,选择‘仅充电’

4)连上手机后,Android Studio中会有相应手机选择;点击‘run’;手机端会提示安装软件,打开软件,看到如下界面,即可使用.

mac pytorch模型转onnx转ncnn部署_第3张图片

mac pytorch模型转onnx转ncnn部署_第4张图片

遇到的错误:

1、git不能使用,报以下错误

no developer tools were found at ‘/Applications/Xcode.app’, requesting install. Choose an option in the dialog to download the command line developer tools.

然后,会点击安装xcode,这个xcode内容有很多,将近5个g,安装不上.实际上只需要装Command_Line_Tools_macOS_10.13_for_Xcode 就可以了,大小大概189MB, 去苹果的开发者官网就可以下载了,地址 https://developer.apple.com/download/more/   中间需要登录下,登录完成后在左边的搜索框中搜索Command Line Tools然后搜索;将适合你Mac电脑版本的那个下载下来安装好即可;

mac pytorch模型转onnx转ncnn部署_第5张图片

2、Run NanoDet model with C++  中的make出现错误:

nanodet.cpp:50:26: error: no member named 'get_gpu_count' in namespace 'ncnn'

 暂时改用CPU来跑:demo_ncnn/nanodet.cpp:51:45   

//this->hasGPU = ncnn::get_gpu_count() > 0;
opt.use_vulkan_compute = true

3、从Android Studio中打开demo_android_ncnn     build出错

goole网络问题,多试几次就可以下载了.可以去appearance/tools/tools/web_browsers里设置只选择Google浏览器.

NDK版本不对的话,去设置那里下载对应的版本

 

你可能感兴趣的:(移动端部署,mac,pytorch,ncnn,android,studio)