【YOLO】YOLOv8实操:环境配置/自定义数据集准备/模型训练/预测

2023-05-16

YOLOv8实操:环境配置/自定义数据集准备/模型训练/预测

  • 引言
  • 1 环境配置
  • 2 数据集准备
  • 3 模型训练
  • 4 模型预测

引言

源码链接:https://github.com/ultralytics/ultralytics
yolov8和yolov5是同一作者,相比yolov5,yolov8的集成性更好了,更加面向用户了
YOLO命令行界面(command line interface, CLI) 方便在各种任务和版本上训练、验证或推断模型。CLI不需要定制或代码,可以使用yolo命令从终端运行所有任务。

如果想了解yolo系列的更新迭代,以及yolov8的模型结构,推荐下面的链接:
YOLOv8详解 【网络结构+代码+实操】
笔者直接从实操入手

1 环境配置

安装pytorch、torchvision和其他依赖库

环境配置部分可以参考笔者的博客
【YOLO】YOLOv5-6.0环境搭建(不定时更新)

安装ultralytics

git clone https://github.com/ultralytics/ultralytics
cd ultralytics
pip install -e .

2 数据集准备

针对检测的数据集准备可以参考笔者的博客,这里不再赘述了
【YOLO】训练自己的数据集

3 模型训练

比起YOLOv5,YOLOv8的训练封装性更好了,有利有弊吧,参数默认值修改比较麻烦

训练指令如下:

yolo task=detect mode=train model=yolov8s.pt data=/media/ll/L/llr/DATASET/subwayDatasets/coco.yaml device=0 cache=True epochs=300 project=/media/ll/L/llr/mode name=yolov8

除了上述笔者使用的参数,其他参数说明

task: detect  # 可选择:detect, segment, classify
mode: train  #可选择: train, val, predict

# Train settings -------------------------------------------------------------------------------------------------------

model:  # 设置模型。格式因任务类型而异。支持model_name, model.yaml,model.pt
data:  # 设置数据,支持多数类型 data.yaml, data_folder, dataset_name
epochs: 300  # 需要训练的epoch数
patience: 50  # epochs to wait for no observable improvement for early stopping of training
batch: 16  # Dataloader的batch大小
imgsz: 640  # Dataloader中图像数据的大小
save: True  # save train checkpoints and predict results
save_period: -1 # Save checkpoint every x epochs (disabled if < 1)
cache: True  # True/ram, disk or False. Use cache for data loading
device:  # device to run on, i.e. cuda device=0 or device=0,1,2,3 or device=cpu
workers: 8  # 每个进程使用的cpu worker数。使用DDP自动伸缩
project: /media/ll/L/llr/model # project name
name: yolov8 # experiment name
exist_ok: False  # whether to overwrite existing experiment
pretrained: False  # whether to use a pretrained model
optimizer: SGD  # 支持的优化器:Adam, SGD, RMSProp
verbose: True  # whether to print verbose output
seed: 0  # random seed for reproducibility
deterministic: True  # whether to enable deterministic mode
single_cls: False  # 将多类数据作为单类进行训练
image_weights: False  # 使用加权图像选择进行训练
rect: False  # 启用矩形训练
cos_lr: False  # 使用cosine LR调度器
close_mosaic: 10  # disable mosaic augmentation for final 10 epochs
resume: False  # resume training from last checkpoint
min_memory: False  # minimize memory footprint loss function, choices=[False, True, <roll_out_thr>]
# Segmentation
overlap_mask: True  # 分割:在训练中使用掩码重叠
mask_ratio: 4  # 分割:设置掩码下采样
# Classification
dropout: 0.0  # 分类:训练时使用dropout

# Val/Test settings ----------------------------------------------------------------------------------------------------
val: True  # validate/test during training
split: val  # dataset split to use for validation, i.e. 'val', 'test' or 'train'
save_json: False  # save results to JSON file
save_hybrid: False  # save hybrid version of labels (labels + additional predictions)
conf:  # object confidence threshold for detection (default 0.25 predict, 0.001 val)
iou: 0.7  # intersection over union (IoU) threshold for NMS
max_det: 300  # maximum number of detections per image
half: False  # use half precision (FP16)
dnn: False  # 使用OpenCV DNN进行ONNX推断
plots: True  # 在验证时保存图像

# Prediction settings --------------------------------------------------------------------------------------------------
source:  # 输入源。支持图片、文件夹、视频、网址
show: False  # 查看预测图片
save_txt: False  # 保存结果到txt文件中
save_conf: False  # save results with confidence scores
save_crop: False  # save cropped images with results
hide_labels: False  # hide labels
hide_conf: False  # hide confidence scores
vid_stride: 1  # 输入视频帧率步长
line_thickness: 3  # bounding box thickness (pixels)
visualize: False  # 可视化模型特征
augment: False  # apply image augmentation to prediction sources
agnostic_nms: False  # class-agnostic NMS
classes:  # filter results by class, i.e. class=0, or class=[0,2,3]
retina_masks: False  #分割:高分辨率掩模
boxes: True # Show boxes in segmentation predictions

