基于pytorch的YOLOv5训练

一、数据集制作

data文件夹放入数据集

方法一(推荐)

  1. images文件夹存放训练图片:xxx.jpg
    labels文件夹存放标注文件:xxx.txt
  2. 生成train.txt,test.txt,val.txt
    文件中内容为图片的路径,训练代码通过读取三个txt中的图片路径索引对应的文件图片。例如:xxx/xxx/xxx.jpg。
  3. labels文件夹中存放同名的txt标注文件
    在yolo中文件的标注信息包括:【cls、 x_center、 y_center、 width、 height】

方法二

  1. images文件夹存放训练图片:xxx.jpg
    labels文件夹存放标注文件:xxx.txt
    在这里插入图片描述
    2.不用生成txt文件,在配置文件中修改即可。

二、修改配置文件

下载yolov5-5.0代码。
修改data/xxx.yaml作为数据集的配置文件,为模型训练提供数据接口。

方法一(推荐)

# train and val datasets (image directory or *.txt file with image paths)
train: xx/xx/train2017.txt  # 上面我们生成的train,根据自己的路径进行更改
val: xx/xx/val2017.txt  # 上面我们生成的test
#test: ../coco/test-dev2017.txt  # 20k images for submission to https://competitions.codalab.org/competitions/20794
 
# number of classes
nc: 2   #训练的类别
 
# class names
names: ['apple','orange']

方法二

# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: data/coco128/images/train2017/  # 128 images
val: data/coco128/images/train2017/  # 128 images

# number of classes
nc: 2

# class names
names: ['apple','orange']

三、修改模型文件

修改models/xxx.yaml作为模型文件,搭建网络结构;
需要修改类别数nc为数据集包括的类别数。

# parameters
nc: 2  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple

# anchors
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

# YOLOv5 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Focus, [64, 3]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, BottleneckCSP, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 9, BottleneckCSP, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, BottleneckCSP, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 1, SPP, [1024, [5, 9, 13]]],
   [-1, 3, BottleneckCSP, [1024, False]],  # 9
  ]

# YOLOv5 head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, BottleneckCSP, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, BottleneckCSP, [256, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, BottleneckCSP, [512, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, BottleneckCSP, [1024, False]],  # 23 (P5/32-large)

   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

四、修改训练参数

  1. 训练模型
    终端中输入训练参数,进行训练;或直接运行train.py
python train.py --data coco.yaml --cfg yolov5s.yaml --weights '' --batch-size 64
                                         yolov5m                              48
                                         yolov5l                              32
                                         yolov5x                              16
  1. 可视化训练
tensorboard --logdir=runs

训练参数可以通过train.py文件修改
cfgdataweightsdeviceimg-size(训练和测试图片的大小)等

五、命令参数介绍

 python detect.py --source file.jpg  # image 
                            file.mp4  # video
                            ./dir  # directory
                            0  # webcam
                            rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa  # rtsp stream
                            http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8  # http stream
--cfg yolov5s.yaml --weights '':从头开始训练
--cfg yolov5s.yaml --weights yolov5s.pt:从预训练的模型加载开始训练

命令的中参数也可以通过train.py文件修改

python train.py --img 640 --batch 16 --epochs 5 --data ./data/coco128.yaml --cfg ./models/yolov5s.yaml --weights ''

训练的更多可选参数:

--epochs:训练的epoch,默认值300
--batch-size:默认值16
--cfg:模型的配置文件,默认为yolov5s.yaml
--data:数据集的配置文件,默认为data/coco128.yaml
--img-size:训练和测试输入大小,默认为[640, 640]
--rect:rectangular training,布尔值
--resume:是否从最新的last.pt中恢复训练,布尔值
--nosave:仅仅保存最后的checkpoint,布尔值
--notest:仅仅在最后的epoch上测试,布尔值
--evolve:进化超参数(evolve hyperparameters),布尔值
--bucket:gsutil bucket,默认值''
--cache-images:缓存图片可以更快的开始训练,布尔值
--weights:初始化参数路径,默认值''
--name:如果提供,将results.txt重命名为results_name.txt
--device:cuda设备,例如:00,1,2,3或cpu,默认''
--adam:使用adam优化器,布尔值
--multi-scale:改变图片尺寸img-size +/0- 50%,布尔值
--single-cls:训练单个类别的数据集,布尔值

