Yolov8训练自己的数据集(脱离ultralytics库)

最近在整理关于yolov8的相关内容,有个很大的问题,抛开yolov8性能不谈,yolov8代码的使用灵活性不如yolov5,尤其是对于一些新手或者对yolo框架不是很熟悉的人(这也是因人而异,有些人可能会喜欢v8代码的使用方式)。比如在使用v8的时候需要安装ultralytics库,然后再调用YOLO进行训练或者预测,那么就有这几个问题:

问题1:安装了ultralytics库后如何使用YOLO呢?

针对该问题,就需要我们不断的查看v8提供的各类doc说明文档,很不便利,比如训练和检测应该传入哪些参数,有些人也不知道去哪查看。

问题2:如果希望像v5一样修改网络或者修改其他代码怎么办?

因为是安装的ultralytics库,直接在源代码中修改显然是不方便的。

为了解决诸多代码上使用的不利因素,本文旨在脱离ultralytics库实现yolov8,使其能够更加的方便使用。


参照yolov5的传入参数形式,我对训练和检测代码进行了实现(部分功能还不是那么完整,后期会慢慢的完善)

代码准备

git clone https://github.com/YINYIPENG-EN/YOLOV8.git

clone代码到本地

环境说明

torch==1.10.0+cu102

torchvision==0.11.0+cu102

numpy==1.22.4

训练自己的数据集

数据集准备

我这里的数据集是只有一个类,数据集名称叫target(根据自己的数据集自己命名),然后我把我的数据集放在了cfg/datasets文件下。目录形式如下:

其中Annotations存储的是xml形式的标签文件images存储的所有的图像labels存储的是将xml转为txt的标签文件(也是我们需要用的)。

$ tree
|-- Annotations
|-- images
|-- labels

然后我们需要将images和labels划分成训练集和验证集。

修改split_dataset.py中的datasets_path路径,运行划分数据集脚本代码:

python split_dataset.py

划分完成后会在cfg/datasets/your_Datasets/下生成train和val两个文件夹,同时各包含images和labels子文件。

新建yaml文件

在cfg/datasets/下新建一个mydata.yaml文件,由于我这里只有一个类,而且类的name为"target",因此配置文件内容如下:(这里建议填写绝对路径,否则可能会出现问题)

path: F:/YOLOV8/cfg/datasets/target
train: F:/YOLOV8/cfg/datasets/target/train/images
val: F:/YOLOV8/cfg/datasets/target/val/images
test: ## number of classes
nc: 1# class names
names:0: target

训练

训练代码在train.py中,这里传入的参数是模仿yolov5的同时并结合yolov8需要的参数实现的。

快速开启训练:

python train.py --weights yolov8s.pt --epochs 100 --bs 64 
Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size1/5     0.669G      1.297      3.061      1.504          7        640: 100%|██████████| 54/54 [00:29<00:00,  1.80it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:00<00:00,  3.87it/s]all         12         24      0.698      0.583      0.665       0.38

也可以与其他训练参数搭配使用,这里介绍几个常用的参数:

--weights:预权重路径

--model:加载的yolov8类型,默认为yolov8s.yaml

--epochs:训练的epochs数量,默认100

--device:cuda训练

--cache:开启缓存,默认是开启的

--bs:batch size大小

--optimizer:优化器类型

--resume:继续训练

--freeze:冻结训练

 

其中一个训练batch可视化

检测

检测代码在detect.py中,快速开启检测

python detect.py --weights yolov8s.pt --source assets --show --save

检测效果如下:

 

也可以与其他参数搭配使用,介绍几种常用参数:

--weights:权重路径

--source:source路径,可以是图像、视频、文件夹

--visualize:特征可视化

--classes:仅检测特定的类别

--show:显示检测结果

--save:保存检测结果

--save_frames:如果是视频检测,开启后可以把每帧进行保存

--save_crop:开启后,可以把目标从背景中截出来并保存

 例如特征可视化:

python detect.py --source bus.jpg --visualize --save

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(4)医疗图像处理:MRI磁共振成像-成像技术--(杨正汉)

目录 一、特殊成像技术 1.水成像技术 2.化学位移成像技术 二、成像辅助技术 1.脂肪抑制技术 2.磁化转移技术 3.流动补偿技术 4.空间饱和空间标记技术 5.生理门控及导航回波技术 所有的这些技术最终就是为了使得K空间通过傅里叶变化之后得到的图片变的更为清晰。 一、…

redis6.2.7安装

1、下载上传到服务器 从官下载redis&#xff0c;地址 https://redis.io/download/#redis-downloads 然后上传到服务器目录 app/apps目录下 2、安装gcc编译器 使用gcc --version命令测试是否已经安装了gcc编译环境&#xff0c;如果没有安装执行以下命令安装 yum install -y …

基于springboot+vue+Mysql的休闲娱乐代理售票系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

jupyter移除添加R内核

jupyter移除 R 内核 Jupyter Notebook 是一个开源Web应用程序&#xff0c;允许创建和共享包含实时代码、方程、可视化和文本的文档。这些文档被称作 "笔记本 "&#xff0c;可以用 Python 编写&#xff0c;并且可以直接运行代码。 如果你想在 Jupyter Notebook 中移…

【技术实操】银河高级服务器操作系统实例分享,TCP长连接与短连接详细说明

