yolov5 6.0导出onnx转ncnn
1.导出onnx
自己在train.py
得到训练好的best.pt
,在Yolov5里面运行自带的export.py
python export.py --train --simply --weights weights/best.pt
获得best.onnx
2.安装ncnn
下载地址
https://github.com/Tencent/ncnn/archive/refs/heads/master.zip
可以在linux虚拟机里解压
cd ncnn-master
mkdir build
cd build
cmake ..
make
make install
安装cmake、openCV和protobuf才能onnx转ncnn否则
-- Could NOT find Protobuf (missing: Protobuf_INCLUDE_DIR)
CMake Warning at tools/onnx/CMakeLists.txt:17 (message):
Protobuf not found, onnx model convert tool won't be built
sudo apt-get install cmake
sudo apt-get install libprotobuf-dev protobuf-compiler
1)在官网上下载并解压OpenCV,网址为https://opencv.org/releases.html
下载所需版本,此处,我下的版本为opencv-4.5.4.zip,然后执行如下命令进行解压:
unzip opencv-4.5.4.zip
cd opencv-4.5.4
# rm -rf build
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j4
sudo make install
# 此时安装完毕,加载环境变量,
# 设置动态链接用到的路径,可以执行:
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
make成功了后ncnn-master/build/tools/onnx/
里会有onnx2ncnn.exe
没有就没有安装成功 可能还有什么依赖需要安装
2)ncnn转换
cd /home/test/ncnn-master/build/tools/onnx/
./onnx2ncnn best.onnx best.param best.bin
bext.onnx
是你export.py
里面导出来的*.onnx
,best.param,best.bin
是生成的对象名字*.param
和*.bin
用于后面的android里面
txt打开best.param
,修改reshape对应的,把0=4096 0=1024 0=256 换成0=-1
参考https://blog.csdn.net/xian0710830114/article/details/121141409
2、安卓端部署
安装android studio
下载路径:
https://developer.android.google.cn/studio
安装可以参考:
https://blog.csdn.net/tao_789456/article/details/118093106
1)build时遇到
Could not find com.android.tools.build:gradle:5.4.1.
Searched in the following locations:
- https://jcenter.bintray.com/com/android/tools/build/gradle/5.4.1/gradle-5.4.1.pom
- https://jcenter.bintray.com/com/android/tools/build/gradle/5.4.1/gradle-5.4.1.jar
- https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/5.4.1/gradle-5.4.1.pom
- https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/5.4.1/gradle-5.4.1.jar
Required by:
project :
Add google Maven repository and sync project
Open File
总得来的说就是gradle版本错误,gradle是有两个版本的,一个是插件版本,一个固件版本如下图
如果是版本过低,就更新版本,下面两个链接提供更新方法。下载最新版本放在本地的对应位置然后更新&#x