# Export settings ------------------------------------------------------------------------------------------------------
format: torchscript  # format to export to
keras: False  # use Keras
optimize: False  # TorchScript: optimize for mobile
int8: False  # CoreML/TF INT8 quantization
dynamic: False  # ONNX/TF/TensorRT: dynamic axes
simplify: False  # ONNX: simplify model
opset:  # ONNX: opset version (optional)
workspace: 4  # TensorRT: workspace size (GB)
nms: False  # CoreML: add NMS

# Hyperparameters ------------------------------------------------------------------------------------------------------
lr0: 0.01  # 初始化学习率
lrf: 0.01  # 最终的OneCycleLR学习率
momentum: 0.937  # 作为SGD的momentum和Adam的beta1
weight_decay: 0.0005  # 优化器权重衰减
warmup_epochs: 3.0  # Warmup的epoch数,支持分数)
warmup_momentum: 0.8  # warmup的初始动量
warmup_bias_lr: 0.1  # Warmup的初始偏差lr
box: 7.5  # box loss gain
cls: 0.5  # cls loss gain (scale with pixels)
dfl: 1.5  # dfl loss gain
fl_gamma: 0.0  # focal loss gamma (efficientDet default gamma=1.5)
label_smoothing: 0.0  # label smoothing (fraction)
nbs: 64  # nominal batch size
hsv_h: 0.015  # image HSV-Hue augmentation (fraction)
hsv_s: 0.7  # image HSV-Saturation augmentation (fraction)
hsv_v: 0.4  # image HSV-Value augmentation (fraction)
degrees: 0.0  # image rotation (+/- deg)
translate: 0.1  # image translation (+/- fraction)
scale: 0.5  # image scale (+/- gain)
shear: 0.0  # image shear (+/- deg)
perspective: 0.0  # image perspective (+/- fraction), range 0-0.001
flipud: 0.0  # image flip up-down (probability)
fliplr: 0.5  # image flip left-right (probability)
mosaic: 1.0  # image mosaic (probability)
mixup: 0.0  # image mixup (probability)
copy_paste: 0.0  # segment copy-paste (probability)

# Custom config.yaml ---------------------------------------------------------------------------------------------------
cfg:  # for overriding defaults.yaml

# Debug, do not modify -------------------------------------------------------------------------------------------------
v5loader: False  # use legacy YOLOv5 dataloader

4 模型预测

weight_path = "best.pt"  # 自训练的模型
imgdir = r'/media/ll/L/llr/DATASET/subwayDatasets/bjdt/images' 
img_path = r'/media/ll/L/llr/DATASET/subwayDatasets/bjdt/images/L_0000018.jpg'
model = YOLO(weight_path)
results = model(img_path,show=False,save=False)  # 是否显示和保存结果数据

预测一张图片,results如下图所示:
在这里插入图片描述
预测文件夹目录,results如图所示:
在这里插入图片描述
无论是一张图片还是图片目录,返回的results都是list

要对预测结果进行处理需要索引进去,如下图所示
在这里插入图片描述
结果参数说明:

 boxes:各种形式的检测框信息(xyxy、xywh、归一化的)、类别索引、置信度等
 names:类别字典
 orig_img:原图数组
 orig_shape:原图尺寸
 plots:在验证时保存图像(预测时一般为None)
 speed:处理速度

在这里插入图片描述
在这里插入图片描述
基于上述模型提供的检测结果进行后处理算法等