六、tensorboard可视化

在命令行窗口输入

tensorboard --logdir=runs

然后把返回的url地址粘贴到浏览器中即可
注意:
如果返回拒绝了我们的请求,可以在tensorboard的后面加上参数–port ip:

tensorboard --logdir=runs --host=192.168.0.134

七、测试

测试命令

python test.py --weights yolov5s.pt --data ./data/coco.yaml --img 640
--weights :预训练模型路径,默认值weights/yolov5s.pt
--data:数据集的配置文件,默认为data/coco.yaml
--batch-size:默认值32
--img-size:推理大小(pixels),默认640
--conf-thres:目标置信度阈值,默认0.001
--iou-thres:NMS的IOU阈值,默认0.65
--save-json:把结果保存为cocoapi-compatible的json文件
--task:默认val,可选其他值:val, test, study
--device:cuda设备,例如:00,1,2,3或cpu,默认''
--half:半精度的FP16推理
--single-cls:将其视为单类别,布尔值
--augment:增强推理,布尔值
--verbose:显示类别的mAP,布尔值

训练结束后,会生成两个预训练的模型:
1.best.pt:保存的是中间一共比较好模型
2.last.pt:训练结束后保存的最后模型

八、推理

使用预训练的模型进行推理测试,YOLOv5支持多种数据源推理测试,如下:

  • 图像
  • 目录
  • 视频
  • 网络摄像头
  • http流
  • rtsp流
    关于推理的更多参数使用如下命令查看:
