深度学习-Yolov5入门到实战点选数据集训练

一、环境准备
  • yolov5是主要的作用:给定一个已经标好的数据集》跑yolov5代码得到一个目标检测模型》选择一个图片或者视频等再给yolov5代码,yolov5代码就能自动识别区分出目标体

  • 推荐该博主的视频脚本手把手装环境到训练识别,或者直接看该博主的博客有教程

  • 本机配置: Win11,Anaconda(python3.7),GTX3050,cuda11.1,pytorch1.8, yolov5,建议先查自己电脑上cuda版本信息:打开cmd窗口输入nvidia-smi查看,或者通过NVIDIA控制面板查看
    在这里插入图片描述

  • pytorch环境准备:首先电脑上已有anconda,然后打开cmd执行命令如下(与我上面的配置对应的),比如搜索# CUDA 11.1打开cuda 各个版本对应安装命令搜索如果遇到问题可以看这篇文章有稍详细的安装步骤

    conda create --p=D:\Programmer\Captcha_env python=3.7
    activate D:\Programmer\Captcha_env
    conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
    
  • 下载yolov5,下载压缩包地址 ,然后解压即可
    在这里插入图片描述

  • yolov5相关python依赖包安装:在yolov5-master当前目录下打开cmd窗口,然后进入之前建的虚拟环境如activate D:\Programmer\Captcha_env,然后安装依赖pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

    activate D:\Programmer\Captcha_env
    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn
    

    在这里插入图片描述

二、yolov5代码简单介绍
1、yolov5代码中train.py
  • 在yolov5代码中,我们训练主要运行train.py文件,测试主要运行detect.py文件;所以其实只要准备个数据集,再改改这两个文件的如图的主配置比如改要训练或者测试的是哪个数据集路径,图片大小等,然后就走完流程了。
    在这里插入图片描述
  • yolov5代码train.py的重要参数介绍:
    在这里插入图片描述
  • train.py的参数weights简单介绍:指定权重模型,如:yolov5s.pt / yolov5m / yolov5l/ yolov5x(可以理解为s小码,m中码,l大码,xl大大码,对应的检测速度分别都是从快到慢,但是精确度分别是从低到高)
    在这里插入图片描述
    在这里插入图片描述
2、yolov5代码中detect.py
  • yolov5代码detect.py的重要参数介绍:
    在这里插入图片描述
