YOLOv8训练自己的目标检测数据集

YOLOv8训练自己的目标检测数据集

目录标题

  • 源码下载
  • 环境配置
  • 安装包
  • 训练自己的数据集
    • 数据集文件格式
    • 数据集文件配置
    • 超参数文件配置
    • 训练数据集
      • 命令行训练
      • 脚本.py文件训练
  • 进行detect
    • 显示detect的效果

源码下载

YOLOv8官方的GitHub代码,同时上面也有基础环境的配置要求以及代码运行的教程。下载后的源码文件名应该是ultralytics-main。

环境配置

这里可参考YOLOv5,YOLO v7的代码环境配置。

安装包

需要额外的安装一些包,因为后面需要用到。

pip install ultralytics

训练自己的数据集

数据集文件格式

  • 数据集文件格式是txt的yolo格式,整体数据集文件格式如下:
    在这里插入图片描述
  • 同时images下的文件格式如下: train(训练集图片),val(测试集图片),test(测试集图片)
    在这里插入图片描述
  • 同时labels下的文件格式如下: train(训练集图片对应的标签),val(测试集图片对应的标签),test(测试集图片对应的标签)
    在这里插入图片描述
  • 整体数据集格式文件如下

├── linhuo
│ ├── images
│ │ ├── train
│ │ ├── val
│ │ ├── test
│ ├── labels
│ │ ├── train
│ │ ├── val
│ │ ├── test

数据集文件配置

数据集文件配置的位置如下:

ultralytics-main/ultralytics/cfg/datasets/

在该文件下创建数据自己数据集文件配置的yaml文件,这是我创建自己数据集配置的yaml文件。同时yaml文件内要说明以下内容:

  • 索引到数据集文件images下的train、val
  • 数据集标注的类别数目
  • 数据集标注的类别名称
  • 如我的数据集只有1类, 标注类别是fire
    在这里插入图片描述

超参数文件配置

超参数文件配置的路径:

ultralytics-main/ultralytics/cfg/default.yaml

具体的超参数说明可以看看网上的教程,这里主要配置model,data,patience。

  • model: 可以配置yolov8n.pt, yolov8n.yaml(这里填写配置yolov8n.pt, yolov8n.yaml的具体路径),如果配置yolov8n.yaml需要将类别数目改为1。
model: './weights/yolov8n.pt'  # (str, optional) path to model file, i.e. yolov8n.pt, yolov8n.yaml
  • data: 这里是填写数据集文件配置的地址。
data: 'ultralytics/cfg/datasets/linhuo.yaml'   # (str, optional) path to data file, i.e. coco128.yaml
  • patience: epochs to wait for no observable improvement for early stopping of training(就是多少次没有训练一个好的结果就会提前停止训练)。

训练数据集

命令行训练

  • task=detect:目标检测
  • mode=train:训练模式
  • model=yolov8n.pt:模型预训练权重的地址,我是默认放到ultralytics-main目录下
yolo task=detect mode=train model=yolov8n.pt data=ultralytics/cfg/datasets/linhuo.yaml batch=16 epochs=500

脚本.py文件训练

  • 新建立一个python脚本文件 mytrain.py
    在这里插入图片描述

代码为:直接运行即可。

from ultralytics import YOLO
# 权重网络模型加载权重模型
model = YOLO('ultralytics/cfg/models/v8/yolov8.yaml').load('./weights/yolov8n.pt')  # build from YAML and transfer weights

# Train the model: 数据集配置yaml
results = model.train(data='ultralytics/cfg/datasets/linhuo.yaml', epochs=500, batch=16)

进行detect

  • 新建立一个python脚本文件 mypre.py上面图片有
from ultralytics import YOLO
model = YOLO('runs/detect/train/weights/best.pt')

# 检测的图片的路径
source = 'ultralytics/assets/2708.jpg'

# 预测结果
results = model.predict(source, save=True)

显示detect的效果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VOC数据集和COCO数据集直接的相互转换

VOC数据集格式 get_list.py import os import random import shutil# 设置随机种子 random.seed(1000)# 判断Annotations和JpegImages是否对应 train_precent=0.8 label_path= "../../Annotations" print(os.path.abspath(label_path)) save="../Main" pr…

前端工程、静态代码、Html页面 打包成nginx 的 docker镜像

1. 创建一个 mynginx的目录 2. 将前端代码文件夹(比如叫 front )复制到 mynginx 目录下 3. 在mynginx 目录下创建一个名为Dockerfile 的文件(文件名不要改),文件内容如下: # 使用官方的 Nginx 镜像作为基…

深度学习图像分类算法研究与实现 - 卷积神经网络图像分类 计算机竞赛

文章目录 0 前言1 常用的分类网络介绍1.1 CNN1.2 VGG1.3 GoogleNet 2 图像分类部分代码实现2.1 环境依赖2.2 需要导入的包2.3 参数设置(路径,图像尺寸,数据集分割比例)2.4 从preprocessedFolder读取图片并返回numpy格式(便于在神经网络中训练)2.5 数据预…

shell 脚本的函数和数组

函数 —— 封装的一个公式:sin、cos、tan —— 函数为脚本的别名 —— 函数就是一个功能模块,在函数中写执行的命令即可;使用函数可以避免代码重复,增加可读性,简化脚本,使用函数可以将大的工程分割为若…

教育数字化转型:塑造未来学习新范式

在国家教育数字化战略行动指引下,我国正积极推动数字化赋能教育高质量发展,以塑造教育发展的新优势。如今,随着科技新基建的普及和数字化赋能教育的深入推进,未来的教育模型正在逐渐形成。 在新的教育模型中,数字化学…

【python海洋专题四十七】风速的风羽图

