【目标检测】YOLOv5训练工具,简化训练准备过程

引流

YOLOX算法的检测性能超过YOLOv5啦,所以推荐大家使用这个:YOLOX可视化训练工具,windows/linux均适用,非常适合多卡工作站部署

前言

自YOLO(You Only Look Once)算法面世以来便得到相关从业者的广泛关注,而目前最新版本的yolov5更是将算法的性能,无论是在速度还是准确性上提升到了前所未有的高度。YOLOv5,YYDS!

YOLOv5项目主页
镜像站YOLOv5项目主页

相信不少小伙伴都下载过原项目,并使用官方训练好的模型跑过demo。但如果要用自己的数据集训练模型,数据格式转换以及处理过程都会相对比较麻烦,网上也有许多讲解如何处理的教程,但看着还是觉得挺麻烦,于是本小白花了几天写了个小工具,准备及训练过程被简化,也不用每次使用新的数据集都要忙忙碌碌弄一大堆脚本了。
在这里插入图片描述

注:目前这个小工具只能在Linux系统下使用,目前只在Ubuntu16.04,18.04,20.04上使用过。等有空改改代码写一个在Windows下也能通用的(不过说实话Windows下训练速度明显变慢)。以下步骤也许不完善,如果发现,后续有空也会更新。接下来将从安装步骤以及操作步骤两方面介绍:

安装步骤

0. 环境配置

安装本工具前,请确保系统中已经正确安装CUDA、Cudnn、Pytorch、torchvision,pyqt5,pyqt5-tools以确保本工具能正常使用。这里建议大家使用CUDA10.1以及Pytorch1.7.1。如果运行环境在conda中,需要先进入该conda环境中。

conda activate $YOUR_ENVI_NAME # 将$YOUR_ENVI_NAME替换为conda环境名称

同时,如果使用conda环境运行本项目,请使用

conda install pyqt==5.X.X

安装pyqt5而不是使用

pip3 install pyqt5 pyqt5-tools

否则大概率会报错。
本工具已上传至GitHub,项目地址:

github地址

如果访问速度过慢,可以使用镜像站下载,缺点就是貌似不能登录账号

镜像地址

1. 下载项目

在命令行输入

cd ~
git clone https://github.com/LSH9832/yolov5_training_tool.git
# 或者使用镜像源
git clone https://hub.fastgit.org/LSH9832/yolov5_training_tool.git

即可下载。

2. 安装项目

等待下载完成,输入

cd yolov5_training_tool   # 进入目录
chmod +x ./setup.sh
./setup.sh                # 安装相关依赖,创建桌面文件

安装过程中会询问是否安装pytorch,如果没有安装的话会根据系统中的CUDA版本安装相应的torch包,如果没有正确配置CUDA则安装CPU版本的torch(建议不要这样)。之后还会询问是否使用conda环境。如果使用conda环境则输入该环境的目录再按回车,比如说我服务器上的环境目录就是

/home/lsh/anaconda3/envs/yolov5

如果直接使用使用系统的python环境,则只需要直接回车即可。等待setup.sh运行完毕,此时桌面侧边栏中的Applications中会生成相应的图标,名称为YOLOv5 Train Guide Tool。可以通过搜索应用搜索到。单击即可打开。

3.下载权重文件

权重文件一共有s,m,l,x四种大小,可以根据需要下载,训练哪一种网络模型就下哪一种。

wget -O packages/yolov5/models/pt/yolov5s.pt https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt
wget -O packages/yolov5/models/pt/yolov5m.pt https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5m.pt
wget -O packages/yolov5/models/pt/yolov5l.pt https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5l.pt
wget -O packages/yolov5/models/pt/yolov5x.pt https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5x.pt

同上,如果下载速度太慢,使用国内镜像源

wget -O packages/yolov5/models/pt/yolov5s.pt https://hub.fastgit.org/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt
wget -O packages/yolov5/models/pt/yolov5m.pt https://hub.fastgit.org/ultralytics/yolov5/releases/download/v5.0/yolov5m.pt
wget -O packages/yolov5/models/pt/yolov5l.pt https://hub.fastgit.org/ultralytics/yolov5/releases/download/v5.0/yolov5l.pt
wget -O packages/yolov5/models/pt/yolov5x.pt https://hub.fastgit.org/ultralytics/yolov5/releases/download/v5.0/yolov5x.pt

