如何使用YOLOv5训练自己的数据集

1.如何用yolov5已有的权重进行检测

在detcet.py中进行参数设置
weights中选用yolov5s.pt/yolov5m.pt/yolov5l.pt/yolov5x.pt
source中设为需要检测的文件路径,设置为’0’,则为检测摄像头内的视频

def parse_opt():
    parser = argparse.ArgumentParser()
    parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov5s.pt', help='model path(s)')
    parser.add_argument('--source', type=str, default=ROOT / '0', help='file/dir/URL/glob, 0 for webcam')

2.使用yolov5训练自己的数据集

Labelimg是一个图像标注工具,软件使用非常简单,下载解压后在data文件夹下有一个predefined_classes文件,在里面提前写好要训练的类型,后面标注的效率会快很多。
链接:https://pan.baidu.com/s/1D2EGh238F7VlH4Caui6faA
提取码:asdf
(1)Open就是打开图片,我们不需要一张一张的打开,太麻烦了,使用下面的Open Dir

(2)Open Dir就是打开需要标注的图片的文件夹,这里就选择images文件夹

(3)change save dir就是标注后保存标记文件的位置,选择需要保存标注信息的文件夹,这里就选择Annotations文件夹

(4)特别注意需要选择好所需要的标注文件的类型。有yolo(txt), pascalVOC (xml)两种类型。yolov5需要txt文件格式的标注文件,但是这里我们选择pascalVOC,再将xml格式的标注文件转化为所需的txt格式,这里需要用到以下程序,就是运行后除了会生成转换后labels文件夹下的60张图片的txt文件,还会在data文件夹下得到三个包含数据集路径的txt文件,train.tx,tes.txt,val.txt这3个txt文件为划分后图像所在位置的绝对路径,如train.txt就含有所有训练集图像的绝对路径。

import xml.etree.ElementTree as ET
import os
from os import getcwd

sets = ['train', 'val', 'test']
classes = ['High Ripeness','Low Ripeness','Medium Ripeness']
abs_path = os.getcwd()
print(abs_path)

def convert(size, box):
    dw = 1. / (size[0])
    dh = 1. / (size[1])
    x = (box[0] + box[1]) / 2.0 - 1
    y = (box[2] + box[3]) / 2.0 - 1
    w = box[1] - box[0]
    h = box[3] - box[2]
    x = x * dw
    w = w * dw
    y = y * dh
    h = h * dh
    return x, y, w, h

def convert_annotation(image_id):
    in_file = open('data/Annotations/%s.xml' % (image_id), encoding='UTF-8')
    out_file = open('data/labels/%s.txt' % (image_id), 'w')
    tree = ET.parse(in_file)
    root = tree.getroot()
    size = root.find('size')
    w = int(size.find('width').text)
    h = int(size.find('height').text)
    for obj in root.iter('object'):

        difficult = obj.find('difficult').text
        cls = obj.find('name').text
        if cls not in classes or int(difficult) == 1:
            continue
        cls_id = classes.index(cls)
        xmlbox = obj.find('bndbox')
        b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),
             float(xmlbox.find('ymax').text))
        b1, b2, b3, b4 = b

        if b2 > w:
            b2 = w
        if b4 > h:
            b4 = h
        b = (b1, b2, b3, b4)
        bb = convert((w, h), b)
        out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')

wd = getcwd()
for image_set in sets:
    if not os.path.exists('data/labels/'):
        os.makedirs('data/labels/')
    image_ids = open('data/ImageSets/%s.txt' % (image_set)).read().strip().split()
    list_file = open('data/%s.txt' % (image_set), 'w')
    for image_id in image_ids:
        list_file.write(abs_path + 'data/images/%s.jpg\n' % (image_id))
        convert_annotation(image_id)
    list_file.close()

(5)按W键或点击Create\nRectBox开始创建矩形框,把要进行识别训练的区域标记出来就行,选好框后我们选是什么类别(predefined_classes文件,在里面提前写好要训练的类型的原因),整张图片的所有目标都标记好了之后按Ctrl+S或点击Save保存 ,然后切换下一张继续,快捷键为按D键,每一张图片标记后都要保存,这个过程是一个比较繁琐的过程

以上参考另一位博主,附上连接
原文链接:https://blog.csdn.net/m0_57525262/article/details/122134557

yolov5-master中data文件:
创建images文件夹,其中包括test文件夹(测试集图片)、train文件夹(训练集文件)、val文件夹(验证集文件夹);

创建labels文件夹,其中包括test文件夹(测试集标签)、train文件夹(训练集标签)、val文件夹(验证集文标签)。一一对应。

创建一个xx.yaml文件,用来指明数据集的,包含以下信息即可

train: data/images/train
val: data/images/val
test: data/images/test

nc: 1
names: ['jiao_cha_zhi']

在train.py中:
‘weights’
可选用yolov5s.pt/yolov5m.pt/yolov5l.pt/yolov5x.pt,表示在yolo已有的权重基础上训练自己的数据集,这样可以更快的得到较高的识别率,
也可以设值为’ ‘空,表示在空白的初始化下训练,这样需要更多的训练轮数才可以得到较高的识别率

‘cfg’
选用与’weights’中一致的yaml文件

‘data’,使用data/xx.yaml,即在2.2中创建的文件

‘batch_size’大小与计算机配置有关,从16开始试,32-64-128

注意,在windows系统中,参数’workers’需要设置为0

与1中相同,只需把’weights’换乘runs/train/exp/weights/best.pt,(last.pt)
检测结果保存在runs-detect-exp中

Original: https://blog.csdn.net/qq_45199760/article/details/123600851
Author: 乌鸦向北
Title: 如何使用YOLOv5训练自己的数据集

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/532555/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球