一文教你使用租赁的GPU平台跑yolov5

这篇具有很好参考价值的文章主要介绍了一文教你使用租赁的GPU平台跑yolov5。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

本篇文章是对笔者前几天学习过程的一个记录,鉴于这类文章较少,写出来方便后来者。
本文侧重于yolov5的快速使用,原理部分概括较少,希望你看完本文章后也能成功进行目标检测。
GPU租赁平台:https://www.autodl.com/home
yolov5官方代码:https://github.com/ultralytics/yolov5
作者更改后代码:链接:https://pan.baidu.com/s/1oZWhHjAy_Wp4mg6doaSrkQ 提取码:f7re
数据集:链接:https://pan.baidu.com/s/1Ra7bf5JQavIA69kNLiUnXA 提取码:6z0j
filezilla下载地址:客户端 - FileZilla中文网

前文部分篇幅涉及到yolov5的配置,租赁GPU请直接跳转第三部分。

正文

一、下载yolov5代码文件

yolov5的环境配置你可以查看其它博客或者某宝寻求帮助,此处不再赘述,主要是要安装好pycharm专业版和pytorch环境。
在环境准备好之后,你可以对yolov5进行下载(文首第二个链接),按照下面操作你就可以得到一个压缩包。
一文教你使用租赁的GPU平台跑yolov5
将压缩包解压到你准备的代码路径中,打开pycharm。注意,本文是使用租赁的GPU平台跑yolov5,只能使用pycharm专业版,如果不是专业版可求助其他帖子或者某宝。分辨是不是专业版,可在软件启动页查看,带有(Professional)的字样是专业版。
一文教你使用租赁的GPU平台跑yolov5
来到初始界面,选择你刚解压的压缩包,选择该文件夹并打开,打开之后就是这个界面了,刚打开是一个readme的文件。
一文教你使用租赁的GPU平台跑yolov5

二、对yolov5文件进行更改

使用yolov5训练目标检测模型,主要涉及到的更改是数据集与训练的文件一些参数、路径。下面首先给出数据集的配置,教程对公开数据集或者私有数据集均适用。

1.建立数据集路径

打开yolov5-master文件,在train.py同级目录下建立detection(可不同,但需要英文)文件夹,然后在detection文件夹中建立dataset文件夹,继续在dataset文件夹中分别建立images和labels两个文件夹,最后分别在这两个文件夹中建立train与test文件夹,分别用来存放训练集与测试集,文件夹目录及结构见下:
一文教你使用租赁的GPU平台跑yolov5

2.添加数据集文件

在yolov5-master/data文件夹中复制coco128.yaml文件到yolov5-master/detection文件夹下,更改此文件夹名字为detection.yaml。这里的coco128.yaml是一个小型数据集,由COCO train2017 中的前128张图像组成,文件中包含的设置分别有图像列表路径、训练集验证集路径以及类的数目及名称。

我们需要根据刚才建立的数据集路径以及数据集中类别进行更改,更改后如下:

一文教你使用租赁的GPU平台跑yolov5

然后将yolov5-master/models文件夹中yolov5x.yaml文件复制到yolov5-master/detection文件夹下,当然s、n、m、l几个模型也可以使用,此处仅以yolov5x.yaml模型为例,此文件主要包含参数配置、anchors配置以及网络结构几部分,我们只需要对nc值进行更改,更改为数据集类别数目。

一文教你使用租赁的GPU平台跑yolov5

我们选用的数据集是一个猫狗的数据集,数据集链接可在文首下载。现在我们手里拿到了500张猫狗的图片,需要先对图片进行标签处理。关于标注软件的使用可查看其它博客,文首提供的数据集链接已完成标注,可直接使用。

完成数据集下载后,由于yolov5只认txt文件,不认xml,因此需要完成xml到txt文件的转换,转换程序如下:

import xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import join


def convert(size, box):
    # size=(width, height)  b=(xmin, xmax, ymin, ymax)
    # x_center = (xmax+xmin)/2        y_center = (ymax+ymin)/2
    # x = x_center / width            y = y_center / height
    # w = (xmax-xmin) / width         h = (ymax-ymin) / height

    x_center = (box[0] + box[1]) / 2.0
    y_center = (box[2] + box[3]) / 2.0
    x = x_center / size[0]
    y = y_center / size[1]

    w = (box[1] - box[0]) / size[0]
    h = (box[3] - box[2]) / size[1]

    # print(x, y, w, h)
    return (x, y, w, h)