python detect.py -h
--weights :预训练模型.pt的路径,默认值为:weights/yolov5s.pt
--source:输入的数据源,可以是:图片、目录、视频、网络摄像头、http和rtsp流,默认值为:interence/images
--output: 输出检测结果的路径,默认值为:inference/output
--img-size :用于推理图片的大小(pixels),默认值为:640
--conf-thres:对象的置信度阈值(object confidence threshold),默认值为:0.4
--iou-thres :NMS的IOU阈值( IOU threshold for NMS),默认值为:0.5
--fourcc:输出视频的编码格式(必须是ffmepeg支持的),例如:H264格式,默认格式为:mp4v
--half: 使用版精度F16推理(half precision FP16 inference),布尔值,默认为true
--device:cuda设备,例如:00,1,2,3或cpu,默认''
--view-img :显示结果,‘布尔值,默认为true’
--save-txt :把结果保存到*.txt文件中
--classes:过滤类别 CLASSES [CLASSES …]filter by class
--agnostic-nms:类不可知 NMS
--augment:增强推理(augmented inference)
推理图像
python detect.py --source inference/1_input/1_img/bus.jpg --weights ./weights/yolov5s.pt --output inference/2_output/1_img/
推理目录
python detect.py --source inference/1_input/2_imgs --weights ./weights/yolov5s.pt --output inference/2_output/2_imgs
检测中有些图片置信度比较低的可以通过--conf-thres参数过滤掉
python detect.py --source inference/1_input/2_imgs --weights ./weights/yolov5s.pt --output inference/2_output/2_imgs --conf-thres 0.8
推理视频
python detect.py --source test.mp4 --weights ./weights/yolov5s.pt --output test_result/3_video
# 示例语法
python detect.py --source ./file.jpg  # 图片 
                          ./file.mp4  # 视频
                          ./dir  # 目录
                          0  # 网络摄像头
      'rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa' # rtsp流
      'http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8'  # http流
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Ubuntu 18.04是一种操作系统,而PyTorch是一个开源的深度学习框架,而YoloV5是一个基于PyTorch实现的目标检测算法。 在Ubuntu 18.04上安装PyTorchYoloV5可以通过以下步骤完成: 1. 安装Python:Ubuntu自带Python,可以通过终端命令检查当前安装的Python版本。确保工作环境中已经安装了Python3。 2. 安装PyTorch:可以通过官方网站提供的命令进行安装,比如使用pip命令:`pip3 install torch torchvision`。 3. 克隆YoloV5仓库:在终端中执行以下命令克隆YoloV5的GitHub仓库:`git clone https://github.com/ultralytics/yolov5.git`。 4. 安装依赖项:进入克隆下来的YoloV5文件夹,运行`pip3 install -r requirements.txt`命令安装YoloV5所需的依赖项。 5. 下载预训练模型:YoloV5需要一个预训练的权重文件。可以通过运行`python3 models/export.py --weights yolov5s.pt`命令来下载预训练模型。 6. 运行目标检测:在YoloV5的文件夹中,可以使用命令`python3 detect.py --source your_image.jpg`来对一张图像进行目标检测。将`your_image.jpg`替换为实际的图像文件路径即可。 通过以上步骤,你就可以在Ubuntu 18.04上使用PyTorchYoloV5进行目标检测了。当然,还可以进一步学习和探索YoloV5的其他功能和用法,以满足更多的需求。 ### 回答2: Ubuntu 18.04是一种操作系统,而pytorchyolov5是两个在Ubuntu 18.04上可以使用的工具。 Ubuntu 18.04是一个基于Linux的开源操作系统,它提供了稳定性和安全性,并且拥有广泛的软件支持。它适合用于各种计算机任务,包括机器学习和深度学习PyTorch是一个非常流行的用于构建深度学习模型的Python库。它提供了丰富的工具和函数,使得开发人员可以更轻松地创建、训练和评估模型。PyTorch在Ubuntu 18.04上可以通过包管理器进行安装,也可以通过源代码进行安装。 YOLOv5是一个基于深度学习的实时目标检测算法。它使用了PyTorch作为后端,可以用于检测图像和视频中的多个对象,并输出它们的位置和类别。YOLOv5可以在Ubuntu 18.04上使用PyTorch进行安装和运行。 要在Ubuntu 18.04上使用PyTorchYOLOv5,首先需要安装Python环境和PyTorch库。可以使用pip命令安装PyTorch,具体的安装步骤可以在PyTorch官方网站上找到。 安装完成后,需要下载YOLOv5的源代码并进行配置。可以从YOLOv5的GitHub页面上获取源代码,并按照说明进行设置。然后,可以使用PyTorch加载已经训练好的YOLOv5模型,并用它来对图像或视频进行目标检测。 总结来说,在Ubuntu 18.04上使用PyTorchYOLOv5进行目标检测,需要先安装PyTorch和配置YOLOv5的源代码。然后,可以使用PyTorch加载模型进行目标检测。这样就可以在Ubuntu 18.04上使用PyTorchYOLOv5进行目标检测了。 ### 回答3: Ubuntu 18.04是一个主流的Linux操作系统,而PyTorch是一个开源的深度学习框架,Yolov5是一种目标检测算法的版本。现在我来回答关于Ubuntu 18.04上安装PyTorch Yolov5的问题。 首先,要在Ubuntu 18.04上安装PyTorch,你可以通过使用pip包管理器来完成。你可以打开终端,并运行以下命令来安装最新版本的PyTorch: ``` pip install torch torchvision ``` 接下来,下载Yolov5的源代码。你可以在GitHub上找到官方仓库(https://github.com/ultralytics/yolov5),并将其克隆到你的机器上: ``` git clone https://github.com/ultralytics/yolov5.git ``` 然后,进入yolov5文件夹,并安装所需的依赖项: ``` cd yolov5 pip install -r requirements.txt ``` 安装完成后,你可以使用已经训练好的权重文件来测试Yolov5的性能,或者你也可以使用自己的数据训练一个新的模型。如果你有自己的数据集,你需要将它们准备好,并编辑相应的配置文件。 最后,你可以使用以下命令运行Yolov5检测: ``` python detect.py --source path/to/image/or/video ``` 这将会运行Yolov5算法,并对指定路径的图像或视频进行目标检测。 总结起来,安装PyTorch Yolov5需要在Ubuntu 18.04上安装PyTorchYOLOv5源代码,并进行相应的配置和数据准备工作,然后就可以使用Python命令来运行目标检测了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修炼清爽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值