1.服务器环境以及配置 物理机/虚拟机/云/容器 物理机 处理器&#xff1a; HUAWEI Kunpeng 920 具体操作系统版本 Kylin-Server-10-SP1-Release-Build20-20210518- aarch64 内核版本 kernel-4.19.90-23.8.v2101.ky10.aarch64 2.问题现象描述 对TCP长连接有疑问 1、如何…

兴业证券 | 哪些行业在提价?

一方面&#xff0c; 部分行业年初以来PPI价格整体上涨&#xff0c;4月进一步提价&#xff1b;另一方面&#xff0c;部分行业年初以来PPI价格整体下跌或者涨幅不高&#xff0c;但4月开始出现边际提升。 前言&#xff1a;年初以来&#xff0c;“提价”是一条重要的投资线索。我们…

Unity Assembly Definition Dotween 引用

原理&#xff1a; 具体Unity程序集原理用法&#xff0c;暂时留坑&#xff0c;不介绍了&#xff0c;相信有很多人也写过了 这里简单放个官方API链接 https://docs.unity3d.com/cn/current/Manual/ScriptCompilationAssemblyDefinitionFiles.html 现象 &#xff1a;Dotween引用…

使OpenCV可以读取中文路径图片的方法

一&#xff0e;问题复现 1.代码 #! /usr/bin/env python # -*- coding: utf-8 -*-# File: show_img.pyimport cv2# 读取图片 img cv2.imread("车牌素材/冀A.png")# 显示图片 cv2.imshow("img", img) cv2.waitKey(0)2.报错截图 3.报错内容 [ WARN:00.05…

力扣题解记录

三元组队列、取出元组中的元素&#xff1a;腐烂的橘子

ISCC——AI

得到一个T4.pyc 回编译一下 得到下面代码 import base64def encrypt_and_compare(user_input, offset_str, target_base64):if len(user_input) ! 24:return Please enter a string with a length of 24encrypted Nonefor i, char in enumerate(user_input):offset int(off…

axios的配置项及含义

axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js。它有许多配置项可以自定义 HTTP 请求。以下列举 axios 中的五个常用配置项及其含义&#xff0c;并提供示例代码&#xff1a; 1. method 含义&#xff1a;指定请求方法&#xff08;例如 GET, POST,…

基于 Windows 的记事本简单功能开发及部署发布--迭代2.1

基于上篇文章基于 Windows 的记事本简单功能开发及部署发布--迭代2.0-CSDN博客 更新完成以下功能点&#xff1a; 1.更新字体到json文件中&#xff0c;下次打开应用能够继续生效。

Unity开发——XLua热更新之Hotfix配置(包含xlua获取与导入)

一、Git上获取xlua 最新的xlua包&#xff0c;下载地址链接&#xff1a;https://github.com/Tencent/xLua 二、Unity添加xlua 解压xlua压缩包后&#xff0c;将xlua里的Assets里的文件直接复制进Unity的Assets文件夹下。 成功导入后&#xff0c;unity工具栏会出现xlua选项。 …

到底该用英文括号还是中文括号?

这篇博客写的还挺详细的&#xff0c;不错。

TCP/IP协议族

基于这张图片的一篇blog TCP/IP模型通常被分为四个层次&#xff1a;应用层、传输层、网络层和网络接口层。在这个模型中&#xff0c;不同的网络协议负责完成不同的任务&#xff0c;以确保数据可以在网络中高效、可靠地传输。以下是对这张图中每个协议的解释&#xff1a; 应用层…

Tensorflow2.0笔记 - AutoEncoder做FashionMnist数据集训练

本笔记记录自编码器做FashionMnist数据集训练&#xff0c;关于autoencoder的原理&#xff0c;请自行百度。 import os import time import tensorflow as tf from tensorflow import keras from tensorflow.keras import datasets, layers, optimizers, Sequential, metrics, …

Nature子刊 | 首个 双语脑机接口设备能解码西班牙语和英语单词

大脑植入装置首次帮助一名无法用语言表达的双语人士用两种语言进行交流。与大脑植入体相连的AI系统可以实时解码该人试图用西班牙语或英语表达的意思。 这项研究结果发表在5月20日的《Nature Biomedical Engineering》杂志上&#xff0c;让人们深入了解了我们的大脑是如何处理语…

使用printf的两种方法,解决printf不能使用的问题

使用printf的两种方法&#xff0c;解决printf不能使用的问题 一、微库法 我们使用printf前要加上重定向fputc //重定义fputc函数 int fputc(int ch, FILE *f) { while((USART1->SR&0X40)0);//循环发送,直到发送完毕 USART1->DR (uint8_t) ch; return…

结构型设计模式之装饰模式

文章目录 概述装饰模式原理代码案例小结 概述 装饰模式(decorator pattern) 的原始定义是&#xff1a;动态的给一个对象添加一些额外的职责. 就扩展功能而言,装饰器模式提供了一种比使用子类更加灵活的替代方案。 装饰模式原理 装饰模式中的角色&#xff1a; 抽象构件角色 …

高精度定位平板主要应用在哪些领域

高精度定位平板是一种集成了高精度定位技术和强大计算能力的设备&#xff0c;能够提供亚米级甚至厘米级的定位精度。其应用领域广泛&#xff0c;涵盖测绘、精准农业、工程建设、地理信息系统&#xff08;GIS&#xff09;、公共安全等多个方面。这种设备凭借其高精度和耐用性&am…