【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

这篇具有很好参考价值的文章主要介绍了【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

云服务器训练YOLOv8-新手教程-哔哩哔哩


🍀2023.11.20 更新了划分数据集的脚本


在自定义数据上训练 YOLOv8 目标检测模型的步骤可以总结如下 6 步:

  1. 🌟收集数据集
  2. 🌟标注数据集
  3. 🌟划分数据集
  4. 🌟配置训练环境
  5. 🌟训练模型
  6. 🌟评估模型

1. 收集数据集

随着深度学习技术在计算机视觉领域的广泛应用,行人检测和车辆检测等任务已成为热门研究领域。然而,实际应用中,可用的预训练模型可能并不适用于所有应用场景。

例如,虽然预先训练的模型可以检测出行人,但它无法区分“好人”和“坏人”,因为它没有接受相关的训练。因此,我们需要为自定义检测模型提供足够数量的带有标注信息的图像数据,来训练模型以区分“好人”和“坏人”。

本文将介绍几种收集数据集的常见方法,帮助大家更好地解决实际问题。


1.1 使用开源已标记数据集

使用开源数据集是收集数据的最简便方式之一。例如,ImageNet是一个大型图像数据库,包含超过1400万张图像,可用于深度学习模型的训练。此外,像COCOPASCAL VOC这样的数据集也经常用于目标检测模型的训练和评估。但是这些数据库中的图像通常来自不同的领域和应用场景,因此可能无法完全满足特定研究的需求。

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】


1.2 爬取网络图像

另一种选择是通过网络搜索图像,并手动选择要下载的图像。然而,由于需要收集大量数据,因此此方法的效率较低。需要注意的是,网络上的图像可能受到版权保护。在使用这些图像之前,务必检查图像的版权信息。

或者,您可以编写一个程序来爬取网络并下载所需的图像,但是这需要对数据进行清洗,以确保数据质量。同样需要注意检查每个图像的版权信息。

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】


1.3 自己拍摄数据集

对于一些特定的应用场景,如自动驾驶和安防监控等,需要收集特定场景下的数据,这时候就需要进行自主拍摄。可以在实际场景中拍摄图像或视频,并对其进行标注,以获得适用于特定场景的高质量数据集。

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】


1.4 使用数据增强生成数据集

我们知道深度学习模型需要大量的数据。当我们只有一个小数据集时,可能不足以训练一个好的模型。在这种情况下,我们可以使用数据增强来生成更多训练数据。

常见的增强方式就是几何变换,类似翻转、裁剪、旋转和平移这些。

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

左边是狗的原始图像,右边是水平翻转的图像

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

猫的原始和随机裁剪图像

1.5 使用算法合成图像

最后一种获取目标检测数据集的方法是使用合成图像。合成图像是通过使用图像处理软件(例如Photoshop)在图像中添加对象、更改背景或合成多个图像以创建新的图像。这种方法可以提供一些特殊情况或无法通过其他方式获得的图像,但是合成图像通常无法完全代替真实场景的数据,可能会对模型的准确性产生一定的影响。

或者我们可以使用生成对抗网络 (GAN) 来生成数据集。
【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

值得注意的是,收集训练数据集只是我们训练自定义检测模型的第一步。。。接下来我们要介绍如何标注数据集,当然这一步是假设你的图片已经准备完成。

本次案例依然使用我个人的月饼数据集

下载地址:https://download.csdn.net/download/weixin_43694096/87094367

链接:https://pan.baidu.com/s/1mSH0eGIk0KNJ16-SC6Zx0Q
提取码:nm73

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】


2. 标注数据集

为什么要标注数据集?标注好的数据集有什么作用呢?
答:为了让计算机学会正确地识别物体,我们需要提供大量的标注数据集,这些数据集包含了图像或视频中物体的位置和类别信息。
标注数据集的作用在于,它可以帮助计算机学习到如何识别不同种类的物体,并且能够正确地定位它们的位置。通过标注数据集,我们可以让计算机逐渐学会如何识别和分类不同种类的物体,例如人、车、动物等等。这些数据集可以被用来训练深度学习模型,让模型学会如何识别新的图像或视频中的物体。

