YOLO:训练自己的样本数据集进行目标检测

news2024/9/22 3:47:35

作者:CSDN @ _养乐多_

本文将介绍如何使用python语言和 ultralytics 库训练自己的数据集,并进行 YOLO 目标检测模型训练和推理的代码。


文章目录

      • 一、样本数据集准备
        • 1.1 标注工具
        • 1.2 数据集格式
          • 1.2.1 图片和标签数据集制作
          • 1.2.2 data.yaml制作
      • 二、模型训练
      • 三、图片推理


一、样本数据集准备

1.1 标注工具
labelimg 、labelme 、VIA 都可以
1.2 数据集格式

本文直接采用YOLO数据集格式进行示例,

1.2.1 图片和标签数据集制作

YOLO数据集文件结构如下:

/dataset
    /images
    	/train
	        image1.jpg
	        image2.jpg
	        ...
	    /val
	    	image11.jpg
	        image21.jpg
	        ...
    /labels
        /train
	        image1.txt
	        image2.txt
	        ...
	    /val
	        image11.txt
	        image21.txt
	        ...

数据集文件夹如下,

images里面的文件夹如下,train和val里面全是图片。图片格式可以是JPEG、PNG。

labels里面的文件夹如下,
train和val里面全是txt文件。

txt中的内容如下图所示,格式为class-id x y width height,代表

  • class_id: 类别ID,从0开始,自己定义
  • center_x:边界框中心的x坐标,相对于图像宽度进行归一化(值在0到1之间)
  • center_y:边界框中心的y坐标,相对于图像高度进行归一化(值在0到1之间)
  • width:边界框的宽度,相对于图像宽度进行归一化(值在0到1之间)
  • height:边界框的高度,相对于图像高度进行归一化(值在0到1之间)
1.2.2 data.yaml制作

写一个data.yaml文件,并保存。

train: E:\\\\images\\train # 训练数据集路径
val: E:\\images\\val # 验证数据集路径
nc: 1  # 类别数量
names: ['bus'] # 类别名字

注意:labels为啥没有路径,因为它可以自己识别,只要和images同级目录就行。

二、模型训练

from ultralytics import YOLO

if __name__ == '__main__':
    # 加载模型
    model = YOLO("yolov8n.pt")  # 加载一个预训练模型(推荐使用预训练模型用于训练)

    # 训练
    model.train(data="data.yaml", epochs=3, workers=0)  # 使用单进程数据加载训练模型
    
    # 验证
    metrics = model.val()  # 评估模型在验证集上的性能
    
    # 保存模型
    path = model.export(format="onnx")  # 将模型导出为ONNX格式

三、图片推理

from ultralytics import YOLO

# 加载训练好的模型
model = YOLO("./runs/detect/train40/weights/best.pt")

# 读取图片
image_path = "./images/train/0001.jpg"

model.predict(image_path, imgsz=640, save=True, device=0)

测试图片,

=

=

=

=

=

=

=

=

=

=

=

=

=

=

=

=

=

=

在这里插入图片描述

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

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

相关文章

SAP 采购订单审批 Flexible Workflow

目录 1 简介 2 业务数据 1)下采购订单,如果订单金额超过 15w 生成 Flexible Workflow 审批 2)审批采购订单 - 系统默认主页显示需要审批的采购订单,也可以设置成发邮件提醒 3 后台配置 4 前台主数据定义 1)创建…

【初学人工智能原理】【9】深度学习:神奇的DeepLearning

前言 本文教程均来自b站【小白也能听懂的人工智能原理】,感兴趣的可自行到b站观看。 代码及工具箱 本专栏的代码和工具函数已经上传到GitHub:1571859588/xiaobai_AI: 零基础入门人工智能 (github.com),可以找到对应课程的代码 正文 深度…

14.按钮和多选框

<p>爱好&#xff1a;<input type"checkbox" value"Riding" name"hobby">骑行<input type"checkbox" value"experiment" name"hobby">做实验<input type"checkbox" value"lea…

牛客JS题(十六)生成页码

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; 合法性判断JS除法的特点 题干&#xff1a; 我的答案 <!DOCTYPE html> <html><head><meta charsetutf-8></head><body><ul id"ul"></ul><script type&…

Vsftp 源码安装部署(CentOS 8)

概述 运行环境是 CentOS 8.2 ,尝试搭建 ftp 服务&#xff0c;网上找了很多的方式&#xff0c;基本都是 yum 安装&#xff0c;但是因为未连接互联网&#xff0c;因此只能源码安装。 rpm 包下载地址&#xff08;无效&#xff09; RPM resource vsftpd 基本都是针对 CentOS 9 以…

RV1103调用摄像头运行yolov5进行实时检测

目录 前言运行Yolov5模型第一步&#xff1a;修改CMA_SIZE第二步&#xff1a;修改yolov5项目代码第三步&#xff1a;运行程序 前言 买了luckfox pico的rv1103开发板&#xff0c;摄像头是SC3336 3MP Camera (A)摄像头&#xff0c;参考RV1103 Luckfox Pico使用SPI NAND Flash烧录…

数据库备份与恢复和日志管理

