由于我想在树莓派上跑,先在电脑(电脑是ubuntu18.04)上试试,选的系统是(Linux x86)
在外边新建个文件夹mkdir Linux86-TinyYOLOV4cd Linux86-TinyYOLOV4wget 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路径官方提供了训练好的样板.bin和.param,点击这里下载,也何以下载我上传的(内含yolov4的.bin+.param和yolov4-Tiny的.bin+.param) 解压后是这4个文件
首先自己得有模型啊,不会用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没有改掉啊,这怎么改,其实看这里