举个简单例子:比如说,我们想要让计算机自动识别图像中的猫和狗。为了让计算机学会如何识别这两个物体,我们需要提供一些图像样本,并在这些样本上标注猫和狗的位置。
如果我们没有标注数据集,计算机就无法学习到如何识别猫和狗。即使我们给计算机提供了大量的图像,它也无法准确地区分这两个物体。但是,如果我们有了标注数据集,计算机就可以通过学习这些数据来理解猫和狗之间的差异,并且可以在新的图像中准确地识别它们。
(当然这个例子指的是监督学习)


2.1 确认标注格式

YOLOv8 所用数据集格式与 YOLOv5 YOLOv7 相同,采用格式如下:

<object-class-id> <x> <y> <width> <height>

常用的标注工具有很多,比如LabelImgLabelMeVIA等,但是这些工具都需要安装使用,我这里给大家介绍一款在线标注数据集的工具Make Sense,打开即用,非常的便捷,在标注之前,我们来看一下一般情况下遵循的标注规则

  1. 目标框必须框住整个目标物体,不能有遗漏和重叠。
  2. 目标框应该与目标物体尽可能接近,但不能与目标物体重合。
  3. 目标框的宽度和高度应该为正数,不能为零或负数。
  4. 如果一张图片中有多个目标物体,每个目标物体应该用一个独立的目标框进行标注,不允许多个目标共用一个框。
  5. 如果目标物体的形状不规则,可以使用多个框进行标注,但必须框住整个目标物体。
  6. 目标框的坐标必须在数据集中统一。

2.2 开始标注

确认好标注格式后我们就可以开始标注了,进入网页后点击 Get Started 开始使用。

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

首先点击 Drop images 然后 Ctrl+A 选中整个数据集里面的图片。

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

随后添加标签信息,有几类就添加几个,因为我这里只检测月饼一类,所以只添加一个标签 Moon Cake

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

随后就进入了漫长的标注环节,这里大家一定要认真标注,不然对最终模型的影响还是很大的。

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】
【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

大约 3 3 3 个小时以后就标注完毕了。。。。

我们点击Action -> Export Annotation 导出 yolo 格式的标签文件。

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

导出之后的标签文件就是这个样子的,我们可以随机抽查几个看看有没有问题。

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】


3. 划分数据集

也就是说,我们现在导出后的图片和标签是这个样子的:

Moon_Cake
	├─images
	   └─all
	└─labels
	   └─all

但是 YOLOv8 所需要的数据集路径的格式是下面这样子的(YOLOv8支持不止这一种格式),我们接下来要通过脚本来来划分一下数据集:

├── yolov8_dataset
	└── train
		└── images (folder including all training images)
		└── labels (folder including all training labels)
	└── test
		└── images (folder including all testing images)
		└── labels (folder including all testing labels)
	└── valid
		└── images (folder including all testing images)
		└── labels (folder including all testing labels)

具体其实只要修改路径就行了,代码我都做了注释。

# by CSDN 迪菲赫尔曼
import os
import random
import shutil

def copy_files(src_dir, dst_dir, filenames, extension):
    os.makedirs(dst_dir, exist_ok=True)
    missing_files = 0
    for filename in filenames:
        src_path = os.path.join(src_dir, filename + extension)
        dst_path = os.path.join(dst_dir, filename + extension)
        
        # Check if the file exists before copying
        if os.path.exists(src_path):
            shutil.copy(src_path, dst_path)
        else:
            print(f"Warning: File not found for {filename}")
            missing_files += 1

    return missing_files