3、yolov5代码待准备的数据集文件格式
  • yolov5待训练的数据集自定义准备格式一般如下:分三部分训练集+验证集+.yaml配置 ,其中images文件夹下都是已标记的图片,labels都是yolo格式的.txt文件,images与labels里是一一对应的,只是后缀名不一样
    在这里插入图片描述
  • yolo格式的标签为txt格式的文件:文件名跟对应的图片名一样,除了后缀改为了.txt
    • 每个目标一行,整个图片没有目标的话不需要有txt文件,或者空文件

    • `每行的格式为5个参数:class_num(分类索引,比如0代表戴口罩,1代表没带口罩),后4列是x_center/image_width、y_center/image_height、width/image_width、height/image_height,取值范围是0 ~ 1
      在这里插入图片描述

    • 其中class_num取值为0至total_class - 1,如下图四个值x_center相对于图片坐标轴是0.48,y_center相对于图片坐标轴是0.63,width图片的宽度是0.69, height图片的高度是0.71;之所以图片数值进行归一化,是因为训练的图片尺寸有很多种,这样通过归一化就可以统一了
      在这里插入图片描述

  • .yaml的配置文件:主要就指定了训练和验证的图片路径,以及分类数量和名称
    在这里插入图片描述
三、一个极小的测试识别案例
  • 用官网已有的模型测试yolov5是否正常运行:打开pychram直接运行detect.py文件(detect.py文件:用已经预训练过的模型进行预测识别测试,如yolov5s.pt模型)
  • 运行过程中它会自动下载一个yolov5s.pt模型,如果下载不下来,可以直接到这个连接进行权重模型下载,和train.py在同一个目录下;然后自动识别data/images目录下的两张图片,然后会自动生成一个新的文件夹runs>detect>exp用来存识别出的结果
    在这里插入图片描述
  • 如下在runs>detect>exp文件夹下识别结果,已经自动识别出了目标是bus还是person,并进行了标注
    在这里插入图片描述
四、公开的数据集【口罩】训练并识别案例
  • 公开的数据集roboflow网,这里面有很多数据集,我这里下载了口罩的数据集,图片大概149张;其他公开数据集DataCastle网极市网其他等
    在这里插入图片描述

  • 首先我们下载口罩数据集一个已标注好的数据集解压后存放到我新建的一个文件夹下MaskWearing,该文件夹的目录
    在这里插入图片描述

在这里插入图片描述

  • MaskWearing数据集介绍:主要有3个:训练图片的数据集,验证图片的数据集,以及data.yaml配置。其中images文件夹就是放图片的,labels文件夹下放的是yolo格式的.txt标签文件,images文件夹与labels文件夹的内容是一一对应的,文件名都是一样的,后缀不一样。data.yaml则是配置文件下面详细介绍
    在这里插入图片描述

  • 更改yaml文件配置:如图data.yaml修正数据集存放路径,其中train指的是待训练的图片文件路径,而val指的是待验证的图片路径,而nc代表2个分类,names代表对应两个分类的名称;基于yolov5s.pt训练的就修改yolov5s.yaml里的nc分类,根据data.yaml的nc分类数量进行修改
    在这里插入图片描述

  • 修改train.py参数然后开始训练:训主要修改以下几个参数,运行练完会自动生成runs>train>exp>weights文件夹,其中文件夹下会生成一个best.pt权重模型

    • weights:选择模型权重,如:yolov5s.pt / yolov5m / yolov5l(可以理解为s小码,m中码,l大码,对应的检测速度分别都是从快到慢,但是精确度分别是从低到高)
    • cfg:指定模型配置文件位置如models/yolov5s.yaml
    • data:指定自己的数据集配置文件位置如./MaskWearing/data.yaml
    • epochs: 指定训练轮数,默认初始设置为300,如本次口罩的数据集149张图片,我开始设置的3训练出来的模型效果不好,测试并没有正确框出口罩,设置成10后就正常识别目标了,所以根据实际情况进行调整
    • batchsize: 根据GPU的显存大小进行设置,一般为2的倍数,我这里设置4
    • img-size:图片分辨率缩小或者放大的尺寸,默认640,根据世界调整

    在这里插入图片描述

  • 如果报错OSError: [WinError 1455] 页面文件太小,无法完成操作。,则看这篇文章解决 ,直接搜索查看高级系统设置,然后按图片中处理,保存后重启电脑就正常了;如果这个设置了还是报错以及没有解决问题的话,先把它恢复成之前自动管理所有驱动器的默认状态,保存应用后,再次重新打开再按图片操作一次。
    在这里插入图片描述
    在这里插入图片描述

  • 修改detect.py参数然后开始测试识别,训练完后会自动生成runs>detect>exp文件夹,该文件夹下有识别的结果,至此训练到测试识别的小demo已完成

    • weight:指定前面训练好的权重模型文件位置
    • source:指定检测识别的单个图片,或者图片文件夹路径,或者视频路径,或者摄像头

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

五、自己标注数据集【点选】训练并识别案例
1、利用labelimg标注数据集生成yolo格式
  • labelimg是一款数据标注工具,可以标注如下三种格式:① VOC标签格式,保存为xml文件,② yolo标签格式,保存为txt文件,③ createML标签格式,保存为json格式;本次标注选择yolob标签格式
  • labelimg的安装:pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple
    activate D:\Programmer\Captcha_env\
    pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple
    
    在这里插入图片描述
  • 新建2个文件夹:一个是存放图片的images,一个是存放标签的labels,cmd继续输入labelimg即可进入标注首页
    activate D:\Programmer\Captcha_env\
    labelimg
    
    在这里插入图片描述
  • 按如下图片进行设置,记得一定要先选择yolo格式,然后再开始标注
    在这里插入图片描述
  • 注意点:无论是代标注的图片,还是路径,还是标签名称,尽量都不要写中文,否则会有意想不到的错误,比如可能一直运行不起来并报错OSError: [WinError 1455] 页面文件太小,甚至pycharm闪退等
  • 如图将准备的图片进行标注,按w键就可以开始标注,然后自定义标签分类,也可以设置在右侧设置默认分类,保存好后在你保存标签的文件夹会自动生成yolo格式的.txt文件 ,其中有个总的classes.txt这个会按标注出现的顺序统计你所有的类别名称;然后就标注完成
    在这里插入图片描述
    在这里插入图片描述
2、数据集格式标准化
  • 首先新建一个空的文件夹,里面新建make_file.py如下,运行后会自动生成一些必要的文件夹路径如images,labels, .yaml;然后把已标注好的图片和标签分别复制放到相应的文件夹就行;.yaml文件配置根据你的具体情况设置
    在这里插入图片描述
    在这里插入图片描述

    import os
    def make_data_dir_yaml(yaml_name, data_dir_name, nums, class_names):
        # 生成数据集必要图片和标签文件夹
        for dirs in ['train/images', 'train/labels', 'valid/images', 'valid/labels']:
            try:
                os.makedirs(dirs)
            except FileExistsError:
                print(f'{dirs} 目录已存在')
        # 生成数据集配置.yaml
        with open(yaml_name, "w", encoding='utf-8') as f:
            f.write(f"train: ./{data_dir_name}/train/images\n")
            f.write(f"val: ./{data_dir_name}/valid/images\n")
            f.write("\n")
            f.write(f"nc: {nums}\n")
            f.write(f"names: {class_names}\n")
    
    
    make_data_dir_yaml('test.yaml', 'ClickData', 3, ['dog', 'cat', 'pig'])
    
3、训练与测试识别
  • train.py训练改如下几个地方,着重看下--data,路径就是改成你自己数据集的.yaml文件,其他几个配置看实际情况调整,具体参数含义介绍看前面目录二有;然后运行train.py就开始训练了
    在这里插入图片描述
    在这里插入图片描述

  • 训练完后结果会自动生成到runs/train/exp文件夹下,视频的7分钟~10分钟处会介绍训练结果生成的文件夹下runs/train/exp各个文件的含义
    在这里插入图片描述

  • detect.py识别待测试的图片,如下改几个配置,着重看下--weights 和--source这两个配置,一个选择训练好的权重模型,一个选择待测试的图片,然后运行,最终会在yolov5-master/runs/detect/exp路径下会自动生成测试结果
    在这里插入图片描述
    在这里插入图片描述

  • val.py:单独对权重文件进行验证,显示图片耗时以及识别的精度这里0.187比较低
    在这里插入图片描述

  • 至此整个流程差不多就结束了,还可以继续优化比如识别结果输出坐标等

  • 16
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着深度学习技术的不断发展,目标检测技术已经得到了广泛的应用。在目标检测算法中,数据集的质量和数量对算法的效果影响极大。因此,对于目标检测算法的研究者和应用者来说,一个好的数据集清单是非常必要的。 目标检测数据集清单主要包括以下几个方面:数据集名称、数据集大小、数据集标注、数据集来源、数据集评价指标、文章发表时间等。在这些方面,我们需要从数据集的特点、应用场景和算法类型等角度进行分析,以便能够对不同的数据集进行正确的选择和使用。 其中,数据集大小是一个非常重要的指标。一方面,确保数据集的大小能够满足算法的需求,另一方面,也要避免数据量过大导致训练时间过长或过拟合的问题。此外,数据集标注也是一个至关重要的环节,数据集标注的准确性和完整性直接影响算法的性能。 当我们选定了一个符合我们需求的目标检测数据集之后,如何训练我们的算法模型也是一个需要思考的问题。在这方面,我们建议使用yolov5模型进行训练和使用。yolov5是一种基于深度学习的目标检测算法,其具有训练速度快、检测精度高等优点。对于yolov5模型的训练和使用,我们需要对其网络结构、损失函数、数据预处理、模型调参等进行认真的学习和掌握。 总之,目标检测数据集清单是目标检测领域中非常重要的一环。只有通过对不同数据集的分析和评估,我们才能够选取到最适合我们需求的数据集,并且能够利用yolov5模型进行有效的训练和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值