使用yolov5训练visdrone2019数据集-详细教程

这篇具有很好参考价值的文章主要介绍了使用yolov5训练visdrone2019数据集-详细教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

准备工作

首先,新建一个文件夹,命名为yolov5,在yolov5文件夹下新建datasets文件夹

yolov5源码及权重下载

下载yolov5官方源码

链接如下:https://github.com/ultralytics/yolov5
下载源码并解压后产生一个yolov5-master文件夹,将其移动到yolov5文件夹下

下载预训练权重

此外,还需下载预训练权重,根据自己需要下载相应的预训练权重版本
YOLOv5的官方代码中,给出了四种版本的目标检测网络,分别是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四个模型。
使用yolov5训练visdrone2019数据集-详细教程

YOLOv5s网络最小,速度最快,AP精度也最低。但如果检测的大目标为主的场景,追求速度,那么这个模型也是一个很好的选择。
其他的三种网络,在此基础上不断的加深加宽网络,AP精度也不断提升,但速度的消耗也在不断增加。
其中四种网络的预训练权重下载链接如下:https://github.com/ultralytics/yolov5/releases
在yolov5-master文件夹下新建一个weights文件夹,放入下载所需要的权重,笔者使用的是yolov5m,因此下载的是yolov5m.pt权重文件

配置相关环境

cuda和cudnn

1.首先应在电脑上配置好cuda和cudnn,这样才能使用gpu进行训练,当然若电脑无gpu,则不用进行此操作,但是cpu训练速度会很慢。
cuda和cudnn的安装教程参考https://blog.csdn.net/jhsignal/article/details/111401628

安装yolov5需要的包

最好创建一个虚拟环境,在该环境下安装所需要的包,如果是新和我一样的小白可以参考如下链接:
https://blog.csdn.net/liangyihuai/article/details/77842628
下载的yolov5-master文件夹下有requirements.txt文件,cmd中cd到该路径下,
执行
使用yolov5训练visdrone2019数据集-详细教程

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

安装成功后需要进行测试,可参考如下链接:
Win10下YOLOv5安装与测试

visdrone2019数据集准备

数据集下载

下载visdrone数据集,附官方下载链接:http://aiskyeye.com/download/
官方下载链接比较慢,网上有很多大佬分享这个数据集,大家可以自行查找。
数据集下载并解压完成后,形式如下
使用yolov5训练visdrone2019数据集-详细教程
此时在datasets文件夹下新建VisDrone2019文件夹,将上述4个文件夹放入其中。

数据集处理

新版本的yolov5中已经集成了训练visdrone数据集的配置文件,其中附带了数据集的处理方式,主要是labels的生成,可以新建一个visdrone2yolov5.py文件。

from utils.general import download, os, Path

def visdrone2yolo(dir):
    from PIL import Image
    from tqdm import tqdm

    def convert_box(size, box):
        # Convert VisDrone box to YOLO xywh box
        dw = 1. / size[0]
        dh = 1. / size[1]
        return (box[0] + box[2] / 2) * dw, (box[1] + box[3] / 2) * dh, box[2] * dw, box[3] * dh

    (dir / 'labels').mkdir(parents=True, exist_ok=True)  # make labels directory
    pbar = tqdm((dir / 'annotations').glob('*.txt'), desc=f'Converting {dir}')
    for f in pbar:
        img_size = Image.open((dir / 'images' / f.name).with_suffix('.jpg')).size
        lines = []
        with open(f, 'r') as file:  # read annotation.txt
            for row in [x.split(',') for x in file.read().strip().splitlines()]:
                if row[4] == '0':  # VisDrone 'ignored regions' class 0
                    continue
                cls = int(row[5]) - 1
                box = convert_box(img_size, tuple(map(int, row[:4])))
                lines.append(f"{cls} {' '.join(f'{x:.6f}' for x in box)}\n")
                with open(str(f).replace(os.sep + 'annotations' + os.sep, os.sep + 'labels' + os.sep), 'w') as fl:
                    fl.writelines(lines)  # write label.txt


dir = Path('F:/jyc/datasets/VisDrone2019')  # dataset文件夹下Visdrone2019文件夹路径

# Convert
for d in 'VisDrone2019-DET-train', 'VisDrone2019-DET-val', 'VisDrone2019-DET-test-dev':
    visdrone2yolo(dir / d)  # convert VisDrone annotations to YOLO labels

正确执行代码后,会在’VisDrone2019-DET-train’, ‘VisDrone2019-DET-val’, 'VisDrone2019-DET-test-dev三个文件夹内新生成labels文件夹,用以存放将VisDrone数据集处理成YoloV5格式后的数据标签。
使用yolov5训练visdrone2019数据集-详细教程

训练Visdrone2019数据集

