ubuntu18.04+OpenCV4.2+Darknet2NCNN将yolov3模型转换为Android-NCNN模型

ubuntu18.04+OpenCV4.2+Darknet2NCNN将yolov3模型转换为ncnn模型

opencv版本3.x可能更好一些,3到4有些参数变化

一、下载darknet2ncnn

可以直接去官网下载,如果配置了gitee,也可以用命令

git clone https://github.com/xiangweizeng/darknet2ncnn.git

二、编译电脑端模型并测试

1.根据官网教程来,初始化,我未配置git所以跳过了:

cd darknet2ncnn
git submodule init
git submodule update

2.darknet2ncnn解压后,根目录下有darknet、ncnn两个文件夹,里面是空的,需要自己下载darknet和ncnn放进去

3.构建 darknet

cd darknet2
make -j8
rm libdarknet.so

4.构建 ncnn

# workspace darknet2ncnn
cd ncnn
mkdir build
cd build
cmake ..
make -j8
make install
cd ../../

5.构建 darknet2ncnn , convert_verify and libdarknet2ncnn.a

# workspace darknet2ncnn
make -j8

6.yolov3-tiny模型转换及验证

make yolov3-tiny.net 

转换结果,ncnn模型需要的网络和权重文件的格式:

./darknet2ncnn data/yolov3-tiny.cfg  data/yolov3-tiny.weights example/zoo/yolov3-tiny.param  example/zoo/yolov3-tiny.bin 

7.构建 example

#workspace darknet2ncnn
cd example
make -j4

注意,可能会报错:

A:因为CV_LOAD_IMAGE_COLOR在OpenCV4版本命名为:IMREAD_COLOR
修改方法:将错误参数替换为:cv::IMREAD_COLOR
ubuntu18.04+OpenCV4.2+Darknet2NCNN将yolov3模型转换为Android-NCNN模型_第1张图片
B:CV_FILLED,这个参数可以控制输出图片识别结果标识的边框,未找到应该替换成什么枚举值,所以我直接改成参数:1 了

ubuntu18.04+OpenCV4.2+Darknet2NCNN将yolov3模型转换为Android-NCNN模型_第2张图片8.运行yolov3-tiny

#workspace example
make yolov3-tiny.coco

9.最终结果如下:

ubuntu18.04+OpenCV4.2+Darknet2NCNN将yolov3模型转换为Android-NCNN模型_第3张图片
ubuntu18.04+OpenCV4.2+Darknet2NCNN将yolov3模型转换为Android-NCNN模型_第4张图片

ubuntu18.04+OpenCV4.2+Darknet2NCNN将yolov3模型转换为Android-NCNN模型_第5张图片
三、编译Android端NCNN库文件,前提条件:已经配置了Android的SDK

官网编译教程

1.进入NCNN执行:mkdir -p build-android-arm64-v8a

根据你自己调试用的手机去选择编译的版本:‘arm64-v8a’,‘armeabi-v7a’,‘x86’,‘x86_64’

2.进入你新建的目录:cd build-android-arm64-v8a

3.编译:
cmake -DCMAKE_TOOLCHAIN_FILE=/home/zhx/Android/Sdk/ndk/21.0.6113669/build/cmake/android.toolchain.cmake \ -DANDROID_ABI="arm64-v8a" \ -DANDROID_ARM_NEON=ON ..

ubuntu18.04+OpenCV4.2+Darknet2NCNN将yolov3模型转换为Android-NCNN模型_第6张图片4.编译:

make -j4

ubuntu18.04+OpenCV4.2+Darknet2NCNN将yolov3模型转换为Android-NCNN模型_第7张图片
make install

ubuntu18.04+OpenCV4.2+Darknet2NCNN将yolov3模型转换为Android-NCNN模型_第8张图片
在build-android-arm64-v8a文件夹下生成了install文件夹,它就是移植到Android端需要的库文件

你可能感兴趣的:(ubuntu)