半亩花草 发表于 2022-6-24 08:41:21

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

文章目录



[*]前言
[*]一、YOLO简介
[*]二、代码下载
[*]三、数据集准备
[*]四、配置文件的修改
[*]

[*]1.data下的yaml
[*]2.models下的yaml
[*]3.训练train

[*]五、搭载服务器训练
[*]

[*]1.上传数据
[*]2.租服务器
[*]3.pycharm连接服务器
[*]

[*]1.添加ssh
[*]2.输入密码
[*]3.配置服务器环境路径跟代码映射路径
   
[*]4.解压数据
[*]5.开始训练
[*]6.文件下载到本地

[*]六、测试
[*]总结

前言

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

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

大家可以自行到百度网盘进行下载,附链接:
链接:百度网盘
提取码:qnn5
https://img-blog.csdnimg.cn/f2f8ecea31bc41199d49de16115b688b.png
三、数据集准备

在上篇文章中,介绍了xml转txt文件的代码过程,可以自行查看,附链接:
代码
转换之后,还可以分成训练集跟测试集
https://img-blog.csdnimg.cn/756ace95ca044479a8f142b2d0a8b05c.png
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 + '.txt' for x in img_paths] 四、配置文件的修改

1.data下的yaml

https://img-blog.csdnimg.cn/faf32e3b6b51426993d4051d17911f68.png
修改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 这里修改数据路径
https://img-blog.csdnimg.cn/a5d1adca1fcb4817855b746bba74a14d.png
修改前:
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:表示你训练的数据是几分类。
https://img-blog.csdnimg.cn/d3697c3ac2584c64913d424922911eca.png
2.models下的yaml

https://img-blog.csdnimg.cn/8c65261352274249bee44763c969c36c.png
这里使用的是5s的模型,更改yolov5s.yaml文件
https://img-blog.csdnimg.cn/f13b6c0c6a5641e0933cafc3c24aed98.png
这里只需要更改nc可以,代表你训练的数据是几分类。
3.训练train

https://img-blog.csdnimg.cn/38395e6b272d4d1599c82a0f8e17d6f1.png

[*]更改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.上传数据

租服务器之前,先上传数据,数据很大的话,租服务器之后上传会浪费时间,还费钱。
进入我的网盘,上传数据。
https://img-blog.csdnimg.cn/89bf85670ba14672a83b8208d8b90cda.png
2.租服务器

这里选择显卡型号,进行租用。
https://img-blog.csdnimg.cn/918015b850c848dba0c33b86dc4a79dc.png
环境选择yolov5环境,省去配环境的环节。
https://img-blog.csdnimg.cn/4e89ac8144e0402794306305c235979a.png
3.pycharm连接服务器

租用好之后,进入租用界面,显示租用服务器的详细信息。
https://img-blog.csdnimg.cn/07d4d8f169044775a9f92ec70ed5c0ce.png
这里使用ssh连接。
https://img-blog.csdnimg.cn/dcabc6958a2e4c328b15983ea7da898c.png
1.添加ssh

https://img-blog.csdnimg.cn/86c65fdbfe104936af0d08839fa1062c.png
根据租用服务器的ssh链接,输入主机,用户名,端口。
https://img-blog.csdnimg.cn/365a48cad61d4e4cbdf5bd762676e84e.png
2.输入密码

https://img-blog.csdnimg.cn/fdc798c3d1ba45cbaf69f53963eaa03c.png
3.配置服务器环境路径跟代码映射路径

https://img-blog.csdnimg.cn/fc303f717bf5472da5a708fae4ffe5dc.png
打开链接,进入终端。
https://img-blog.csdnimg.cn/61d9d20d0d78483ca84422a1f19beced.png
输入conda env list查看环境路径
https://img-blog.csdnimg.cn/2bbc79f619fd494f943fed8a4bcb2b2a.png
配置环境路径,代码映射路径
mnt路径下就是自己的网盘路径。
https://img-blog.csdnimg.cn/4f7bf0c5f340434191253a6eca3b3688.png
如图所示,配置完成。
https://img-blog.csdnimg.cn/59efbb144c7c46698b48d698dd32ea8c.png
4.解压数据

打开终端,cd到压缩数据集目录下,unzip 文件名 进行解压,如下图所示:
https://img-blog.csdnimg.cn/71d5c52f3abc4652ad57962c1172455e.png
5.开始训练

等待代码全部上传至服务器之后,按照服务器数据集路径,修改data下面的yaml文件中数据集路径,就可以进行训练了。
如下图所示:就是搭载服务器进行训练。
https://img-blog.csdnimg.cn/c6c34091216540e09a0b8f44c6d77120.png
https://img-blog.csdnimg.cn/561c56355e564f7b8880d4a3be0804f4.png
如图所示,开始训练。
https://img-blog.csdnimg.cn/bc27e5ae231b4683b209aeb84c5dbed4.png
https://img-blog.csdnimg.cn/6959b4823ee245da84e3ab89bdcd73e8.png
训练结束。
https://img-blog.csdnimg.cn/e849d01c6f114ca3960814cdb38ed979.png
这个路径下就是训练产生的权值文件。
https://img-blog.csdnimg.cn/c2e893bd6d294804bc30d8fd8d37ea07.png
https://img-blog.csdnimg.cn/a4e2869464dc40d5ae12670faedfd5c8.png
best.ph 是最好的权值文件。
last.ph 是最后一次训练的权值文件。
6.文件下载到本地

我们可以通过winscp这个软件,将训练的好的文件夹,下载到本地
1.输入主机名,端口号,用户名,密码,连接服务器
https://img-blog.csdnimg.cn/6be0c09937b747d388d1453b33da296b.png
如图所示,连接成功
https://img-blog.csdnimg.cn/f1d48de9aaa0446eaea149befaa816a4.png
2.找到文件夹,下载到本地。https://img-blog.csdnimg.cn/e646f974831c44179ab3d1141584153b.png
六、测试

我们可以根据训练好的权重进行测试。
测试代码detect.py
https://img-blog.csdnimg.cn/1b7a7bd0750b41ee954ba63d8bc97f0a.png
权重文件路径
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') 设置好之后就可以就行测试。
https://img-blog.csdnimg.cn/e762528d8c9d4406902fd2af54ab1b0f.png
https://img-blog.csdnimg.cn/ad0651b30aea4c10a2c0d28b33fbe240.png
https://img-blog.csdnimg.cn/0e9298230d1949dd880d00c22d54bc10.png
测试完成,会显示保存路径。
打开文件夹,查看效果。
https://img-blog.csdnimg.cn/d31e3f51db7a4258b8d795b929c64f45.png
总结

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: YOLOV5 代码复现以及搭载服务器运行