进行了前期准备工作,包括yolov5源码及权重的下载、python相关环境的搭建、相关库的安装以及VisDrone数据集的准备工作之后,就可以开始训练了

修改配置文件

修改VisDrone.yaml文件

记事本或notepad++打开yolov5/yolov5-master/data文件夹下的VisDrone.yaml文件,将其中path参数修改为VisDrone2019文件夹所在的路径。
使用yolov5训练visdrone2019数据集-详细教程

修改yolov5m.yaml文件(若训练其他yolo网络修改相应的yaml文件即可)

记事本或notepad++打开yolov5/yolov5-master/models文件夹下的yolov5m.yaml文件,将其中nc参数修改为VisDrone2019数据集训练的类别,即nc:10。
使用yolov5训练visdrone2019数据集-详细教程

修改train.py文件

在yolov5/yolov5-master下的train.py文件,需要修改几个default参数
我主要更改了–weights、–cfg、–data、–epoch以及–batch-size的默认参数
train.py文件的源码详解可以参考YOLOV5训练代码train.py注释与解析

def parse_opt(known=False):
    parser = argparse.ArgumentParser()
    parser.add_argument('--weights', type=str, default=ROOT / 'weights/yolov5m.pt', help='initial weights path')
    parser.add_argument('--cfg', type=str, default=ROOT / 'models/yolov5m.yaml', help='model.yaml path')
    parser.add_argument('--data', type=str, default=ROOT / 'data/VisDrone.yaml', help='dataset.yaml path')
    parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch.yaml', help='hyperparameters path')
    parser.add_argument('--epochs', type=int, default=10)
    parser.add_argument('--batch-size', type=int, default=8, help='total batch size for all GPUs, -1 for autobatch')
    parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='train, val image size (pixels)')
    parser.add_argument('--rect', action='store_true', help='rectangular training')
    parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')
    parser.add_argument('--nosave', action='store_true', help='only save final checkpoint')
    parser.add_argument('--noval', action='store_true', help='only validate final epoch')
    parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check')
    parser.add_argument('--evolve', type=int, nargs='?', const=300, help='evolve hyperparameters for x generations')
    parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')
    parser.add_argument('--cache', type=str, nargs='?', const='ram', help='--cache images in "ram" (default) or "disk"')
    parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')
    parser.add_argument('--device', default='0', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
    parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')
    parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')
    parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer')
    parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')
    parser.add_argument('--workers', type=int, default=8, help='maximum number of dataloader workers')
    parser.add_argument('--project', default=ROOT / 'runs/train', help='save to project/name')
    parser.add_argument('--name', default='exp', help='save to project/name')
    parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')
    parser.add_argument('--quad', action='store_true', help='quad dataloader')
    parser.add_argument('--linear-lr', action='store_true', help='linear LR')
    parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')
    parser.add_argument('--patience', type=int, default=100, help='EarlyStopping patience (epochs without improvement)')
    parser.add_argument('--freeze', type=int, default=0, help='Number of layers to freeze. backbone=10, all=24')
    parser.add_argument('--save-period', type=int, default=-1, help='Save checkpoint every x epochs (disabled if < 1)')
    parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify')

    # Weights & Biases arguments
    parser.add_argument('--entity', default=None, help='W&B: Entity')
    parser.add_argument('--upload_dataset', action='store_true', help='W&B: Upload dataset as artifact table')
    parser.add_argument('--bbox_interval', type=int, default=-1, help='W&B: Set bounding-box image logging interval')
    parser.add_argument('--artifact_alias', type=str, default='latest', help='W&B: Version of dataset artifact to use')

    opt = parser.parse_known_args()[0] if known else parser.parse_args()
    return opt

开始训练

运行train.py文件,即开始训练。
在训练的过程中会产生过程文件及训练模型,会保存在runs/文件夹中

训练效果测试

修改detect.py中的–weights参数,运行detect.py文件,即可看到检测效果。

 parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'weights/yolov5m.pt', help='model path(s)')

使用yolov5训练visdrone2019数据集-详细教程这是运行了6个epoch后的效果。

遇到的问题及解决方案

1.Unable to find a valid cuDNN algorithm to run convolution:
cuDnn无法找到算法进行卷积
**解决方案:**调小batchsize: 1 8 16 32 64 根据自己的内存大小调整
2.OSError: [WinError 1455] 页面文件太小,无法完成操作
解决方案:可参考如下链接:https://blog.csdn.net/qq1198768105/article/details/117392555,我采用的是其中方案2。
3.配置wandb
可参考如下链接:https://blog.csdn.net/ksp416/article/details/113915178
4.使用wandb
可参考如下链接https://zhuanlan.zhihu.com/p/145052684文章来源地址https://www.toymoban.com/news/detail-463582.html