一、数据库备份的概述 1、数据库备份的目的&#xff1a;备灾。在生产环境中&#xff0c;数据的安全性非常重要 2、造成数据丢失的原因&#xff1a;程序出错、人为的问题、磁盘故障、自然灾害。 二、备份的分类 从物理和逻辑的角度 1、物理备份&#xff1a; 对数据库操作系…

可视掏耳勺安全吗?独家揭示六大风险弊病!

很多人习惯在洗漱完顺手拿一根棉签掏耳朵&#xff0c;但是棉签的表面直径大且粗糙&#xff0c;不易将耳朵深处的耳垢挖出&#xff0c;耳垢堆积在耳道深处长时间不清理会导致堵塞耳道&#xff0c;引起耳鸣甚至感染。而可视掏耳勺作为一种新型的挖耳工具&#xff0c;它的安全性也…

OpenAI突然上线两件“杀手锏”:势在维持大模型霸主地位

在最近的大模型战争中&#xff0c;OpenAI似乎很难维持霸主地位。虽然没有具体的数据统计&#xff0c;但Claude3.5出现后&#xff0c;只是看网友们的反响&#xff0c;就能感觉到OpenAI订阅用户的流失&#xff1a;既然Claude3.5比GPT-4o好用&#xff0c;为什么我们不去订阅Claude…

html+css 实现遮罩按钮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 文…

mybatis-plus批量插入优化

mybatis-plus批量插入优化 背景优化新的问题分批插入springboot3整合mybaits-plus 背景 使用的mybatisplus的批量插入方法&#xff1a;saveBatch()&#xff0c;打印 sql 日志发现&#xff0c;底层还是一条条的 insert 语句&#xff0c;这显然是不行的 优化 之前就看到过网上都…

怎么把C盘分成两个盘?让C盘分区更简单,赶快试试!

在日常使用电脑的过程中&#xff0c;有时我们可能希望将C盘分割成两个独立的分区&#xff0c;以便更好地管理文件和数据。这种操作需要谨慎进行&#xff0c;因为错误的分区操作可能导致数据丢失。那么&#xff0c;我们该怎么把C盘分成两个盘呢&#xff1f;下面&#xff0c;我将…

Telegraf 命令行指南:高效监控数据的秘诀

Telegraf 是一个轻量级的服务器监控代理&#xff0c;它支持从数百种数据源收集、处理和发送数据到各种存储库。它由 InfluxData 开发&#xff0c;常用于时间序列数据库 InfluxDB。Telegraf 的灵活性和强大的插件系统使其成为监控基础设施的理想选择。本文将为您提供一个 Telegr…

【解决方案】华普微基于收发芯片系列的LED智能灯控高效解决方案

一、方案概述 LED智能灯是一种集LED照明技术与智能控制技术于一体的现代照明产品。它采用高效节能的LED作为光源&#xff0c;相比传统灯具&#xff0c;具有更低的能耗、更长的使用寿命以及更环保的特性。 智能灯通过内置的智能芯片或连接外部智能设备&#xff08;如智能手机、…

vue2-级联选择器

级联选择器 一、市面上的级联选择器二、功能实现1、数据类型2、隐藏下拉框的方法3、html结构4、CSS代码5、各个方法代码 三、实现样式截图1、一级菜单1、鼠标放到一级菜单&#xff0c;就显示二级菜单2、鼠标点击一级菜单的时候 2、二级菜单1、鼠标放到二级菜单的时候&#xff0…

合规征程新里程碑:ATFX荣获香港SFC牌照,运营再上新台阶

全球知名金融科技品牌ATFX又传来好消息&#xff0c;继2023年6月获得阿联酋SCA第五类牌照后&#xff0c;ATFX全球合规运营策略再次取得重大成功。日前&#xff0c;ATFX宣布获得中国香港证券及期货事务监察委员会&#xff08;SFC&#xff09;颁发的第三类牌照&#xff08;号码&am…

GAMES104:06(下)游戏中地形大气和云的渲染2-学习笔记

文章目录 三、大气Atmosphere3.1 大气散射理论3.1.1 Analytic Atmosphere Appearance Modeling&#xff08;经验模型&#xff09;3.1.2 Participating Media参与介质3.1.3 辐射传递方程RTE(Radiative Transfer Equation)3.1.4 体积渲染公式VRE(Volume Rendering Equation) 3.2 …

比原生Transformer快的LMDeploy

创建conda环境 conda create lmdeploy conda activate lmdeploy 安装依赖包(注&#xff1a;下对应的版本要不然容易报错) pip install pytorch2.1.2 pip install lmdeploy[all]0.3.0 下载模型 通过Git协议下载模型。首先安装git-lfs组件 此处使用的root权限 curl -s ht…

YOLOv8改进 | 主干网络 | 简单而优雅且有效的VanillaNet 【华为诺亚方舟】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

【C++核心篇】—— C++面向对象编程:封装相关语法使用和注意事项详解(全网最详细!!!)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、封装&#xff08;类&#xff09;1.封装的使用&#xff08;类和对象&#xff09;2. 对象的初始化和清理2.1 构造函数2.2 析构函数2.3 构造函数的分类及调用 …