YOLO v5训练和预测
YOLO v5训练自己的模型
1.1 前期准备
1.1.1 数据集的准备
数据集VOCdevkit文件夹内设置如下:
其中:
images和labels文件夹内都包含着train、val和test文件夹:
images/train文件夹里面保存着训练集的照片;
images/val文件夹里面保存着验证集的照片;
images/test文件夹里面保存着测试集的照片;
labels/train文件夹里面保存着训练集的标签;
labels/val文件夹里面保存着验证集的标签;
labels/test文件夹里面保存着测试集的标签;
1.1.2 预训练权重准备
到官网https://github.com/ultralytics/yolov5,根据自己的需要下载一个pt文件并将其放入weights文件夹中。
从上至下,模型由小到大,模型的精度可能越来越高,但占内存也越大,检测速度更慢
1.2 修改yaml文件
1.2.1 新建一个或使用现有的data.yaml文件
作用是指定数据集的路径和类别信息,
其中的内容根据自己的数据集情况进行修改,
train等三个文件夹路径是训练集、验证集和测试集的图片文件夹路径,names是类别信息。
注意按照自己的文件路径进行修改,不要照搬照抄!!!
train: D:\Pycharm_Projects\ultralytics\ultralytics\datasets\mooncake\train # train images (relative to 'path') 128 images
val: D:\Pycharm_Projects\ultralytics\ultralytics\datasets\mooncake\valid # val images (relative to 'path') 128 images
test: D:\Pycharm_Projects\ultralytics\ultralytics\datasets\mooncake\test # test images (optional)
nc: 1
names: ['can']
1.2.2 修改模型配置文件
由于本次项目使用的是yolov5s.pt这个预训练权重,所以要使用models目录下的yolov5s.yaml文件中的相应参数(因为不同的预训练权重对应着不同的网络层数,所以用错预训练权重会报错)。
将yolov5s.yaml文件复制一份,然后将其重命名,我这里将其重命名为yolov5s_pothole.yaml。
打开yolov5s_pothole.yaml文件,修改数字就好了。
1.3 训练自己的模型
(1)将train.py文件中这三个文件位置换成自己的;
(2)更改模型的训练轮次epochs参数;
(3)根据自己电脑的配置,修改--batch-size:每次喂入批次文件的多少;修改--workers:最大工作核心数;
(4)更改以下方框中的name,可更改训练输出文件夹的名称
(5)运行train.py。
1.4 启用tensorbord查看参数
打开pycharm终端,cd到runs文件夹的上一层文件夹(应该是yolov5-5.0),然后输入
tensorboard --logdir=runs/train
就会出现一个网址地址,点击那行网址,跳转到浏览器打开就可以看到训练的过程了
1.5 进行预测
(1)对图片文件夹进行预测
打开detect.py文件后,将权重--weights的路径设置为训练时产生的best.pt权重文件的路径(在runs/train/exp/weights文件夹下);
将--source设置为待预测图片的文件夹,批量预测文件夹中的图片。
detect.py运行完成后,在runs下面会生成一个detect目录,预测结果会保存在exp目录下。
(2)对视频进行预测
如要对视频进行测试,则将--source的路径改为视频的路径即可。
(3)启用摄像头进行预测
利用摄像头进行测试只需将--source路径改写为0就好了,即default=0。
如果出现以下报错
解决办法:在utils文件夹下找到datasets.py这个py文件
打开文件,找到第279行代码,给两个url参数加上str就可以了,如图所示,就可以完美运行电脑的摄像头了。
本文作者:Ah_Qiu
本文链接:https://www.cnblogs.com/qqsj/p/17386035.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)