YOLOV5 代码复现以及搭载服务器运行

前言

在前面文章中提到,目标检测有两种方式,一种是one_stage(单阶段)如YOLO 一种是two_stage(双阶段)如Faster_Rcnn,Mask_Rcnn。之前介绍了Faster_Rcnn,这篇文章主要介绍YOLOV5 代码复现过程,以及配置文件的修改。

一、YOLO简介

YOLO是目标检测的一种网络框架,检测速度非常快,适合做一些实时检测,YOLO现在经过几代版本的更迭,现在已经到了V5版本,V5提供了5l,5m,5s,5x几种版本,这篇文章使用5s的模型。

二、代码下载

大家可以自行到百度网盘进行下载,附链接:

链接:百度网盘
提取码:qnn5
在这里插入图片描述

三、数据集准备

在上篇文章中,介绍了xml转txt文件的代码过程,可以自行查看,附链接:
代码
转换之后,还可以分成训练集跟测试集
在这里插入图片描述
images 放置文件
labels 放置txt文件
这里要注意的是,文件夹名称一定为images跟labels,原代码规定如下:

def img2label_paths(img_paths):
    # Define label paths as a function of image paths
    sa, sb = os.sep + 'images' + os.sep, os.sep + 'labels' + os.sep  # /images/, /labels/ substrings
    return [sb.join(x.rsplit(sa, 1)).rsplit('.', 1)[0] + '.txt' for x in img_paths]

四、配置文件的修改

1.data下的yaml

在这里插入图片描述
修改data目录下面的VOCyaml文件,

修改前:
path: ../datasets/VOC
train: # train images (relative to 'path')  16551 images
  - images/train2012
  - images/train2007
  - images/val2012
  - images/val2007
val: # val images (relative to 'path')  4952 images
  - images/test2007
test: # test images (optional)
  - images/test2007
修改后
train: # train images (relative to 'path')  16551 images
  - /mnt/wu/images/train
val: # val images (relative to 'path')  4952 images
  - /mnt/wu/images/val

这里修改数据路径
在这里插入图片描述

修改前:
nc: 20  # number of classes
names: ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog',
        'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor']  # class names
修改后:
nc: 4  # number of classes
names: ["Traffic_Light_go","Traffic_Light_stop","Traffic_Light_warning",'Traffic_Light_ambiguous'] # class names

这里更改nc跟标签
nc:表示你训练的数据是几分类。
在这里插入图片描述

2.models下的yaml

在这里插入图片描述
这里使用的是5s的模型,更改yolov5s.yaml文件
在这里插入图片描述

3.训练train

在这里插入图片描述

  1. 更改YOLOV5s模型的路径
parser.add_argument('--weights', type=str, default=ROOT / 'yolov5s.pt', help='initial weights path')

2.更改上面修改过models的yaml文件路径

parser.add_argument('--cfg', type=str, default='models/traffic.yaml', help='model.yaml path')

3.更改上面修改过data的yaml文件路径

parser.add_argument('--data', type=str, default=ROOT / 'data/traffic.yaml', help='dataset.yaml path')

4.训练批次

parser.add_argument('--epochs', type=int, default=50)

5.批次大小,batch_size 如果在训练过程中出现显存不足可以降低batch_size的大小

parser.add_argument('--batch-size', type=int, default=64, help='total batch size for all GPUs, -1 for autobatch')

五、搭载服务器训练

像YOLO这种深度框架,最好搭载服务器进行训练,博主使用的是矩池云,附链接矩池云
附邀请码:BQlYmrQhDiex1lZ

1.上传数据

租服务器之前,先上传数据,数据很大的话,租服务器之后上传会浪费时间,还费钱。
进入我的网盘,上传数据。
在这里插入图片描述

2.租服务器

这里选择显卡型号,进行租用。
在这里插入图片描述
环境选择yolov5环境,省去配环境的环节。
在这里插入图片描述

3.pycharm连接服务器

租用好之后,进入租用界面,显示租用服务器的详细信息。
请添加图片描述
这里使用ssh连接。
请添加图片描述

1.添加ssh

在这里插入图片描述
根据租用服务器的ssh链接,输入主机,用户名,端口。
请添加图片描述

2.输入密码

请添加图片描述

3.配置服务器环境路径跟代码映射路径

在这里插入图片描述
打开链接,进入终端。
请添加图片描述
输入conda env list查看环境路径
请添加图片描述

配置环境路径,代码映射路径
mnt路径下就是自己的网盘路径。
请添加图片描述
如图所示,配置完成。
请添加图片描述

4.解压数据

打开终端,cd到压缩数据集目录下,unzip 文件名 进行解压,如下图所示:

请添加图片描述

5.开始训练

等待代码全部上传至服务器之后,按照服务器数据集路径,修改data下面的yaml文件中数据集路径,就可以进行训练了。

如下图所示:就是搭载服务器进行训练。
请添加图片描述
请添加图片描述
如图所示,开始训练。
请添加图片描述
请添加图片描述
训练结束。
请添加图片描述
这个路径下就是训练产生的权值文件。
请添加图片描述
在这里插入图片描述
best.ph 是最好的权值文件。
last.ph 是最后一次训练的权值文件。

6.文件下载到本地

我们可以通过winscp这个软件,将训练的好的文件夹,下载到本地
1.输入主机名,端口号,用户名,密码,连接服务器
请添加图片描述
如图所示,连接成功
请添加图片描述
2.找到文件夹,下载到本地。请添加图片描述

六、测试

我们可以根据训练好的权重进行测试。
测试代码detect.py
在这里插入图片描述
权重文件路径

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

测试图片,视频路径,0表示开启摄像头。

parser.add_argument('--source', type=str, default="traffic.mp4", help='file/dir/URL/glob, 0 for webcam')

设置好之后就可以就行测试。
请添加图片描述
请添加图片描述
请添加图片描述
测试完成,会显示保存路径。
打开文件夹,查看效果。
请添加图片描述

总结

以上就是YOLOV5 搭载服务器复现的全部过程,大家在复现过程中,遇到的问题,可以反馈到评论区。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年2月23日 下午1:00
下一篇 2023年2月23日 下午1:03

相关推荐

此站出售,如需请站内私信或者邮箱!