YOLOv5利用ncnn部署系列(一)

一、YOLOv5的训练

yolov5的原理什么的就不说了,百度搜一搜很多,这里具体说一下怎么训练自己的数据集,官方的yolov5是在coco数据集上训练的,本文是在voc数据集上进行训练,对于自己的训练数据可以仿照voc数据集进行制作!

YOLOv5的git项目:参考github项目YOLOv5,若需要官方的预训练权重,该项目的大佬也给出了,感谢大佬做出的工作!将项目git到本地!

1.创建数据集文件夹

数据存放的目录如下:在这里插入图片描述在datasets文件夹下建立如下文件目录,其中训练需要用到的是score/images和score/labels两个,image下分为了train和val两个文件夹,其中分别放的是训练图片和测试图片,如下所示:在这里插入图片描述
labels文件夹下放的对应的labels文件,labels文件格式如下:在这里插入图片描述
在这里插入图片描述每一个txt文件都是一张图片的label和location信息,这里面的数据是从xml文件中提取出的,第一个表示类别,后面时归一化后的坐标值,至此数据就准备结束!

2.修改数据集配置文件

在data文件下存放着数据集对应的配置文件yaml文件,主要指明了数据集的路径信息,如下:在这里插入图片描述需要根据自己的数据集修改相应的信息!

3.选择模型,修改相应的配置文件

yolov5官方一共提供了yolov5s.yaml、yolov5m.yaml、yolov5l.yaml、yolov5x.yaml四个不同大小的模型,他们的精度与速度也各有不同,官方有给出具体的数据,如下所示:在这里插入图片描述大家可以根据自己的需求选择相应的模型,我这里选择的时最小的yolov5s模型,因为速度最快!!!选择什么模型,就需要修改models文件夹下对应的yaml文件,这里我们需要修改yolov5s.yaml文件:在这里插入图片描述需要修改的地方就一个,就是自己的类别数量nc,voc数据集是20类,因此将nc改为20!

4.开始训练

在train.py文件里修改相应的训练参数:batch、epoch、cfg、data等参数,可参考我的设置如下在这里插入图片描述如若需要加载预训练权重或者断点续训,可将train.py中下面两行代码进行修改,从头开始训练就将下面第一行代码打开,第二行注释,反之就是加载预训练权重或断点续训:

# parser.add_argument('--resume', action='store_true', help='resume training from yolov5s_last.pt')#从头开始训练
    parser.add_argument('--resume', default='weights/yolov5s_last.pt', help='resume training from yolov5s_last.pt')#加载预训练权重或断点续训

二、YOLOv5模型的测试

1.测试MAP

测试map的代码时test.py,根据需要修改weights、batch、data等参数,可参考如下:在这里插入图片描述可能会报错cuda内存不够,此时将batch改小就行,根据需要修改conf-thres阈值(分类得分阈值)和iou-thres(iou阈值)。
本文一共训练了500个epoch,测试map结果如下:在这里插入图片描述最终的MAP值为51.5,比官方差点(毕竟是官方)!!!

2.测试图片或者视频

这部分的代码在detect.py里,也是自行按需修改,可参考本文的设置:在这里插入图片描述里面我做了一些小的调整,主要是要修改测试图片和视频的路径,大家根据自己实际情况来,如有疑问,评论区可留言!!!测试图片和视频都是这个代码,很方便!!!!

下面就是摆效果图的时刻了!!!!
在这里插入图片描述不得不说,yolov5是真的很强,速度还贼快!!!!
视频测试的效果就不放了,太大了,大家自己去尝试吧!!!

YOLOv5训练测试这块说完了,下面就要介绍pt模型转onnx转ncnn了,下次见!!!!!!!!!

更多技术欢迎加入交流:320297153

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据引用内容和,yolov5lite ncnn是一个基于ncnn框架实现的轻量级目标检测模型。在使用yolov5lite ncnn之前,需要将模型转化为ncnn模型。首先,需要将onnx模型转化为ncnn模型,可以使用命令"./onnx2ncnn yolov5ss-sim.onnx yolov5-lite.param yolov5-lite.bin"来进行转化。接着,可以使用命令"./ncnnoptimize yolov5-lite.param yolov5-lite.bin yolov5-lite-opt.param yolov5-lite-opt.bin 65536"对模型进行优化。然后,可以使用命令"./ncnn2table yolov5-lite-opt.param yolov5-lite-opt.bin imagelist.txt yolov5-lite.table mean=[104,117,123 norm=[0.017,0.017,0.017 shape=[640,640,3 pixel=BGR thread=8 method=kl"将模型转换为table格式。最后,可以使用命令"./ncnn2int8 yolov5-lite-opt.param yolov5-lite-opt.bin yolov5-ite-opt-int8.param yolov5-lite-opt-int8.bin yolov5-lite.table"将模型转换为int8格式。 关于yolov5lite ncnn的编译和安装,可以参考引用内容中提到的在Linux环境下的教程进行操作。其中,需要进行onnx模型的提取和转换。可以使用命令"python models/export.py --weights weights/yolov5-lite.pt --img 640 --batch 1"来提取模型,并使用命令"python -m onnxsim weights/yolov5-lite.onnx weights/yolov5-lite-sim.onnx"来进行简化和优化。 总结起来,yolov5lite ncnn是一个基于ncnn框架的目标检测模型,需要将模型转化为ncnn模型,并进行优化和转换为table和int8格式。关于编译和安装,可以参考在Linux环境下的教程进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [YOLOv5-Lite:NCNN+Int8部署和量化,树莓派也可实时](https://blog.csdn.net/weixin_45829462/article/details/119787840)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值