YOLO的使用

目录

一、安装ultralytics

二、数据集准备

三、训练代码

五、训练结果的目录结构

六、附录

1、部分参数

2、文件介绍


一、安装ultralytics

pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple

介绍:Ultralytics YOLO Docs --- Train - Ultralytics YOLO Docs

二、数据集准备

  • train:113个图像 + 113 个标签 (训练时使用)
  • val:  24个图像 + 24个标签文件(训练进行验证时使用)
  • test: 25个图像 + 25个标签(训练阶段不会使用)

data.yaml(只有一个normal的类别):

names:0: normal
nc: 1
test: D:\YOLOv8Train\v8_train_datasets\mktk_dataset\test
train: D:\YOLOv8Train\v8_train_datasets\mktk_dataset\train
val: D:\YOLOv8Train\v8_train_datasets\mktk_dataset\val

三、训练代码

从yaml文件中新建:

from ultralytics import YOLOif __name__ == '__main__':# 加载一个模型model = YOLO('yolov8n.yaml')  # 从YAML建立一个新模型# 训练模型results = model.train(data='D:/YOLOv8Train/v8_train_datasets/mktk_dataset/data.yaml',device='0',epochs=100,  # 训练过程中整个数据集将被迭代多少次,显卡不行你就调小点batch=8,  # 一次看完多少张图片才进行权重更新verbose=False,imgsz=640)

其他加载模型进行训练方式:

from ultralytics import YOLO# Load a model
model = YOLO("yolov8n.yaml")  # 从yaml建立新模型
model = YOLO("yolov8n.pt")  # 加载预训练 (recommended for training)
model = YOLO("yolov8n.yaml").load("yolov8n.pt")  # 建立新模型并加载权重# Train the model
results = model.train(data="coco8.yaml", epochs=100)

四、预测

from ultralytics import YOLOmodel = YOLO("yolov10m.pt")results = model.predict("image.jpg",save=False,save_txt=False,verbose=False,conf=0.75)
results[0].show()

我们还可以得到文本形式的数据:

from ultralytics import YOLOmodel = YOLO("yolov10m.pt")
results = model.predict("image.jpg",save=False,save_txt=False,verbose=False,conf=0.75)
boxes = results[0].boxes
confidence, class_ids = boxes.conf,boxes.cls.int()rects = boxes.xyxy.int()
for ind in range(boxes.shape[0]):print(model.names[class_ids[ind].item()],confidence[ind].item(),rects[ind].tolist())# 输出
'''
car 0.9247599244117737 [561, 311, 719, 420]
car 0.9067108035087585 [464, 303, 554, 380]
car 0.9027121663093567 [402, 300, 481, 367]
car 0.8614686727523804 [524, 310, 592, 396]
bicycle 0.8476000428199768 [181, 321, 241, 400]
person 0.8029575347900391 [71, 271, 126, 421]
person 0.7965097427368164 [186, 278, 237, 381]
bicycle 0.7882957458496094 [111, 330, 156, 414]
'''

五、训练结果的目录结构

YOLOv8每执行一次训练,都会生成一个新的训练目录来保存结果,训练结果的目录如下:

六、附录

1、部分参数

task: detect  # 这是一个目标检测的任务
mode: train   # 当前使用的是训练模式,YOLOv8还有val,test等其它模式
model: yolov8n.yaml # 使用的模型配置(里面描述了模型的网络结构等)
data: D:/YOLOv8Train/v8_train_datasets/mktk_dataset/data.yaml # 训练使用的数据集
epochs: 100  # 训练需要迭代多少次
patience: 50  
batch: 8   # 一次看完多少张图片才进行权重更新
imgsz: 640  # 模型的图像大小
save: true  
save_period: -1
cache: false
device: '0'  # 使用0号NVIDIA GPU进行训练
workers: 8  # 数据加载的工作线程数(如果DDP则为每个RANK)
project: null
name: train2
exist_ok: false
pretrained: true
optimizer: auto
verbose: false
seed: 0
deterministic: true
single_cls: false
rect: false
cos_lr: false
close_mosaic: 10
resume: false
amp: true
fraction: 1.0
profile: false
freeze: null
overlap_mask: true
mask_ratio: 4
dropout: 0.0
val: true  # 训练期间验证/测试
split: val  # 用于验证的分割数据集,例如 'val'、'test' 或 'train',参考data: D:/YOLOv8Train/v8_train_datasets/mktk_dataset/data.yaml
save_json: false
save_hybrid: false
conf: null
iou: 0.7  # 验证/测试中使用NMS(非极大抑制)用的交并比(IoU)阈值
max_det: 300
half: false  # 使用半精度(FP16)
dnn: false  # 使用 OpenCV DNN 进行 ONNX 推理
plots: true
source: null
vid_stride: 1
stream_buffer: false
visualize: false
augment: false
agnostic_nms: false
classes: null
retina_masks: false
show: false
save_frames: false
save_txt: false
save_conf: false
save_crop: false
show_labels: true
show_conf: true
show_boxes: true
line_width: null
format: torchscript
keras: false
optimize: false
int8: false
dynamic: false
simplify: false
opset: null
workspace: 4
nms: false
lr0: 0.01  # 初始学习率
lrf: 0.01  # 最终学习率
momentum: 0.937 #SGD动量/Adam beta1
weight_decay: 0.0005
warmup_epochs: 3.0
warmup_momentum: 0.8
warmup_bias_lr: 0.1
box: 7.5
cls: 0.5
dfl: 1.5  # dfl损失增益
pose: 12.0
kobj: 1.0
label_smoothing: 0.0
nbs: 64
hsv_h: 0.015
hsv_s: 0.7
hsv_v: 0.4
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
copy_paste: 0.0
cfg: null
tracker: botsort.yaml
save_dir: runs\detect\train2  # 训练结果保存的目录