def split_and_copy_dataset(image_dir, label_dir, output_dir, train_ratio=0.7, valid_ratio=0.15, test_ratio=0.15):
    # 获取所有图像文件的文件名(不包括文件扩展名)
    image_filenames = [os.path.splitext(f)[0] for f in os.listdir(image_dir)]

    # 随机打乱文件名列表
    random.shuffle(image_filenames)

    # 计算训练集、验证集和测试集的数量
    total_count = len(image_filenames)
    train_count = int(total_count * train_ratio)
    valid_count = int(total_count * valid_ratio)
    test_count = total_count - train_count - valid_count

    # 定义输出文件夹路径
    train_image_dir = os.path.join(output_dir, 'train', 'images')
    train_label_dir = os.path.join(output_dir, 'train', 'labels')
    valid_image_dir = os.path.join(output_dir, 'valid', 'images')
    valid_label_dir = os.path.join(output_dir, 'valid', 'labels')
    test_image_dir = os.path.join(output_dir, 'test', 'images')
    test_label_dir = os.path.join(output_dir, 'test', 'labels')

    # 复制图像和标签文件到对应的文件夹
    train_missing_files = copy_files(image_dir, train_image_dir, image_filenames[:train_count], '.jpg')
    train_missing_files += copy_files(label_dir, train_label_dir, image_filenames[:train_count], '.txt')

    valid_missing_files = copy_files(image_dir, valid_image_dir, image_filenames[train_count:train_count + valid_count], '.jpg')
    valid_missing_files += copy_files(label_dir, valid_label_dir, image_filenames[train_count:train_count + valid_count], '.txt')

    test_missing_files = copy_files(image_dir, test_image_dir, image_filenames[train_count + valid_count:], '.jpg')
    test_missing_files += copy_files(label_dir, test_label_dir, image_filenames[train_count + valid_count:], '.txt')

    # Print the count of each dataset
    print(f"Train dataset count: {train_count}, Missing files: {train_missing_files}")
    print(f"Validation dataset count: {valid_count}, Missing files: {valid_missing_files}")
    print(f"Test dataset count: {test_count}, Missing files: {test_missing_files}")

# 使用例子
image_dir = 'datasets/coco128/images/train2017'
label_dir = 'datasets/coco128/labels/train2017'
output_dir = './my_dataset'

split_and_copy_dataset(image_dir, label_dir, output_dir)

运行完脚本后我们的数据集就会划分成这个格式了,现在数据准备工作就彻底完成了,接下来我们开始着手训练模型。

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】


4. 配置训练环境

4.1 获取代码

git clone https://github.com/ultralytics/ultralytics

针对网络不好的同学,我这里上传了一份:点击下载

4.2 安装环境

cd ultralytics
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

如果你不想使用 4.1 的获取源码指令,直接用CLI指令推理,那你可以使用如下的指令直接安装ultralytics包,这两种方式在更改项目代码时的操作是不同的。我推荐 pip install -r requirements.txt 这种方式,如果在改进代码时遇到了问题,请看我这篇博文

pip install ultralytics

5. 训练模型

5.1 新建一个数据集yaml文件

这个是我新建的,里面写绝对路径(主要是怕出错):

# moncake
train: D:\Pycharm_Projects\ultralytics\ultralytics\datasets\mooncake\train  # train images (relative to 'path') 128 images
val: D:\Pycharm_Projects\ultralytics\ultralytics\datasets\mooncake\valid # val images (relative to 'path') 128 images
test: D:\Pycharm_Projects\ultralytics\ultralytics\datasets\mooncake\test # test images (optional)

# Classes
names:
  0: MoonCake

这个是自带的,里面写相对路径,和我们的写法不同,但是都可以使用,据我所只还有很多种数据集读取方式:

# coco128
path: ../datasets/coco128  # dataset root dir
train: images/train2017  # train images (relative to 'path') 128 images
val: images/train2017  # val images (relative to 'path') 128 images
test:  # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  '''
  '''
  79: toothbrush

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

相应的数据集位置就在这里,我们可以和coco128对比一下,这两种划分格式都可以的,这里一定要注意路径问题!


YOLOv8提供CLIpython两种训练方式,
CLI就是直接在终端运行指令
python需要你新建一个python文件,然后运行代码


5.2 预测模型

这是官方提供的一些命令行方式,下面我们分开来介绍一下:

CLI 指令推理方式:

yolo task=detect    mode=train    model=yolov8n.pt        args...
          classify       predict        yolov8n-cls.yaml  args...
          segment        val            yolov8n-seg.yaml  args...
                         export         yolov8n.pt        format=onnx  args...

python 指令推理方式:

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load an official model
model = YOLO('path/to/best.pt')  # load a custom model

# Predict with the model
results = model('https://ultralytics.com/images/bus.jpg')  # predict on an image


终端中直接键入以下指令就可以实现对图进行推理了,推理后如果不指定文件夹,就会默认保存到runs/detect/predict下。

yolo task=detect mode=predict model=yolov8n.pt source=data/images device=0 save=True

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】
就这张图来说,v8确实比v5牛🍺,左上角的标志都检测出来了,但是阳台上的自行车还是没检测出来。


YOLOv8 关于模型的各种参数其实都写到了一起,在ultralytics/yolo/cfg/default.yaml,这是与先前版本最大的不同,通过使用这些指令我们就可以实现各种我们所需的操作。

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

参数名 默认值 说明
source 图像或视频所在的目录
show False 如果可能,显示结果
save_txt False 将结果保存为.txt文件
save_conf False 保存带置信度得分的结果
save_crop False 保存裁剪后带结果的图像
show_labels True 在绘图中显示对象标签
show_conf True 在绘图中显示对象置信度得分
vid_stride 1 视频帧率跨度
line_thickness 3 边界框的厚度(像素)
visualize False 可视化模型特征
augment False 对预测源应用图像增强
agnostic_nms False 类无关NMS
classes 空列表 按类别筛选结果,例如:class = 0或class = [0,2,3]
retina_masks False 使用高分辨率分割掩模
boxes True 在分割预测中显示边界框

5.3 训练模型

模型训练阶段的原理和预测步骤一致,都可以直接通过命令行搞定,关于这部分参数依然在ultralytics/yolo/cfg/default.yaml中,但我们要训练自己的数据集时记得在 data 参数后指定我们自己的数据集yaml文件路径哦。

以下提供三种指令,分别对应了不同的需求。(这里有一点值得注意, 我直接写data=MoonCake.yaml是报错的!这个涉及到一个坑的问题,没遇到的同学暂且忽略)


CLI 指令训练方式:

# 从YAML构建一个新模型,从头开始训练
yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640
yolo detect train data=ultralytics/datasets/MoonCake.yaml model=yolov8n.yaml epochs=100 imgsz=640

# 从预训练的*.pt模型开始训练
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640
yolo detect train data=ultralytics/datasets/MoonCake.yaml model=yolov8n.pt epochs=100 imgsz=640

# 从YAML中构建一个新模型,将预训练的权重转移到它并开始训练
yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640
yolo detect train data=ultralytics/datasets/MoonCake.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640

Python 指令训练方式:

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.yaml')  # build a new model from YAML
model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # build from YAML and transfer weights

# Train the model
model.train(data='coco128.yaml', epochs=100, imgsz=640)


【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

参数 默认值 描述
model 模型文件路径,如yolov8n.pt,yolov8n.yaml
data 数据文件路径,如coco128.yaml
epochs 100 训练的轮数
patience 50 等待没有观察到改进的轮数,以便提前停止训练
batch 16 每个批次的图像数量(-1表示自动批处理)
imgsz 640 输入图像的大小,可以是整数或w,h
save True 保存训练检查点和预测结果
save_period -1 每x个轮数保存检查点(如果<1,则禁用)
cache False True / ram,磁盘或False。使用缓存加载数据
device 运行的设备,如cuda device=0或device=0,1,2,3或device=cpu
workers 8 加载数据的工作线程数(每个RANK如果DDP)
project 项目名称
name 实验名称,结果保存到“project / name”目录中
exist_ok False 是否覆盖现有实验
pretrained False 是否使用预训练模型
optimizer SGD 要使用的优化器,choices=[‘SGD’, ‘Adam’, ‘AdamW’, ‘RMSProp’]
verbose True 是否打印详细输出
seed 0 用于可重复性的随机种子
deterministic True 是否启用确定性模式
single_cls False 将多类数据训练为单类
image_weights False 使用加权图像选择进行训练
rect False 如果mode ='train’则进行矩形训练,如果mode ='val’则进行矩形验证
cos_lr False 使用余弦学习率调度程序
close_mosaic 10 对于最后10个轮数禁用马赛克增强
resume False 从上一个检查点恢复训练
amp True 自动混合精度(AMP)训练,choices=[True, False],True运行AMP检查

在训练过程中(训练结束后也可以看)我们可以通过Tensorboard实时查看模型的训练进度, 只需要在终端中键入如下的指令,这个在我们每次训练时候都会有提示:

tensorboard --logdir runs\detect\train2

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

训练结束后我们可以查看得到的一些指标数据:

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】
我这里展示一张PR曲线图。


5.4 验证模型

验证模型同样是简单命令行即可实现,如果没有修改中的 ultralytics/yolo/cfg/default.yaml 默认值,同样别忘了指定自己数据集的yaml,即data=ultralytics/datasets/MoonCake.yaml


CLI 指令验证方式:

yolo task=detect mode=val model=yolov8n.pt
# mode=val 就是看验证集
yolo task=detect mode=val split=val model=runs/detect/train2/weights/best.pt  data=ultralytics/datasets/MoonCake.yaml
# mode=test 就是看测试集
yolo task=detect mode=val split=test model=runs/detect/train2/weights/best.pt  data=ultralytics/datasets/MoonCake.yaml

python 指令验证方式:

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load an official model
model = YOLO('path/to/best.pt')  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map    # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps   # a list contains map50-95 of each category


【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】
同样的,我们验证完后依然可以得到一个文件夹:
【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】
我们可以看一下检测效果:

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

嗯~ 古德古德~

参数名 默认值 描述
val True 在训练过程中进行验证/测试
split val 用于验证的数据集划分,可选项有’val’、‘test’或’train’
save_json False 是否将结果保存为JSON文件
save_hybrid False 是否保存标签的混合版本(标签+额外的预测结果)
conf 0.25(predict),0.001(val) 检测的物体置信度阈值(默认值),在训练和验证过程中使用不同的阈值
iou 0.7 非极大值抑制(NMS)的交并比(IoU)阈值
max_det 300 每个图像最多检测出的目标数量
half False 是否使用半精度(FP16)
dnn False 是否使用OpenCV DNN进行ONNX推理
plots True 在训练/验证过程中是否保存图表

5.5 导出模型

只需使用如下命令,就可完成模型的导出。


CLI 指令导出方式:

yolo task=detect mode=export model=runs/detect/train/weights/best.pt

python 指令导出方式:

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load an official model
model = YOLO('path/to/best.pt')  # load a custom trained

# Export the model
model.export(format='onnx')


导出有关的具体参数如下:
【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

参数名 默认值 描述
format torchscript 导出的模型格式
keras False 是否使用Keras
optimize False TorchScript: 是否针对移动设备进行优化
int8 False CoreML/TF的INT8量化
dynamic False ONNX/TF/TensorRT: 是否动态轴
simplify False ONNX: 是否简化模型
opset ONNX: 操作版本(可选)
workspace 4 TensorRT: 工作空间大小(GB)
nms False CoreML: 是否添加NMS

注:TorchScript是PyTorch的模型导出工具。INT8(8位整数量化)是一种量化方法,可将神经网络参数表示为8位整数,以降低存储和计算成本。ONNX(Open Neural Network Exchange)是一种跨平台、开放式的机器学习框架。TensorRT是一种用于加速深度学习推理的高性能引擎。CoreML是苹果公司推出的机器学习框架。Keras是一种流行的深度学习框架。


至此使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】就完成了,欢迎大家一起交流学习~

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】


🍀 2023.6.23 新增 python 推理、训练、验证、导出、方式代码。

YOLOv8 Bug 及解决方案汇总 【6.23更新】【训练 & 断点续训】文章来源地址https://www.toymoban.com/news/detail-413819.html

到了这里,关于【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【目标检测算法实现之yolov8】yolov8训练并测试VisDrone数据集

    在这之前,需要先准备主机的环境,环境如下: Ubuntu18.04 cuda11.3 pytorch:1.11.0 torchvision:0.12.0 在服务器上执行以下命令, pytorch v1.11.0(torch1.11.0+cu1113 ,torchvision0.12.0+cu113) 先创建yolov8文件夹,存放等会要下载的yolov8代码 mkdir yolov8 进入yolov8文件夹, cd yolov8 下载yolov8代码 git cl

    2024年02月13日
    浏览(38)
  • 在自定义数据集上训练 YOLOv8 进行目标检测

    这是目标检测中令人惊叹的 AI 模型之一。在这种情况下,您无需克隆存储库、设置要求并配置模型,就像在 YOLOv5 及其之前的版本中所做的那样。 在 YOLOv8 中,不需要执行这些手动任务。您只需安装 Ultralytics 即可,我将向您展示如何通过一个简单的命令安装它。 这是一个提

    2024年02月01日
    浏览(43)
  • YOLOv5目标检测:ubuntu1804从零开始使用YOLOv5训练自己的数据集(亲测有效,一步一步来一定行)

    (1)首先需要安装Anaconda,这个网上教程太多了,下载最新版本就行,在这里就不在赘述了。 (2)安装Pytorch 1. 首先创建python3.6以上版本的conda环境,在这里我用的是python3.8,环境名称为mypytorch 2. 激活创建好的conda环境 3.在PyTorch官网上选择指定版本安装Pytorch Install PyTorch: h

    2024年02月19日
    浏览(54)
  • 【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制

    📢前言: 本篇是关于 如何使用YoloV5+Deepsort训练自己的数据集 ,从而实现目标检测与目标追踪,并绘制出物体的运动轨迹。本章讲解的为第一个内容:简单介绍YoloV5+Deepsort中所用到的 目标检测,追踪及sortDeppsort算法。 本文中用到的数据集均为自采,实验动物为斑马鱼。 文尾

    2024年02月14日
    浏览(47)
  • 基于YOLOv8深度学习的葡萄簇目标检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

    《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌ 更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍 感谢小伙伴们点赞、关注! 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】

    2024年01月19日
    浏览(111)
  • 从0开始yolov8模型目标检测训练

    首先有大环境,即已经准备好了python、nvidia驱动、cuda、cudnn等。 2.1 创建虚拟环境 2.2 激活虚拟环境 注意:激活虚拟环境的时候,需要清楚自己创建的虚拟环境(yolov8)是在root权限下,还是在user权限下,否则,当使用source activate yolov8激活环境的时候,可能一直会提示Could n

    2024年02月12日
    浏览(33)
  • 目标检测再升级!YOLOv8模型训练和部署

    YOLOv8 是 Ultralytics 开发的 YOLO(You Only Look Once)物体检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的SOTA模型,它建立在先前YOLO成功基础上,并引入了新功能和改进,以进一步提升性能和灵活性。它可以在大型数据集上进行训练,并且能够在各种硬件平台上运行

    2024年01月20日
    浏览(37)
  • Yolov8改进模型后使用预训练权重迁移学习训练自己的数据集

    yolov8 github下载 1、此时确保自己的数据集格式是yolo 格式的(不会的去搜教程转下格式)。 你的自制数据集文件夹摆放 主目录文件夹摆放 自制数据集data.yaml文件路径模板 2、把data.yaml放在yolov8–ultralytics-datasets文件夹下面 3、然后模型配置改进yaml文件在主目录新建文件夹v8_

    2024年02月06日
    浏览(45)
  • 【Yolov5+Deepsort】训练自己的数据集(3)| 目标检测&追踪 | 轨迹绘制 | 报错分析&解决

    📢前言: 本篇是关于 如何使用YoloV5+Deepsort训练自己的数据集 ,从而实现目标检测与目标追踪,并绘制出物体的运动轨迹。本章讲解的为第三部分内容:数据集的制作、Deepsort模型的训练以及动物运动轨迹的绘制。本文中用到的数据集均为自采,实验动物为斑马鱼。 💻环境

    2024年02月10日
    浏览(40)
  • 基于YOLOv8深度学习的吸烟/抽烟行为检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

    《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌ 更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍 感谢小伙伴们点赞、关注! 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】

    2024年02月04日
    浏览(138)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包