def convert_annotation(xml_files_path, save_txt_files_path, classes):
    xml_files = os.listdir(xml_files_path)
    # print(xml_files)
    for xml_name in xml_files:
        # print(xml_name)
        xml_file = os.path.join(xml_files_path, xml_name)
        out_txt_path = os.path.join(save_txt_files_path, xml_name.split('.')[0]+'.txt')
        out_txt_f = open(out_txt_path, 'w')
        tree = ET.parse(xml_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('item'):
            # 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))
            # b=(xmin, xmax, ymin, ymax)
            # print(w, h, b)
            bb = convert((w, h), b)
            out_txt_f.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')


if __name__ == "__main__":
    # 把forklift_pallet的voc的xml标签文件转化为yolo的txt标签文件
    # 1、需要转化的类别
    classes = ['cat', 'dog']
    # 2、voc格式的xml标签文件路径
    xml_files1 = r'***'
    # 3、转化为yolo格式的txt标签文件存储路径
    save_txt_files1 = r'***'
    convert_annotation(xml_files1, save_txt_files1, classes)

转换为txt文件后,可以手动或者使用程序对数据集划分。鉴于本次数据集不大,我选择手动划分,训练集与测试集为4:1的比例,即随机选取各50张猫狗照片放于test文件夹中,剩余400张图片放于train文件夹中,注意标签也如此操作,同时保证标签名字与图片名字对应。

3.更改训练参数

训练参数主要是对train.py与detect.py部分进行更改,其中train.py的更改用于训练模型,detect.py的更改用于检测训练结果。

打开train.py文件,来到第435行,部分参数说明及更改如下:

第437行,weights部分,我们本次使用yolov5x.pt,故将default后ROOT / 'yolov5s.pt’改为ROOT / ‘yolov5x.pt’

第438行,配置网络结构部分,对应yolov5x.yaml,故将default后填ROOT / ‘detection/yolov5x.yaml’

第439行,数据集配置文件,对应detection.yaml,故将default后填ROOT / ‘detection/detection.yaml’

第441行,训练轮次,根据数据集训练结果来确定训练轮次

第454行,训练设备,一般使用GPU0,所以default后填0

其他参数如果是小白初次训练不需要更改,可在熟悉后再按需更改。

更改后参数代码如下:

     parser.add_argument('--weights', type=str, default=ROOT / 'yolov5x.pt', help='initial weights path') #weight权重路径,需更改
    parser.add_argument('--cfg', type=str, default=ROOT / 'detection/yolov5x.yaml', help='model.yaml path') #cfg配置文件(网络结构),需更改
    parser.add_argument('--data', type=str, default=ROOT / 'detection/detection.yaml', help='dataset.yaml path') #数据集配置文件(路径),需更改
    parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch-low.yaml', help='hyperparameters path') #hyp超参数文件,根据需要更改
    parser.add_argument('--epochs', type=int, default=100, help='total training epochs') #训练轮次,根据需要更改
    parser.add_argument('--batch-size', type=int, default=2, 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')
    parser.add_argument('--noplots', action='store_true', help='save no plot files')
    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='image --cache ram/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') #选择训练设备,一般用GPU0
    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('--optimizer', type=str, choices=['SGD', 'Adam', 'AdamW'], default='SGD', help='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='max dataloader workers (per RANK in DDP mode)')
    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('--cos-lr', action='store_true', help='cosine LR scheduler')
    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)') #早停止忍耐次数,100次不更新就停止训练

注:detect部分建议在训练模型完成之后再观看

打开detect.py文件,来到第221行,在训练完成后,我们只需要weights source data三部分进行更改就可以进行识别,其他参数可按需要自行更改。
一文教你使用租赁的GPU平台跑yolov5

第221行,weights部分,对于训练好的权重文件,比如 ‘runs/train/exp4/weights/best.pt’

第222行,需检测的图片,自行填写路径

第223行,数据集配置文件,对应detection.yaml,故将default后填ROOT / ‘detection/detection.yaml’

三、租赁GPU

打开文首GPU租赁平台,注册一个账号。如果你是学生身份,可以申请学生认证,这样租赁GPU就可以是9.5折。

来到主界面,选择一个可用的GPU,进行租赁,比如下图就是点击“一卡可租”

一文教你使用租赁的GPU平台跑yolov5

然后计费方式,你可以选择按量计费,包日,包周或者包月,我一般使用按量计费,经济一些。

一文教你使用租赁的GPU平台跑yolov5

然后镜像部分,你可以选择算法镜像,然后在里面搜索yolov5,我理解算法镜像就是提供好该算法所需环境。

一文教你使用租赁的GPU平台跑yolov5

这些都设置完成之后,进行租赁就可以了。

注意:如果像上传资源,改代码这种操作可以使用无卡模式开机,计费会少很多,当训练模型的时候再使用GPU。

四、使用租赁GPU跑yolov5

1.filezilla的使用

在文首下载filezilla软件后,进行安装,来到主界面:
一文教你使用租赁的GPU平台跑yolov5

然后选择左上角文件->站点管理器,进入,先新建立站点,然后其他信息按你租赁的服务器信息填写,协议部分要填写SFTP

一文教你使用租赁的GPU平台跑yolov5

然后点击连接就行了,就可以连接到你租赁的GPU主机了。如果还有不懂,可以看这篇官方教学:

AutoDL帮助文档

连接之后主界面就是这个样子,我们可以将本地的yolov5文件夹上传到root的子文件夹下(选中本地文件夹右键即可选择上传):
一文教你使用租赁的GPU平台跑yolov5

2.pycharm连接AutoDL

选择pycharm右下方解释器部分,选择添加新的解释器,然后选择SSH添加,按步骤输入用户名密码等内容:

一文教你使用租赁的GPU平台跑yolov5

到达最后一步创建虚拟环境时,按下图进行配置即可:

一文教你使用租赁的GPU平台跑yolov5

完成以上步骤之后,你就能成功使用pycharm连接上远程GPU了。在连上初始化时,pycharm会对解释器更新,上传资源等操作。由于我们刚刚已经使用filezilla上传过程序了,这时把进程中上传资源的进程取消掉即可。

然后,我们选择工具->部署->浏览远程主机就可以在pycharm中右侧查看自己的远程主机了。
一文教你使用租赁的GPU平台跑yolov5

3.训练模型

在pycharm中选择终端处,然后选择我们本次租赁的GPU,输入指令(python后是train.py的绝对路径):

一文教你使用租赁的GPU平台跑yolov5

python /root/yolov5-master/train.py

一文教你使用租赁的GPU平台跑yolov5

这样就可以进行训练了。另外需要注意的是,在pycharm中进行远程文件的修改时,修改完需要上传,保证与远程文件一致。

一文教你使用租赁的GPU平台跑yolov5

训练完成的权重文件在runs/train/exp/weights文件夹下,你可以选择best.pt或者last.pt,通过filezilla进行下载。如果对本次训练结果不满意,可以增加训练轮数或者更改其他参数,要记得train.py中第437行weights部分的权重进行更改,如:

'runs/train/exp4/weights/best.pt'

训练完成后,可以看到我们本次训练的结果还是可以的:

一文教你使用租赁的GPU平台跑yolov5

参考资源

【Yolov5】1.认真总结6000字Yolov5保姆级教程(2022.06.28全新版本v6.1)_yolov5教学_若oo尘的博客-CSDN博客

yolov5——train.py代码【注释、详解、使用教程】_Charms@的博客-CSDN博客

autoDL租用服务器运行程序全过程-CSDN博客文章来源地址https://www.toymoban.com/news/detail-454360.html

到了这里,关于一文教你使用租赁的GPU平台跑yolov5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • GPU云服务器使用教程、运行YOLOV5项目并连接到本地VSCode(Pycharm)

    编程如画,我是panda! 之前已经教过大家如何在自己的电脑中配置Pytorch深度学习环境,但是有些小伙伴没有英伟达的GPU,所以用CPU的话训练模型会比较慢,所以这次出一期使用GPU云服务器的教程。 码字不易,如果对各位有帮助,希望点赞收藏加关注哦~ 目录 前言 一、服务器

    2024年01月17日
    浏览(66)
  • 【极市任务——安全帽检测|yolov5】一文带你快速通过任务|使用yolov5[6.0]|和极市说明文档不一样的yolov5内容|python

    目录   时间:2022.6.23 极市的新人任务——安全帽识别通过简单的赛题带我们更好的熟悉了极市比赛、项目的打榜流程。 如果你也是深度学习爱好者,也不妨短暂停留看看!!! 1.开发环境选择 2.配置yolov5环境 3.编写代码 4.模型训练 5.模型测试 6.领取奖励 没有谁的成功是一步

    2024年02月03日
    浏览(58)
  • 配置使用云服务器训练神经网络模型——在阿里GPU服务器训练yolov5模型

    对于没有GPU训练机的人来讲,使用云服务器训练自己的模型应该最最优选择,只是在训练的时候开个按时计费的服务器,训练完成后保存环境镜像之后,可以完全停掉服务器,期间不产生任何费用,下次再训练时,启动环境就可以,很容易保护好自己的训练环境不受污染。

    2024年02月06日
    浏览(64)
  • 【2023-Pytorch-检测教程】手把手教你使用YOLOV5做电线绝缘子缺陷检测

    随着社会和经济的持续发展,电力系统的投资与建设也日益加速。在电力系统中,输电线路作为电能传输的载体,是最为关键的环节之一。而绝缘子作为输电环节中的重要设备,在支撑固定导线,保障绝缘距离的方面有着重要作用。大多数高压输电线路主要架设在非城市内地

    2023年04月11日
    浏览(55)
  • 【零基础玩转yolov5】yolov5训练自己的数据集(CPU训练+GPU训练)

     博主也是最近开始玩yolov5的,甚至也是最近开始使用python的,很多东西都没有接触过,因此训练自己的数据集花了不少时间,所以想写篇博客记录一下,希望同样是零基础的小伙伴们可以更加轻松的上手。同时大家如果发现了错误和理解偏差,欢迎指正。 参考资料: Yolo

    2024年02月06日
    浏览(78)
  • YOLOv5训练速度慢 GPU占用率低

       用Yolo5跑自己的数据集,torch_GPU和CUDA都安装了,使用GPU跑模型,GPU的占用率为1%,设置的epoch为300,batch size为32,大概 6min 多/epoch,数据集很小,刚过一千。在网上查了相关的文章,发现可能是读取数据造成的,把cache-image的action=\\\'store_true\\\'改成\\\'store_false\\\'。  改成 修改后 每

    2024年02月13日
    浏览(83)
  • 一文详解Yolov5——基于Yolov5的火灾检测系统

    ✨ 原创不易,还希望各位大佬支持一下 textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下 👍 点赞,你的认可是我创作的动力! textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是

    2024年02月03日
    浏览(42)
  • 在pycharm中配置GPU训练环境(Anaconda)(yolov5)

    1. 具体的配置过程: 2. 在指定位置(路径)创建虚拟环境: 3. conda常用命令: 4: 在跑模型时候遇到的一些问题:         4.1: conda添加python解释器找不到对应的python.exe文件         4.2: 报错“OSError: [WinError 1455] 页面文件太小,无法完成操作。”         4.3: 报错“

    2024年02月06日
    浏览(45)
  • 一文彻底解决YOLOv5训练找不到标签问题

    ❤️ 网上绝大部分教程所述解决方法都不靠谱,也没有分析问题发生的原因,本文彻底解决了YOLOv5训练时找不到标签,出现 No labels found in /path/train.cache 的问题!希望通过本文,在配置环境的过程中,为各位解决一些不必要的麻烦。——©️ Sylvan Ding 版本 系统 YOLOv5 v6.1 Linu

    2024年02月05日
    浏览(80)
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)

    最近一些人问我怎么在BPU上部署yolov5,因为之前的博客[BPU部署教程] 一文带你轻松走出模型部署新手村介绍的网络都是基于Caffe的,自己的网络都是基于pytorch的,所以遇到了很多坑。鉴于这些需求,我自己研究了下部署的方式,把自己的过程整理下来供各位参考(看我这么好

    2024年02月15日
    浏览(84)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包