等待下载完成即可。

操作步骤

  1. 点击按钮Browse选择一个放数据集的目录Location

  2. 填写一个自定义数据集名称Data Name,再点击Create Dir按钮,这个小工具将再目录Location下自动创建一个与自定义数据集名称同名的文件夹。

  3. 打开该文件夹,里面有四个子目录,如下图

数据集目录

  1. 将标签名文件 label.txt 放入该目录下(没有就自己创建),格式如下图,有多少个类别就写多少行,最后一行不要按回车变成n+1行。

标签声明格式5. 将图片文件放在子目录 images 下。

  1. 将图片对应的标签文件(PascalVOC xml格式,目前只支持该格式,如果使用其他格式请先转换为该格式。标签格式如下图,里面的folder和path错了不影响。许多数据集的标签格式都如此。自己标定的数据集可以选择使用标签工具labelImg生成这种格式的标签文件)放入子目录 Annotations 下。

labelImg项目主页
镜像站labelImg项目主页

PascalVOC标签格式7. 选择用于训练的图片的百分比,剩余的图片将用于验证。

  1. 点击按钮 Generate Training Data生成可用于yolov5训练的数据文件。由于需要计算Anchors,所以如果数据集标签数量较多,计算时间也会较长,需要耐心等待方差var降至0。

  2. 选择模型网络大小(有四种大小,模型越大速度越慢,模型最终的效果越好),默认用yolov5自带的模型训练,如果有自己训练过的模型也可选择,但必须清楚该模型对应网络的大小,选择的模型大小必须对应上,否则训练时会报错。然后选择训练次数epoch(建议300以上,这里50只是用于展示)和批处理大小batch size(需要根据自己显卡显存的大小适当调整batch size,如果训练开始就报错就调小一点,4G显存s模型可以最大调到16,11G显存大概在30-40之间,m在25左右,供参考),然后选择使用的GPU数量。注意:batch size必须为使用的GPU数量的整数倍。按下Generate Code后,所有准备工作基本完成。

  3. 这时在数据集目录下生成了训练脚本start_train.py以及超参数文件hyp.yaml,用文本文档打开hyp.yaml即可调整训练的超参数。

  4. 这里有两种训练方式,一是直接在界面上选择好是否使用conda环境以及conda环境的目录后直接点击界面上的Start Train开始训练。二是在在命令行中转到相应的环境中并按照消息栏中的提示输入如下命令即可开始训练。

cd $YOUR_DATA_PATH  # 根据具体目录位置调整
python3 start_train.py # single GPU
python3 -m torch.distributed.launch --nproc_per_node GPUNUM start_train.py    # multi GPU of number ${GPUNUR}

当使用多个GPU训练模型时,将GPUNUM改为需要使用的GPU个数。

After Training

训练完后,命令行或界面上的消息栏将会告诉训练得到的权重文件所在位置,有best和last两个版本,根据需求使用。

权重文件的使用方法可以参考如下代码,使用时需要将本工具目录下的packages文件夹与脚本放在同一个文件夹下。

from packages import yolov5
import cv2
from glob import glob

detector = yolov5.Detector(weights="./best.pt", conf_thres=0.3)

cam = cv2.VideoCapture(0)

if __name__ == '__main__':
    while True:
        success, frame = cam.read()
        if success:
            preds = detector.detect(frame.copy())
            img_show, bbs, labels = detector.draw_bb(frame.copy(),preds)
            if len(bbs):
                print('bounding_box:' bbs)
                print('label:', labels)
            cv2.imshow('capture', img_show)
            if cv2.waitKey(1) == 27:   # esc
                cv2.destroyAllWindows()
                break

