Yolov8用法

  • 模型路径,名字为版本的文件夹,识别的类数目nc在这里修改:E:\ultralytics\ultralytics\cfg\models\
  • 模型运行的参数修改,包括batch_size、使用设备编号等:E:\ultralytics\ultralytics\cfg\default.yaml
  • 数据集存放路径:E:\ultralytics\ultralytics\dataset
  • 设置数据集路径,就是在存放数据集的文件夹下新建一个yaml文件写:E:\ultralytics\ultralytics\dataset\cell\cell.yaml
  • 结果输出目录:E:\ultralytics\runs

  • 数据集路径指定文件的示例:
# polarbody
train: E:\ultralytics\ultralytics\dataset\polarbody\train
val: E:\ultralytics\ultralytics\dataset\polarbody\valid
test: E:\ultralytics\ultralytics\dataset\polarbody\test

# Classes
names:
  0: polarbody

  • 训练(以目标检测为例):

文件:E:\ultralytics\ultralytics\models\yolo\detect\train.py
需增加的代码示例:

from ultralytics.utils import DEFAULT_CFG, RANK
def train(cfg=DEFAULT_CFG, use_python=False):
    """Train a YOLO segmentation model based on passed arguments."""
    model = cfg.model or 'yolov8s.pt'
    data = cfg.data or r'E:\ultralytics\ultralytics\dataset\polarbody\polarbody.yaml'
    device = cfg.device if cfg.device is not None else ''
    args = dict(model=model, data=data, device="cpu", epochs=300)
    trainer = DetectionTrainer(overrides=args)
    trainer.train()

if __name__ == '__main__':
    train()

  • 评估(以目标检测为例):

文件:E:\ultralytics\ultralytics\models\yolo\detect\val.py
需增加的代码示例:自己看着来,参考训练和评估就能写出来

  • 预测(以目标检测为例):

文件:E:\ultralytics\ultralytics\models\yolo\detect\predict.py
需增加的代码示例:

from ultralytics.utils import ASSETS, DEFAULT_CFG, ops
def predict(cfg=DEFAULT_CFG, use_python=False):
    """Runs YOLO object detection on an image or video source."""
    model = cfg.model or r'E:\ultralytics\runs\detect\train12\weights\best.pt'
    source = r"E:\ultralytics\ultralytics\dataset\polarbody\test\images"
    args = dict(model=model, source=source)
    if use_python:
        from ultralytics import YOLO
        YOLO(model)(**args)
    else:
        predictor = DetectionPredictor(overrides=args)
        predictor.predict_cli()

if __name__ == '__main__':
    predict()

  • 【辅助】
  • 训练集、验证集、测试集分割代码:
import os
import random
import shutil

# 原数据集目录
root_dir = r'E:\ultralytics\ultralytics\dataset\polarbody'
# 划分比例
train_ratio = 0.8
valid_ratio = 0.1
test_ratio = 0.1

# 设置随机种子
random.seed(42)

# 拆分后数据集目录
split_dir = r'E:\ultralytics\ultralytics\dataset\polarbody'
os.makedirs(os.path.join(split_dir, 'train/images'), exist_ok=True)
os.makedirs(os.path.join(split_dir, 'train/labels'), exist_ok=True)
os.makedirs(os.path.join(split_dir, 'valid/images'), exist_ok=True)
os.makedirs(os.path.join(split_dir, 'valid/labels'), exist_ok=True)
os.makedirs(os.path.join(split_dir, 'test/images'), exist_ok=True)
os.makedirs(os.path.join(split_dir, 'test/labels'), exist_ok=True)

# 获取图片文件列表
image_files = os.listdir(os.path.join(root_dir, 'images'))
label_files = os.listdir(os.path.join(root_dir, 'labels'))

# 随机打乱文件列表
combined_files = list(zip(image_files, label_files))
random.shuffle(combined_files)
image_files_shuffled, label_files_shuffled = zip(*combined_files)

# 根据比例计算划分的边界索引
train_bound = int(train_ratio * len(image_files_shuffled))
valid_bound = int((train_ratio + valid_ratio) * len(image_files_shuffled))

# 将图片和标签文件移动到相应的目录
for i, (image_file, label_file) in enumerate(zip(image_files_shuffled, label_files_shuffled)):
    if i < train_bound:
        shutil.move(os.path.join(root_dir, 'images', image_file), os.path.join(split_dir, 'train/images', image_file))
        shutil.move(os.path.join(root_dir, 'labels', label_file), os.path.join(split_dir, 'train/labels', label_file))
    elif i < valid_bound:
        shutil.move(os.path.join(root_dir, 'images', image_file), os.path.join(split_dir, 'valid/images', image_file))
        shutil.move(os.path.join(root_dir, 'labels', label_file), os.path.join(split_dir, 'valid/labels', label_file))
    else:
        shutil.move(os.path.join(root_dir, 'images', image_file), os.path.join(split_dir, 'test/images', image_file))
        shutil.move(os.path.join(root_dir, 'labels', label_file), os.path.join(split_dir, 'test/labels', label_file))

yolov8是一个目标检测算法,使用方法如下: 1.首先需要进入yolov8的虚拟环境,可以使用命令:conda activate yolov8。 2.然后进入yolov8的目录,使用命令:cd yolov8。 3.接着使用命令:python detect.py --source <图片或视频路径> --weights <权重文件路径> --conf <置信度阈值> --output <输出路径> 来进行目标检测。其中,--source指定输入的图片或视频路径,--weights指定权重文件路径,--conf指定置信度阈值,--output指定输出路径。 4.如果需要对多个图片或视频进行目标检测,可以使用命令:python detect.py --source <图片或视频文件夹路径> --weights <权重文件路径> --conf <置信度阈值> --output <输出路径> --img-size <图片大小> --save-txt 来进行批量处理。其中,--source指定输入的图片或视频文件夹路径,--weights指定权重文件路径,--conf指定置信度阈值,--output指定输出路径,--img-size指定图片大小,--save-txt指定是否保存检测结果的txt文件。 5.如果需要使用yolov8进行训练,可以使用命令:python train.py --data <数据集配置文件路径> --cfg <模型配置文件路径> --weights <预训练权重文件路径> --batch-size <批量大小> --epochs <训练轮数> --img-size <图片大小> --device <设备号> --multi-scale 来进行训练。其中,--data指定数据集配置文件路径,--cfg指定模型配置文件路径,--weights指定预训练权重文件路径,--batch-size指定批量大小,--epochs指定训练轮数,--img-size指定图片大小,--device指定设备号,--multi-scale指定是否使用多尺度训练
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值