快速使用YOLOv8进行训练,以及进行预测,包括视频预测

YOLO发展到YOLOv8,已经非常方便了,不管是训练,还是预测,还是图像的预测,不论是性能还是精确度,都有了很大的提升。

话不多说,直接开始yolov8的训练,

一、

1、首先需要配置yaml文件,这个yaml文件是你要训练的数据集的参数,类似django的setting,说白了,就是一个配置文件,这里是部分配置文件的代码

# 数据集配置
path: ../datasets/coco  # 数据集的路径
train: images/train  # 训练集的图像路径
val: images/val  # 验证集的图像路径

# 类别配置
nc: 80  # 类别数量
names:  # 类别名称
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  # ...其余类别

# 模型配置
model: yolov8n.yaml  # 使用的YOLOv8模型配置文件(可以是yolov8n.yaml, yolov8s.yaml, yolov8m.yaml, yolov8l.yaml, yolov8x.yaml)

# 训练配置
epochs: 300  # 训练轮数
batch: 16  # 每批次的样本数量
imgsz: 640  # 输入图像的大小
device: 0  # 使用的设备,0表示使用第一个GPU,-1表示使用CPU
workers: 8  # 数据加载的并行工作数

# 优化器配置
optimizer: Adam  # 使用的优化器(可以是Adam, SGD等)
lr0: 0.01  # 初始学习率
lrf: 0.01  # 最终学习率
momentum: 0.937  # 优化器的动量参数
weight_decay: 0.0005  # 权重衰减

# 数据增强配置
augment: True  # 是否使用数据增强
hsv_h: 0.015  # HSV色调变化范围
hsv_s: 0.7  # HSV饱和度变化范围
hsv_v: 0.4  # HSV明度变化范围
degrees: 0.0  # 旋转角度变化范围
translate: 0.1  # 平移变化范围
scale: 0.5  # 缩放变化范围
shear: 0.0  # 剪切变化范围
perspective: 0.0  # 透视变化范围
flipud: 0.0  # 上下翻转概率
fliplr: 0.5  # 左右翻转概率
mosaic: 1.0  # 拼接增强概率
mixup: 0.0  # 混合增强概率

# 可视化配置
save_period: -1  # 保存权重的周期,-1表示每轮保存一次
cache: False  # 是否缓存数据
project: runs/train  # 训练结果的保存路径
name: exp  # 实验名称
exist_ok: False  # 是否允许存在同名文件夹

2、如果快速开始,只需要配置这几个即可,其他默认就可以了

# 数据集配置
path: ../datasets/coco  # 数据集的路径
train: images/train  # 训练集的图像路径
val: images/val  # 验证集的图像路径
test: images/test  # 测试集的图像路径

# 类别配置
names:
  0: prohibitory
  1: danger
  2: mandatory
  3: other

3、这里配置好之后,自己的数据集文件夹的格式需要满足这种

E:/path/
  └── images/
      ├── train/
      │   ├── img1.jpg
      │   └── img2.jpg
      ├── valid/
      │   ├── img1.jpg
      │   └── img2.jpg
      └── test/
          ├── img1.jpg
          └── img2.jpg

4、这里没有配置label的路径,如果label的路径在image同级,而且目录结构和上面这个图一样,就不用配置,如果不一样需要再yaml里面配置一下。

label需要是txt格式,满足这种格式

class_id center_x center_y width height
# 即下面这种
2 0.6977941176470588 0.6675 0.0838235294117647 0.145

具体格式说明如下:

  1. class_id:类别的整数ID,从0开始。例如,如果你有3个类别(猫、狗、人),它们的ID可能是0, 1, 2。
  2. center_x:目标边界框的中心点x坐标,归一化到[0, 1]之间。即,图像宽度为1。
  3. center_y:目标边界框的中心点y坐标,归一化到[0, 1]之间。即,图像高度为1。
  4. width:目标边界框的宽度,归一化到[0, 1]之间。
  5. height:目标边界框的高度,归一化到[0, 1]之间。

二、

1、所有准备工作准备好指挥,就可以开始训练了,需要pip安装好torch和torchvision,以及ultralytics,注意,这里的data_config.yaml就是上面第一步配置好的yaml文件,其他默认,根据任务不同选择不同的model,即pt文件

if __name__ == '__main__':
    from ultralytics import YOLO
    # model = YOLO("yolov8s.yaml")
    model = YOLO("yolov8s.pt") 
    model.train(data="data_config.yaml", epochs=30) 

2、训练完毕之后,YOLOv8默认会将训练的各种图像,pr,rc这些图保存到runs文件夹中,默认保存最好的模型和最后一次训练的模型到runs文件夹中,加载最好的模型进行预测,这里先进行视频的预测


from ultralytics import YOLO

if __name__ == '__main__':
    # 加载训练好的模型
    model = YOLO('runs/detect/train8/weights/best.pt')

    # 设置视频路径
    video_path = r'E:\Work\\data\traffic-sign-to-test.mp4'


    # 开始检测并保存结果
    results = model.predict(source=video_path, save=True, show=True)

3、图像的预测(注意替换路径),这里视频和图像都会在预测之后的结果保存到图像的同级目录下面


from ultralytics import YOLO

if __name__ == '__main__':
    # 加载训练好的模型
    model = YOLO('runs/detect/train8/weights/best.pt')

    # 设置图像路径
    image_path = r'E:\Work\data\traffic-sign-to-test.jpg'



    # 开始检测并保存结果
    results = model.predict(source=image_path, save=True, show=True)


  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLOv8训练自己的数据集并进行检测,可以按照以下步骤进行操作: 1. 数据集准备: - 收集并标注自己的图像数据集,确保每个图像上都有要检测的对象,并为每个对象添加边界框。 - 将数据集分为训练集和验证集,通常采用80%的图像作为训练集,20%的图像作为验证集。 - 创建类别标签文件,列出数据集中所有对象的类别名称。 2. 配置文件: - 克隆YOLOv8的代码仓库,例如Darknet或YOLOv5。 - 修改配置文件,设置以下参数: - `classes`:将它设置为数据集中对象类别的数量。 - `train`和`valid`路径:将其设置为训练集和验证集的图像路径。 - `names`:将其设置为类别标签文件的路径。 - `backup`:设置为保存训练权重的路径。 3. 模型训练: - 使用命令行运行训练脚本,指定配置文件和初始权重。 - 例如,在Darknet中,可以运行以下命令:`./darknet detector train data/obj.data cfg/yolov4-custom.cfg yolov4.conv.137` - 等待训练完成,期间可以观察到训练损失的变化。根据需要可以调整训练轮数和其他超参数。 4. 模型评估: - 使用验证集评估模型的性能。运行测试脚本并提供相应的配置文件和训练后的权重。 - 例如,在YOLOv5中,可以运行以下命令:`python detect.py --weights weights/last.pt --img 640 --conf 0.25 --source data/val` - 观察输出结果,可以计算预测框与标注框之间的IoU(交并比)以评估模型的准确性。 5. 目标检测: - 使用训练后的模型进行目标检测。提供相应的配置文件和训练后的权重。 - 例如,在YOLOv5中,可以运行以下命令:`python detect.py --weights weights/best.pt --img 640 --conf 0.25 --source data/test`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值