yolov5使用自己的数据集

本文介绍了如何使用yolov5进行目标检测,包括从CSV格式转换为Yolo所需的TXT格式,以及如何配置VOC和yolov5s.yaml文件以适应自定义数据集。教程还指导读者如何在CPU上运行并训练模型。
摘要由CSDN通过智能技术生成


提示:以下是本篇文章正文内容,下面案例可供参考

一、参考

博主一:炮哥带你学
目标检测—教你利用yolov5训练自己的目标检测模型

博主二她叫谢雨路:在CPU上跑yolov5(详细步骤+适合入门)

二、数据集

数据集放到自己的当前目录下
在这里插入图片描述

这里涉及到数据集划分,原始的数据集是图片和标注混合在一起的,包括jpg格式和csv格式
在这里插入图片描述
1.csv划分:yolov5标注的数据是txt格式的
对yolov5进行训练,所以要吧csv格式转换为txt格式
这里参考博主就叫啥也不会吧
将csv文件转成txt方便yolo数据集训练

import pandas as pd
import os
#line={filename,width,height,class,xmin,ymin,xmax,ymax}
Airplane_class = ['E2','B52','Mirage2000','F4','F14','Tornado','J20','JAS39','B2']
def getx_c(width,xmin,xmax):
    x_c = (xmin+xmax)/2;
    x_c = '%.16f'%(x_c/width)
    return x_c
def gety_c(height,ymin,ymax):
    y_c = (ymin+ymax)/2
    y_c = '%.16f'%(y_c/height)
    return y_c
 
def getbbox_width(width,xmin,xmax):
    bbox_width = xmax - xmin
    bbox_width = '%.16f'%(bbox_width/width)
    return bbox_width
 
def getbbox_height(height,ymin,ymax):
    bbox_height = ymax - ymin
    bbox_height = '%.16f'%(bbox_height/height)
    return bbox_height
 
 
filename = os.listdir(r'F:/dataset/train_csv')
for file in filename:
    if file.endswith('.csv'):
        file_csv = 'F:/dataset/train_csv/'+file
        print(file_csv)
        file_txt = file[:file.index('.')]
        file_txt = 'F:/dataset/labels/'+file_txt +'.txt'
        with open(file_txt,'w') as f:
            data = pd.read_csv(file_csv)
            for line in data.values:
                #print(type(line[1]))
                x_c = getx_c(line[1],line[4],line[6])
                y_c = getx_c(line[2],line[5],line[7])
                bbox_width = getbbox_width(line[1],line[4],line[6])
                bbox_height = getbbox_height(line[2],line[5],line[7])
                Airplane_index = Airplane_class.index(line[3])
                #print(Airplane_class + ' ' + x_c + ' ' + y_c + ' ' + bbox_width + ' ' + bbox_height)
                f.write(str(Airplane_index) + ' ' + str(x_c) + ' ' + str(y_c) + ' ' +str(bbox_width) + ' ' + str(bbox_height))
                f.write('\n')

2.jpg划分
参考博主Cheng_0829
cmd复制移动合并文件
就是吧源文件夹的所有文件转移到目标文件夹中

move c:\1\*.jpg c:\2

三、配置

需要修改俩个yaml文件,一个是data里面的VOC.yaml,复制一份,修改为自己的名字,这里我修改为plain.yaml.另一份是model里面的yolo5s.yaml,这里修改为yolo5s_plain.yaml
在这里插入图片描述

在这里插入图片描述

plain.yaml
修改nc和names:
nc是类别数,names是类别名称

yolov5s_plain.yaml
需要修改的是这一行:

nc: 1  # number of classes

打开train.py
修改:

    parser.add_argument('--weights', type=str, default='yolov5s.pt', help='initial weights path')
    parser.add_argument('--cfg', type=str, default='own_datas/yolov5s.yaml', help='model.yaml path')
    parser.add_argument('--data', type=str, default='own_datas/cat.yaml', help='dataset.yaml path')

最后运行train.py
在这里插入图片描述

好的,那我们开始吧! 首先,YOLO(You Only Look Once)是一种基于深度学习的物体检测算法,它通过卷积神经网络直接在图像上完成物体检测和定位,具有速度快、精度高等优点,因此在实际应用中得到了广泛的应用。 YOLOv5YOLO系列最新的版本,相对于之前的版本,它在网络结构、数据增强、学习策略等方面进行了优化,提高了检测的精度和速度。下面我们来学习一下YOLOv5使用。 1. 安装YOLOv5 YOLOv5可以通过GitHub上的开源项目进行下载和安装,具体步骤如下: 1)克隆YOLOv5项目到本地 ``` git clone https://github.com/ultralytics/yolov5.git ``` 2)安装相关依赖 ``` pip install -r requirements.txt ``` 2. 训练自己的数据集 训练一个物体检测模型需要准备好标注好的数据集,然后通过训练模型来学习如何检测这些物体。YOLOv5支持各种不同的数据格式,包括COCO、Pascal VOC等。 在准备好数据集之后,可以通过以下命令来训练模型: ``` python train.py --img 640 --batch 16 --epochs 50 --data coco.yaml --cfg models/yolov5s.yaml --weights '' --name yolov5s_results ``` 其中,--img指定输入图像大小,--batch指定批量大小,--epochs指定训练轮数,--data指定数据集的配置文件,--cfg指定模型的配置文件,--weights指定预训练模型的权重,--name指定训练结果保存的文件夹名称。 3. 测试模型 训练完成之后,可以使用训练好的模型对新的图像进行检测。可以使用以下命令来进行测试: ``` python detect.py --source 0 --weights yolov5s_results/weights/best.pt --conf 0.25 ``` 其中,--source指定输入图像或视频的路径,0表示使用摄像头输入,--weights指定训练好的模型权重,--conf指定置信度的阈值,低于这个阈值的检测结果将被忽略。 4. 导出模型 最后,可以将训练好的模型导出到ONNX格式或TorchScript格式,以便在其他平台上使用。可以使用以下命令来导出模型: ``` python models/export.py --weights yolov5s_results/weights/best.pt --img-size 640 --batch-size 1 ``` 其中,--weights指定训练好的模型权重,--img-size指定输入图像大小,--batch-size指定批量大小。 这就是使用YOLOv5进行物体检测的基本流程。当然,在实际应用中,还需要根据具体情况进行参数调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值