由于本人水平有限,项目中出现bug在所难免,欢迎各位大佬反馈bug。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而性能高,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。 本课程的YOLOv5使用ultralytics/yolov5,在Windows系统上做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集、修改配置文件、使用wandb训练可视化工具训练自己的数据集、测试训练出的网络模型和性能统计。 希望学习Ubuntu上演示的同学,请前往 《YOLOv5(PyTorch)实战:训练自己的数据集(Ubuntu)》课程链接:https://edu.csdn.net/course/detail/30793  本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测实战:训练自己的数据集》Ubuntu系统 https://edu.csdn.net/course/detail/30793Windows系统 https://edu.csdn.net/course/detail/30923《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284       
### 回答1: YOLOv5是一种流行的目标检测算法,用于检测图像或视频中的多个对象。YOLOv5 7.0版本的推理代码可以通过以下方式进行简化。 首先,可以使用PyTorch框架来实现YOLOv5的推理代码。PyTorch提供了丰富的工具和函数,可以方便地构建和训练神经网络模型,包括YOLOv5。 其次,可以使用已经经过预训练的权重文件来初始化YOLOv5模型。这样可以避免从头开始训练模型,节省了时间和计算资源。预训练的权重文件可以从YOLOv5官方GitHub仓库上下载。 然后,可以使用推理模式来进行目标检测。推理模式是一种优化的模式,可以提高推理速度和准确度。可以设置推理模式的参数,如batch size、图像大小等,以满足具体应用的需求。 接下来,可以通过一次前向传播(forward pass)来完成目标检测。在前向传播过程中,输入图像经过YOLOv5模型的各个层,最终得到目标的预测框、类别和置信度。 最后,可以根据需要对目标进行后处理。后处理包括非极大值抑制(non-maximum suppression)和类别筛选等步骤,用于去除重叠的框和选择最可信的目标。 以上是对YOLOv5 7.0推理代码简化的描述,通过使用PyTorch框架,预训练的权重文件,推理模式以及后处理步骤,可以简化代码并提高目标检测的效率和准确度。 ### 回答2: 要简化yolov5 7.0的推理代码,可以考虑以下几个方面: 1. 模型加载:首先需要加载yolov5的预训练权重文件,可以使用官方提供的load方法进行模型加载。可以将模型的类型、权重文件等配置信息写入配置文件,然后通过读取配置文件进行模型加载,从而简化代码。 2. 图像处理:对于输入的图像,可以使用OpenCV等库进行图像的读取和预处理,如调整图像尺寸、归一化等操作。这可以通过编写一个函数来实现,并在推理过程中调用该函数,以简化代码的重复性。 3. 推理过程:推理过程包括前向计算和后处理两个部分。在yolov5 7.0中,可以使用forward方法进行前向计算,可以将前向计算的代码封装在一个函数中,并通过传递输入图像和模型对象来调用该函数。对于输出的预测框,可以使用后处理方法进行解码、筛选和非极大值抑制等处理。 4. 结果展示:可以使用OpenCV等库将推理结果可视化,如在图像上绘制出预测的边界框、类别标签等信息。可以编写一个函数来实现结果的展示,传递原始图像、预测框等参数,并在推理完成后调用该函数进行结果展示。 简化yolov5 7.0推理代码的关键是将代码块封装成函数,通过传递参数来实现代码的重用性,并通过配置文件等方式管理模型相关的信息。这样可以使代码更简洁、易于维护,并提高代码的可读性和复用性。 ### 回答3: yolov5版本7.0的推理代码简化了很多,具体包括以下几个方面。 首先,在模型加载方面,简化了模型的加载过程。新版本的yolov5将模型加载和设备选择的代码进行了合并,简化了调用过程。开发者只需要通过一行代码即可加载和设定模型的设备。 其次,在图像预处理方面,也进行了简化。新版本的yolov5提供了一个集成的预处理函数,可以自动进行图像的缩放、归一化和通道转换等操作,并且支持多种图像输入格式,减少了开发者的手动处理工作。 再次,在推理过程中的后处理方面,也进行了简化。新版本的yolov5提供了一组内置的后处理函数,用于解码模型的输出并得到最终的检测结果。开发者只需要调用这些函数,即可得到目标的位置、类别和置信度等信息,不需要再手动解析模型输出。 最后,在可视化输出方面,也进行了简化。新版本的yolov5提供了一个可视化函数,可以直接在原图上标注检测结果,并将结果保存到指定的文件中。这样,开发者可以快速查看推理结果,减少了手动编写可视化代码的工作量。 综上所述,yolov5版本7.0对推理代码进行了简化,减少了开发者的编码工作量,提高了开发效率。开发者只需要调用相应的函数,即可完成模型的加载、图像预处理、推理和结果可视化等操作。这使得使用yolov5进行目标检测变得更加简单和便捷。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值