赞
踩
darknet2ncnn
…………emmmmmmmmmmmmmmmmmkdir ncnn-TinyYoloV4
cd ncnn-TinyYoloV4
git clone https://github.com/Tencent/ncnn.git
git submodule init
git submodule update
由于我想在树莓派上跑,先在电脑(电脑是ubuntu18.04)上试试,选的系统是(Linux x86)
mkdir Linux86-TinyYOLOV4
cd Linux86-TinyYOLOV4
wget https://sdk.lunarg.com/sdk/download/1.1.114.0/linux/vulkansdk-linux-x86_64-1.1.114.0.tar.gz?Human=true -O vulkansdk-linux-x86_64-1.1.114.0.tar.gz
下载 (速度太慢就翻墙吧)翻墙还慢就下这个吧tar -xf vulkansdk-linux-x86_64-1.1.114.0.tar.gz
下载好了就解压cd <解压后的文件夹>
export VULKAN_SDK=pwd/1.1.114.0/x86_64
这里就是给系统添加个环境变量VULKAN_SDK=解压后文件夹中的x86_64路径cd ncnn-TinyYoloV4
进入之前创建的ncnn-TinyYoloV4文件夹中cd nccv
进入clone的文件夹中mkdir -p build
创建build文件夹cd build
cmake ..
cmake出来的东西在build文件夹中make -j4
.cpp
文件才有了图1中的各种可直接运行的模型squeexenet
权重和参数文件,其中
.bin
文件是权重相当于yolo的.weights
.param
是网络的参数文件,相当于yolo中的.cfg
文件官方提供了训练好的样板.bin
和.param
,点击这里下载,也何以下载我上传的(内含yolov4的.bin
+.param
和yolov4-Tiny的.bin
+.param
)
解压后是这4个文件
yolov4-tiny-opt.param
和yolov4-tiny-opt.bin
复制到图1文件夹中,进入图1文件夹中(也就是ncnn-TinyYoloV4->ncnn->build->examples)test.jpg
./yolov4 test.jpg
即可得到运行结果,如下所示yolov4-opt.param
和yolov4-opt.bin
复制到图1文件夹中yolov4-tiny-opt.param
和yolov4-tiny-opt.bin
(为啥下面会说)./yolov4 test.jpg
即可得到运行结果,如下所示首先自己得有模型啊,不会用darknet train模型的看这篇博客
自己有模型之后,也就是有了自己的.weights
和.cfg
文件之后,OK记得要把.cfg
文件的batch=1
,subdivisions=1
设置好
进入图二的文件夹中的tools文件夹,如下
进入darknet文件夹:目前位置是(ncnn-TinyYoloV4->ncnn->tools->darknet)
在里面你会看到这个文件darknet2ncnn.cpp
这个文件就是可以将darknet的.weights
和.cfg
文件转换为.bin
和.param
的函数,此函数没有任何依赖,且支持yolov4和yolov4-tiny
假设已有的两个文件是yolov4-tiny.cfg
yolov4-tiny.weights
,要转换为yolov4-tiny.param
,yolov4-tiny.bin
这两个文件
样例命令:
./darknet2ncnn yolov4-tiny.cfg yolov4-tiny.weights yolov4-tiny.param yolov4-tiny.bin 1
darknet2ncnn各个参数的意义
Usage: darknet2ncnn [darknetcfg] [darknetweights] [ncnnparam] [ncnnbin] [merge_output]
[darknetcfg] .cfg file of input darknet model.
[darknetweights] .weights file of input darknet model.
[cnnparam] .param file of output ncnn model.
[ncnnbin] .bin file of output ncnn model.
[merge_output] merge all output yolo layers into one, enabled by default.
如果成功了会输出这个:
Loading cfg…
WARNING: The ignore_thresh=0.700000 of yolo0 is too high. An alternative value 0.25 is written instead.
WARNING: The ignore_thresh=0.700000 of yolo1 is too high. An alternative value 0.25 is written instead.
Loading weights…
Converting model…
83 layers, 91 blobs generated.
NOTE: The input of darknet uses: mean_vals=0 and norm_vals=1/255.f.
NOTE: Remeber to use ncnnoptimize for better performance.
yolov4-tiny.param
yolov4-tiny.bin
文件移动到上一层目录,也就是cp yolov4-tiny.param ..
cp yolov4-tiny.bin ..
cd ..
./ncnnoptimize yolov4-tiny.param yolov4-tiny.bin yolov4-tiny-opt.param yolov4-tiny-opt.bin 0
yolov4-tiny-opt.param
和yolov4-tiny-opt.bin
两个文件即为ncnn可以使用的权重和参数,yolov4-tiny-opt.param
和yolov4-tiny-opt.bin
移动到(ncnn-TinyYoloV4->ncnn->build->examples)下,运行./yolov4 test.jpg就实现用自己的模型检测目标了有几个小伙伴问我自己的label没有改掉啊,这怎么改,其实看这里
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。