到了这里,关于使用yolov5训练visdrone2019数据集-详细教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Yolov5 + Deepsort 重新训练自己的数据(保姆级超详细)

    从下面github库中拿代码: https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch GitHub - Sharpiless/Yolov5-Deepsort: 最新版本yolov5+deepsort目标检测和追踪,能够显示目标类别,支持5.0版本可训练自己数据集 最新版本yolov5+deepsort目标检测和追踪,能够

    2024年01月19日
    浏览(35)
  • 【AI】yolov5:数据下载、图像标注、训练、预测等,超详细笔记;pytorch转onnx再转TensorRT;训练识别口罩

    https://gitcode.net/mirrors/ultralytics/yolov5/ 1)安装pytorch 2)安装cudnn 3)下载yolov5源码: 4)安装yolov5依赖

    2024年02月15日
    浏览(35)
  • 通过AutoDL使用yolov5.7训练自己的数据集

    AutoDL 选择基础镜像 创建之后 点击 开机 ,也可在更多里面选择无卡模式开机(此模式不能训练,但是可以上传文件且更便宜)。开机之后,上传代码可通过xshell工具或者可以通过快捷工具JupyterLab。我两种方法都来演示一遍。yolov5代码 复制登录指令 回车后会要求输入密码,

    2024年02月05日
    浏览(38)
  • 必看新手教程!一篇就够!pycharm链接云服务器--yolov5 yolov7训练自己的数据集(矩池云)

    趁着寒假期间稍微尝试跑了一下yolov5和yolov7的代码,由于自己用的笔记本没有独显,台式机虽有独显但用起来并不顺利,所以选择了租云服务器的方式,选择的平台是矩池云(价格合理,操作便捷) 需要特别指出的是,如果需要用pycharm链接云服务器训练,必须要使用pycharm的

    2024年02月03日
    浏览(39)
  • 手把手教你如何使用YOLOV5训练自己的数据集

    YOLOV5是目前最火热的目标检测算法之一。YOLOV5为一阶段检测算法因此它的速度非常之快。可以在复杂场景中达到60祯的实时检测频率。 接下来本文将详细的讲述如何使用YOLOV5去训练自己的数据集 YOLOV5中使用了Tensorboard和Wandb来可视化训练,其中Wandb配置可以看这篇文章: Wand

    2024年02月05日
    浏览(43)
  • YOLOv5训练数据提示No labels found、with_suffix使用、yolov5训练时出现WARNING: Ignoring corrupted image and/or label

    仔细看下数据加载、处理的文件datasets.py,发现有一句会根据第2步中images文件夹的位置找到对应labels文件夹: YOLOv5加载标签的地方在 datasets.py 中的这个地方,我们修改一下加载label的路径为自己的label放置位置就好。 在这个 img2label_paths 函数中,我们的修改如下:【因为我们

    2024年02月04日
    浏览(33)
  • YOLOv5目标检测:ubuntu1804从零开始使用YOLOv5训练自己的数据集(亲测有效,一步一步来一定行)

    (1)首先需要安装Anaconda,这个网上教程太多了,下载最新版本就行,在这里就不在赘述了。 (2)安装Pytorch 1. 首先创建python3.6以上版本的conda环境,在这里我用的是python3.8,环境名称为mypytorch 2. 激活创建好的conda环境 3.在PyTorch官网上选择指定版本安装Pytorch Install PyTorch: h

    2024年02月19日
    浏览(47)
  • yolov5训练部署全链路教程

    YOLOv5 模型是 Ultralytics 公司于 2020 年 6 月 9 日公开发布的。YOLOv5 模型是基于 YOLOv3 模型基础上改进而来的,有 YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x 四个模型。YOLOv5 相比YOLOv4 而言,在检测平均精度降低不多的基础上,具有均值权重文件更小,训练时间和推理速度更短的特点。YOLOv5 的

    2024年02月11日
    浏览(36)
  • yolov5-7.0简单训练教程

    yolov5-7.0简单训练教程。 可以自己去git上下载,没有梯子的点这里去百度网盘下载资源 点击下载资源包:objectdetection_script-master 将下载到的脚本目录中的yolo文件夹内的文件复制到yolov5-7.0的根目录下。 Annotations:存放VOC格式的标注的XML文件 JPEGImages:存放数据集里的图片,图片

    2024年02月02日
    浏览(31)
  • 适合小白的超详细yolov8环境配置+实例运行教程,从零开始教你如何使用yolov8训练自己的数据集(Windows+conda+pycharm)

      目录 一、前期准备+所需环境配置  1.1. 虚拟环境创建 1.2 下载yolov8源码,在pycharm中进行配置 1.2.1 下载源码 1.2.2 在pycharm终端中配置conda 1.3 在pycharm的terminal中激活虚拟环境  1.4 安装requirements.txt中的相关包 1.5 pip安装其他包 1.6 预训练权重的下载  1.7 验证环境配置是否成功

    2024年02月05日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包