【python海洋专题四十七】风速的风羽图 图片 往期推荐 图片 【python海洋专题一】查看数据nc文件的属性并输出属性到txt文件 【python海洋专题二】读取水深nc文件并水深地形图 【python海洋专题三】图像修饰之画布和坐标轴 【Python海洋专题四】之水深地图图像修饰 【Pyth…

在一个页面里向两张表里插入内容时,有一些复杂的BUG简单化

向两张表里插入内容时,有一些复杂的BUG简单化 当在第一张表里的页面操作,在第一张表查询结果的页面进行编辑,在编辑的时候需要对第二张表里和第一张表都保存内容,而且插入之后两张表的id关联着,这个时候这张表的id就不…

IntelliJ IDEA 16创建Web项目

首先要理解一个概念:在IntelliJ IDEA中“new Project”相当于eclipse中的工作空间(Workspace),而“new Module”相当于eclipse中的工程(Project)。以下均采用Intellij的说法,请自行对照转换理解…

C语言——从键盘输人一个表示年份的整数,判断该年份是否为闰年,并显示判断结果。

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int year 0;printf("请输入年份&#xff1a;");scanf("%d",&year);if((year%4 0) && (year%100!0) || (year%400 0)){printf("%d是闰年\n",year);}else{p…

Using PeopleCode in Application Engine Programs在应用引擎程序中使用PeopleCode

This section provides an overview of PeopleCode and Application Engine programs and discusses how to: 本节概述了PeopleCode和应用程序引擎程序&#xff0c;并讨论了如何: Decide when to use PeopleCode.决定何时使用PeopleCode。Consider the program environment.考…

队列的实现和OJ练习(c语言)

目录 概念 队列的实现 利用结构体存放队列结构 为什么单链表不使用这种方法&#xff1f; 初始化队列 小提示&#xff1a; 队尾入队列 队头出队列 获取队头元素 获取队尾元素 获取队列中有效元素个数 检测队列是否为空 销毁队列 最终代码 循环队列 队列的OJ题 …

git clone -mirror 和 git clone 的区别

目录 前言两则区别git clone --mirrorgit clone 获取到的文件有什么不同瘦身仓库如何选择结语开源项目 前言 Git是一款强大的版本控制系统&#xff0c;通过Git可以方便地管理代码的版本和协作开发。在使用Git时&#xff0c;常见的操作之一就是通过git clone命令将远程仓库克隆…

SHAP - 机器学习模型可解释性工具

github地址&#xff1a;shap/docs/index.rst at master shap/shap (github.com) SHAP使用文档&#xff1a;欢迎使用 SHAP 文档 — SHAP 最新文档 SHAP介绍 SHAP&#xff08;SHapley Additive exPlanations&#xff09;是一种用于解释预测结果的方法&#xff0c;它基于Shapley…

好的程序员有什么特质呢?

程序员想要提升自己&#xff0c;一定要关注到工作中的方方面面。而一个好的程序员&#xff0c;一般都有这些特质&#xff1a; 弱者抱怨环境&#xff0c;强者改变环境 不要试图通过抱怨环境来获得工作环境上的改变&#xff0c;这不仅不会给你带来任何实质性的改变&#xff0c;…

一文详解Vue生命周期

Vue是一种流行的用于构建用户界面的渐进式JavaScript框架。Vue框架在开发过程中&#xff0c;特别强调对生命周期的理解和管理。通过使用生命周期钩子函数&#xff0c;开发者能够精确地控制Vue实例的创建、挂载、更新以及销毁过程。本文将对Vue的生命周期进行详细的介绍&#xf…

Nginx模块开发之http handler实现流量统计(1)

文章目录 一、handler简介二、Nginx handler模块开发2.1、示例代码2.2、编写config文件2.3、编译模块到Nginx源码中2.4、修改conf文件2.5、执行效果 三、Nginx的热更新总结 一、handler简介 Handler模块就是接受来自客户端的请求并产生输出的模块。 配置文件中使用location指令…

微软发布最新.NET 8长期支持版本,云计算、AI应用支持再强化

11 月 15 日开始的为期三天的 .NET Conf 在线活动的开幕日上&#xff0c;.NET 8作为微软的开源跨平台开发平台正式发布。.NET 团队着重强调云、性能、全栈 Blazor、AI 和 .NET MAUI 是.NET 8的主要亮点。.NET团队在 .NET Conf 2023 [1]活动开幕式上表示&#xff1a;“通过这个版…

JSP过滤器和监听器

什么是过滤器 Servlet过滤器与Servlet十分相似&#xff0c;但它具有拦截客户端&#xff08;浏览器&#xff09;请求的功能&#xff0c;Servlet过滤器可以改变请求中的内容&#xff0c;来满足实际开发中的需要。 对于程序开发人员而言&#xff0c;过滤器实质就是在Web应用服务器…

不会代码也能拿高薪?掌握面试法宝,轻松10000+

快速排序&#xff08;Quicksort&#xff09;是对冒泡排序的一种改进。 快速排序由 C.A.R.Hoare 在 1962 年提出。 它的基本思想是&#xff1a;通过一趟排序将要排序的数据分割成独立的两部分&#xff0c;其中一部分的所有数据都比另外一部分的所有数据都要小&#xff0c;然后…

代码随想录算法训练营第五十二天|1143.最长公共子序列 1035.不相交的线 53. 最大子序和

文档讲解&#xff1a;代码随想录 视频讲解&#xff1a;代码随想录B站账号 状态&#xff1a;看了视频题解和文章解析后做出来了 1143.最长公共子序列 class Solution:def longestCommonSubsequence(self, text1: str, text2: str) -> int:dp [[0] * (len(text2) 1) for _ i…
最新文章