上述即为yolov8的快速使用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【YOLO】YOLOv8实操:环境配置/自定义数据集准备/模型训练/预测 的相关文章

  • 使用arduino控制多个PCA968516路舵机控制板从而达到最多可以控制992个伺服舵机

    1 摘要 在本教程中 xff0c 我将向您展示如何使用这些通过 I2C 接口控制的 16 通道 PCA9685 PWM 驱动器将多达992 个伺服器连接到 Arduino 这些板中的每一个都可以驱动多达 16 个舵机或 PWM 输出 xff
  • 分别在 visual studio 2022 和 visual studio code中配置opencv环境,并运行相关代码

    window10环境下 xff1a 一 在visual studio 2022中配置opencv环境 xff0c 并运行相关代码 1 安装visual studio 2022 xff0c 在官网下载社区版安装包 1 1 下载后双击运行安装包
  • 0.8 - GPIO的输入输出模式

    GPIO xff1a General purpose input output 从参考手册可知 xff0c GPIO可以配置成上图中的多种模式 xff0c 但是要理解这些名字的含义还是要具体分析GPIO功能框图 xff1a 结合GPIO的输
  • opencv基础-印度小哥

    基础课程 第一章 读取图片 视频和摄像头 Chapter 1 Read Images Videos and Webcams 图片放在程序所在文件夹下的Resources test png 1 1 opencv读取一张图片并显示 xff1a
  • 为ubuntu配置WiFi

    1 前提条件 ubuntu不论什么版本 xff0c 如果想要正常使用wifi xff0c 必须在电脑的bios中把secure boot设定为disable 2 快捷指令 xff08 WiFi相关的常用命令行指令 xff09 2 1查看电脑
  • 嵌入式C语言自我修养:从芯片、编译器到操作系统-习题、笔记

    前沿 C语言测试 1 基本概念考查 什么是标识符 关键字和预定义标识符 三者有何区别 标识符 xff08 Identifier xff09 由程序员定义 xff0c 用来表示变量 xff0c 包括了变量名 函数名 宏名 结构体名等 标识符的
  • smile@smile-X3-S:~/app_install/mapx/build$ sudo make

    smile 64 smile X3 S app install mapx build span class token function sudo span span class token function make span span
  • 两台ubuntu之间文件互传方法

    1 查找本机ip地址 终端输入 xff08 不是自己的电脑 xff0c 是服务其的IP xff09 xff1a ifconfig span class token operator span a 查看inet 192打头的地址 2 查找本机
  • 单片机通过串口发送浮点类型数据

    单片机通过串口向串口助手或者其他器件发送数据时是不能直接发送浮点类型数据的 xff0c 通过printf 34 f 34 1 28 发送浮点数据 在串口助手看似是小数 xff0c 其实是字符串类型 xff0c 它们是各符号对应的ASSCII
  • 制作系统启动盘和制作windows+Ubuntu双系统启动盘

    制作windows 43 Ubuntu双系统启动盘 前言1 准备软件和工具 xff1a 开始1 软件和系统镜像自行在网上下载 2 下载好系统镜像之后 xff0c 开始制作ubuntu系统盘 xff1a 3 制作好ubuntu启动盘之后 xf
  • 虚拟机分配的硬盘太大怎么办?

    虚拟机分配的硬盘太大怎么办 xff1f 虚拟机分配的硬盘太大怎么办 xff1f 文章来源说明 xff1a 开始1 首先需要将虚拟机中多余的硬盘空间删除 xff0c 在此电脑中右键管理 xff0c 然后在磁盘管理中右键有多余空间的磁盘进行压缩
  • QT界面窗口的显示和隐藏,关闭

    这里写目录标题 QT窗口的显示和隐藏 xff1a 1 隐藏窗口1 1 介绍 xff1a 2 显示窗口2 1 介绍 xff1a 3 关闭窗口常用函数有 xff1a QT窗口的显示和隐藏 xff1a 1 隐藏窗口 span class toke
  • QT的中文显示乱码问题解决

    QT的中文显示乱码问题解决 QT的中文显示乱码问题解决 xff1a 1 查看源文件的编码格式 xff0c 有必要的话转换源文件的编码格式再重新编译运行尝试汉字能否正常显示 2 在代码里面解决 xff1a 3 用法 xff1a QT的中文显示
  • 0.9 - GPIO寄存器的C语言映射与STM32库函数雏形构建思路

    首先 xff0c 从参考手册可知 xff0c 程序存储器 xff08 flash xff09 数据存储器 SRAM 寄存器 外设控制 和输入输出端口被组织在同一个4GB的线性地址空间内 数据字节以小端格式存放在存储器中 一个字里的最低地址字
  • Linux文件/文件夹建立软硬链接

    建立软连接 xff1a sudo ln s home spike Downloads redis src redis server usr local bin redis server 源文件 链接到 目标文件 xff0c 这两个文件目录都
  • Linux中记录终端(Terminal)输出到文本文件四种方法

    Linux中记录终端 xff08 Terminal xff09 输出到文本文件 Linux中记录终端 xff08 Terminal xff09 输出到文本文件 一 xff0c 如何把命令运行的结果保存到文件当中 二 command gt f
  • C++ 标准库头文件汇集:

    C 43 43 标准库头文件汇集 xff1a C 43 43 标准库的接口由下列头文件的汇集定义 C 43 43 标准库头文件汇集 xff1a 概念库协程库工具库动态内存管理数值极限错误处理字符串库容器库迭代器库范围库算法库数值库本地化库输
  • C++开源库列表总结记录

    开源 C 43 43 库列表 前言包管理器库音频 音频指纹格式标签CD 性能测试 通信 并发 配置 XMLJSONYAMLTOMLHOCONCSS容器 密码学 数据库 嵌入语言绑定 嵌入式 实时 文件元数据 金融计算 游戏引擎架构 通用多媒
  • C++转义序列和操作符优先级

    C 43 43 转义序列和操作符优先级 1 转义序列 xff1a 2 C 43 43 运算符优先级注解 1 转义序列 xff1a 转义序列 描述 表示 简单转义序列 39 单引号 ASCII 编码中为字节 0x27 34 双引号 ASCII
  • PX4:Policy “CMP0097“ is not known to this version of CMake.

    make px4 fmu v3 时报的错 CMake版本的问题 由https blog csdn net zhizhengguan article details 118380965推测 xff0c 删除cmake policy也没事 ma

随机推荐