2、文件介绍

  • labels.jpg(标签统计图)
第1个图是训练集的数据量,每个类别有多少个第2个图是框的尺寸和数量
第3个图是中心点相对于整幅图的位置第4个图是图中目标相对于整幅图的高宽比例

  • labels_correlogram.jpg(标签相关图)

labels相关图体现标签的中心点x,y坐标以及框的高宽之间的关系。

每一行的最后一幅图代表的是x,y,宽和高的分布情况:

图(0,0)表明中心点横坐标x的分布情况;

图(1,1)图表明中心点纵坐标y的分布情况;

图(2,2)图表明框的宽的分布情况;

图(3,3)图表明框的宽的分布情况;
而其他的图则是寻找这4个变量(x,y,width,height)之间的关系。

  • args.xml(训练使用的超参数)

这个文件包含了训练使用的超参数,包括训练(train)使用参数和每次迭代完成进行验证(val)使用的参数。

  • results.png(用图像来呈现训练结果)

用图像的方式把results.txt内容呈现出来。

从0~epochs(100)次迭代过程中,重要指标的变化过程:

train/box_loss:训练中,位置误差变化过程;

train/cls_loss:训练中,类别误差变化过程;

train/dfl_loss:训练中,dfl误差变化过程;

val/box_loss:验证中,位置误差变化过程;

val/cls_loss:验证中,类别误差变化过程;

val/dfl_loss:验证中,dfl误差变化过程;

正常情况下,loss会随着迭代的次数增加,慢慢变小。

metircs/precision(B):精度(找对的正类/所有找到的正类);
metircs/recall(B):真实为positive的准确率,即正样本有多少被找出来了(召回了多少)。Recall从真实结果角度出发,描述了测试集中的真实正例有多少被二分类器挑选了出来,即真实的正例有多少被该二分类器召回。

metrics/mAP50(B):是用Precision和Recall作为两轴作图后围成的面积,m-表示平均,AP-Average Precision,50-表示正负样本的IOU阈值为0.5

metrics/mAP50-95(B):表示在不同IOU阈值(从0.5到0.95,步长0.05)(0.5、0.55、0.6、0.65、0.7、0.75、0.8、0.85、0.9、0.95)上的平均mAP。

一般训练结果主要观察精度和召回率波动情况(波动不是很大则训练效果较好),然后观察mAP50 和 mAP50-95 评价训练结果。

参考:训练结果及评估模型训练例子

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/143834.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业设计 家电销售展示平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

deepspeed安装报错 No module named ‘dskernels‘解决

pip install deepseek安装报错 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/61/e6/04e2f2de08253e6b779fe7706f2e06d8fb48353e1d33a2fd7805062213d4/deepspeed-0.12.3.tar.gz (1.2 MB)Preparing metadata (setup.py) ... errorerror: subprocess-exited-with-err…

刘德华这么拼为了什么?

​马上就到63岁的生日了,可是刘德华今年在演唱会的连续三场的表演里边,出现了严重的舞台危险,差点命丧舞台。这一把年纪了,有必要这么拼吗?你要看画面,你就知道那是真的危险,他不是在作秀。 那他…

select系统调用(实现I/O复用)

API 在一段指定时间内,监听用户感兴趣的文件描述符上的可读、可写、异常事件。 int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);文件描述符集合fd_set 是一个用于管理文件描述符集合的结构体。select调用…

MICE MIXTURE OF CONTRASTIVE EXPERTS FOR UNSUPERVISED IMAGE CLUSTERING

由于论文和代码和我想的不太一致,因此不附上精读内容,感兴趣可以自行阅读 代码TsungWeiTsai/MiCE: Pytorch implementation for ICLR 2021 paper - MiCE: Mixture of Contrastive Experts for Unsupervised Image Clustering (github.com) 论文&#xff…

体感魂斗罗(一)

文章目录 体感魂斗罗实现步骤设备读取摄像头视频流使用电脑摄像头读取局域网内手机摄像头效果示意IP摄像头底部工具栏 体感魂斗罗实现步骤 目前想到的有如下步骤 读取摄像头视频流图像检测人体关键点关键点转换为人体姿势固定姿势转换键盘键位 设备 摄像头(可用手…

rsync 服务详解

目录 1.前言 2. rsync 常用选项 3.rsync应用场景 4.rsync使用模式 5.rsync推与拉​编辑 5.1rsync推送 ​编辑5.2rsync拉取 6.rsync本地模式 7.远程模式 8.rsync守护进程 8.2改配置文件 8.3添加虚拟用户 8.4创建密码文件 8.5给文件给予权…

linux操作系统的引导和修复

1.磁盘引导 mbr 主引导记录 0 磁道 1 扇区 446 作用 : 记录 grub2 引导文件的位置 当 mbr 数据丢失系统会因为找不到启动分区而停止启动 问题模拟方式 系统磁盘 / dev / sda dd if/ dev / zero of / dev / vda bs 446 count 1 ## 清空系统 / dev / sda …

盘点常见网络安全术语(建议收藏)

1、黑帽 为非法目的进行黑客攻击的人,通常是为了经济利益。他们进入安全网络以销毁,赎回,修改或窃取数据,或使网络无法用于授权用户。这个名字来源于这样一个事实:老式的黑白西部电影中的恶棍很容易被电影观众识别&…

283. 移动零(快慢指针)

算法分析: 如果数组没有0,快慢指针同步移动,元素会被自己复制;如果有0,快指针找到非零元素,将其复制到慢指针位置最终将剩余位置填充为0。 代码: class Solution {public void moveZeroes(i…

python 环境问题

日常环境问题记录 1、pycharm 终端禁止运行脚本1.1 问题描述1.2 以管理员身份运行powershell1.3 修改权限 1、pycharm 终端禁止运行脚本 1.1 问题描述 当我在pycharm终端执行脚本,比如 activate激活虚拟环境时,会报错不让执行 这类问题的出现原因是没…

基于SpringBoot+Vue+MySQL的家乡特色推荐系统

系统展示 用户前台界面 管理员后台界面 系统背景 在当今数字化时代,随着旅游业的蓬勃发展和人们对本土文化探索的热情日益增长,一个基于SpringBoot、Vue.js与MySQL的家乡特色推荐系统应运而生。该系统旨在通过现代互联网技术,深度挖掘并展示各…

【计算机毕设-大数据方向】基于Hadoop的智能交通数据分析可视化系统的设计与实现

💗博主介绍:✌全平台粉丝5W,高级大厂开发程序员😃,博客之星、掘金/知乎/华为云/阿里云等平台优质作者。 【源码获取】关注并且私信我 【联系方式】👇👇👇最下边👇👇&…

最好的超声波清洗机是哪款?四款品质上等的超声波清洗机评选

在日常与专业活动里,保持清洁是一项基础却繁琐的职责,尤其针对那些手工难以有效清理的物品。值得注意的是,现代超声波清洗技术已今非昔比,它不再局限于工业领域中大型部件的精密清洗,而是逐步渗透进日常生活&#xff0…

MySQL系列—12.Undo log

1、概念 DML 操作导致数据变化 , 将变化前的记录写入 Undo 日志。 作用 用于记录更改前的一份 copy ,在操作出错时,可以用于回滚、撤销还原,只将数据库 逻辑地恢复到原来的样子 你 插入一条记录时,至少要把这条记录的主键值记下来…

Linux系统之head命令的基本使用

Linux系统之head命令的基本使用 一、head命令介绍二、head命令的使用帮助2.1 head命令的help帮助信息2.2 head命令的语法解释 三、head的基本使用3.1 直接使用3.2 查看文件前N行3.3 查看多个文件3.4 查询文件的前5行3.5 显示文本所有内容(除了后5行内容)…

Scrapy爬虫IP代理池:提升爬取效率与稳定性

在互联网时代,数据就是新的黄金。无论是企业还是个人,数据的获取和分析能力都显得尤为重要。而在众多数据获取手段中,使用爬虫技术无疑是一种高效且广泛应用的方法。然而,爬虫在实际操作中常常会遇到IP被封禁的问题。为了解决这个…

vulnhub(4):NullByte(hydra爆破、sql注入、path劫持提权、提权小tps)

端口 nmap主机发现 nmap -sn 192.168.236.0/24 ​ Nmap scan report for 192.168.236.177 Host is up (0.00020s latency). ​ 177是新出现的机器,他就是靶机 nmap端口扫描 nmap -Pn 192.168.236.177 --min-rate 10000 -oA nmap/scan 扫描开放端口保存到 nmap/scan…

编制数据分析报表的关键步骤,这篇文章为你详细解析

在当今数据驱动的时代,数据分析报表成为了企业决策中不可或缺的工具。它不仅可以帮助我们清晰地展现数据,还能揭示数据背后的趋势与问题,为管理者提供有力的支持。那么,如何编制一份高效、准确的数据分析报表呢?本文将…

运行容器应用

kubernetes通过各种controller来管理pod的生命周期,为了满足不同的业务场景,kubernetes开发了Deployment,ReplicaSet,DaemonSet,StatefulSet,Job等多种ControllerDeployment: kubectl run nginx…