YOLO V10简单使用

一.环境安装

1、下载官方源码

官方GitHub地址:https://github.com/THU-MIG/yolov10 点击跳转
image.png

2. 配置conda环境

  1. 在conda创建python3.9环境
conda create -n yolov10 python=3.9
  1. 激活切换到创建的python3.9环境
conda activate yolov10

3. 安装YOLOv10依赖

  • 切换到yolov10源码根目录下,安装依赖
  • 注意:会自动根据你是否有GPU自动选择pytorch版本进行按照,这里不需要自己去选择pytorch和cuda按照,非常良心
pip install -r requirements.txt

如果执行效果缓慢可以试试加速镜像

pip install -r requirements.txt -i https://pypi.doubanio.com/simple
  • 执行命令
pip install -e .

二、数据图片准备

这里以视频为例,自选任意视频,使用如下代码将视频抽帧处理

import cv2video = cv2.VideoCapture("./001.mp4")
num=0#计数器
save_setp=30#间隔帧数
while True:ret,frame=video.read()if not ret:breaknum+=1if num%save_setp==0:cv2.imwrite("./img/"+str(num)+".jpg",frame)

三、图片标注

1. 环境安装

环境安装:pip install labelimg
启动:labelimg
a2be86d3a0d7f58fe1f0ff95f8dc2d8b.png

2.基础设置

  • 设置打开文件夹和保存文件夹
    acff871b861775f2ca547ea2fc7982dd.png
  • 设置自动保存:工具栏 view-auto save mode
  • 切换模式
    43ef603c08b0356d889b26e8d298759f.png
  • 点击save保存修改

3.开始标注

  1. 双击右侧FileList内的图片打开后,右键create RectBox开始标注,在图像上拖拽画出矩形框,在弹出的对话框里输入标签名称(以Ly为例)或选择,然后点击 OK
    da6c9a1c884dd2c3b675f96f6f117bba.png
    1863180-20220627155700218-1285711873.png
  2. 相同的步骤对目标物体进行标注,使用过的标签再下一次可直接选择不必重新输入;已经标注的框可在右侧看到,可以在图像中进行二次拖拽调整1863180-20220627155849688-1079874332.png
  3. 然后点击 Next Image,对下一个图片进行标注
    1863180-20220627161405153-1616391758.png
  4. 然后会在此前设置好的保存目录中得到标注信息
    注意:yolov10标注完成后的数据文件中,每一行的数据格式为: 类型 x中心坐标 y中心坐标 宽度 高度
     

4.make senc数据集标注工具

  • 地址:https://www.makesense.ai/
  • 辅助标注:
    1. pip instll tensorflowjs==2.8.5
    2. YOLOv5模型导出tfjs
    3. make scene上传模型

5.roboflow公开数据集

  • https://public.roboflow.com/object-detection
  • https://universe.roboflow.com/

四、训练数据准备

1.数据集准备

准备文件夹

  • images:存放图片
    1. train:训练集图片
    2. val: 验证集图片
  • labels:存放标签
    1.train:训练集标签文件,要与训练集图片名称一一对应
    2.val:验证集标签文件,要与验证集图片名称一一对应
    3.classes.txt(可以没有):这个文件是标注的类型文件

此前打标签时导入的文件夹就是训练集,输出结果就是验证集,无非是把目录结构按上述更改一下
一般来说,训练集与验证集的数据比例是8:2,即如果又100张图片,那么80张作为训练集,20张作为验证集

2.文件准备

  1. 准备图片文件夹:在yolov10源码目录下,新建datasets文件夹,将刚才准备好的图片数据复制进该文件夹,bvn为项目名
    image.png
  2. 从ultralytics/cfg/datasets文件夹下随便复制一个yaml配置文件至ultralytics-main根目录下
    image.png
  3. 改写配置文件
    image.png
    1. path为从datasets目录开始算的根文件夹名称
    2. train与val时训练集与验证集的位置
    3. names这里就是分类标签,可以按照标注后生成的calsses.txt文件填下

五、启动训练

1. 命令行启动训练

yolo detect train data=coco.yaml model=yolov10n/s/m/b/l/x.yaml epochs=500 batch=256 imgsz=640 device=0,1,2,3,4,5,6,7

2. 代码启动训练

在源码目录下新建xx.py文件

from ultralytics import YOLOv10 #这里需要注意,这里导入的是YOLOv10
# 这个训练权重可以根据自己情况更换不同的权重文件,在后续权重文件章节会详细解释
# 关于这个yolov10n.pt文件从哪来,亦可以在后续权重文件章节找到下载路径
model = YOLOv10("yolov10n.pt")#这里启动训练,data为刚才的yaml文件路径,workers为0,表示单线程训练,windows系统中workers不为0可能会报错
model.train(data='yolov10-bvn.yaml',workers=0, epochs=50, batch=-1)

在启动训练时候可能会报如下错误:

  1. ModuleNotFoundError: No module named ‘huggingface_hub’
    100c9533d4152c458e071aed75213bb.png
    解决办法:
pip install huggingface_hub
  1. Note dataset download directory is ‘G:\yolo\yolov10\datasets’. You can update this in ‘C:\Users\11839\AppData\Roaming\yolov10\settings.yaml’
    image.png
    解决办法:找到所提示的yaml文件,这里是’C:\Users\11839\AppData\Roaming\yolov10\settings.yaml’,使用记事本打开将文件中的datasets_dir参数值删除并保存即可
    image.png

3. 模型训练结果

模型训练结果会保存至runs目录下
image.png
image.png
::: tip
模型存储在weights文件夹下
best.pt:是训练出的最好的模型
last.pt:是最后面的模型,如果需要继续训练需要使用
:::

4.模型测试:

yolo detect predict model=runs/detect/train/weights/best.pt source=001.mp4 show=True

001.mp4是抽帧的视频

5.注意事项

50aaacdf1f052c78d8475bfaef4d9fa8.png
其中AppData是再当前用户目录下

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

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

相关文章

Algo-Lab 2 Stack Queue ADT

Lab 2: Stack & Queue ADT Part 1 ​ 这里只说一下最小栈的思路,我们可以在定义一个栈,来同步存储当前情况下的占的最小值。最小栈第一时间的想法可能是设定一个变量,每次push进来栈中的元素进行对比,保持最小值,…

每日一练:二叉树的直径

543. 二叉树的直径 - 力扣(LeetCode) 一、题目要求 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之…

2024.9.23 作业

统计家目录下.c文件的个数 定义一个稀疏数组(下标不连续),写一个函数,求该稀疏数组的和,要求稀疏数组中的数值通过参数传递到函数中。 arr([2]9 [4]8 [30]23 [24]3 [21]7) 思维导图

高效高质量SCI论文撰写及投稿

第一章、论文写作准备即为最关键 1、科技论文写作前期的重要性及其分类 2、AI工具如何助力学术论文 3、研究主题确定及提高创新性 兴趣与背景:选择一个您感兴趣且有背景知识的研究领域。 创新性:选题和研究设计阶段如何提高学术创新性的方法。 研究缺…

【React】原理

笔记来源:小满zs 虚拟 DOM // react.js // jsx > babel | swc > React.createElement const React {createElement(type, props, ...children) {return {type,props: {...props,children: children.map(child > typeof child object ? child : React.cr…

3 pyqt5 Layout布局(保证主界面缩放各组件也对应缩放)== 主要有Qt Designer和完全代码设置两种设计方式(根据自己情况选择即可)

文章目录 前言一、Layout的类别二、使用Qt Designer进行Layout布局三、完全使用代码进行Layout布局前言 本节我们的http测试的例子,只实现界面方面的逻辑,底层不用管。我们主要的目的是通过这个例子设计界面布局。 我们前面写的界面程序有个问题,如果你用鼠标拖拽主窗口边…

超分之SPIN

Lightweight image super-resolution with superpixel token interaction[C]利用超像素token交互实现轻量级图像超分辨率Zhang A, Ren W, Liu Y, et al.Proceedings of the IEEE/CVF International Conference on Computer Vision. 2023: 12728-12737. 文章目录 摘要1. 引言2. …

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Mysql集群

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Mysql集群 MySQL 集群是一种高可用性、高性能的数据库解决方案,旨在支持分布式应用程序,允许多个 MySQL 实例以集群的方式共同工作,提供数据冗余和故障恢复能力 搭建Mysql集群…

C++11新特性和扩展(1)

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 C11新特性和扩展 收录于专栏 [C进阶学习] 本专栏旨在分享学习C的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1.C11简介 2. 列表初始…

数据转换器——佛朗哥Chater2

【注:本文基于《数据转换器》一书进行学习、总结编撰,适合新手小白进行学习】 目录 2.1 数据转换器类别 2.2 工作条件 2.3 转换器性能参数 2.3.1 基本特性参数 2.4 静态性能参数 2.5 动态性能参数 2.6 数字和开关性能参数 2.1 数据转换器类别 转换器类型可以被分为两…

JUC高并发编程1:JUC概述

1 什么是JUC 1.1 JUC简介 JUC就是 java.util .concurrent 工具包的简称。这是一个处理线程的工具包,JDK 1.5 开始出现的。 1.2 进程与线程 进程(Process)和线程(Thread)是操作系统中用于实现多任务处理的两种基本概…

python爬虫案例——抓取链家租房信息

文章目录 1、任务目标2、分析网页3、编写代码1、任务目标 目标站点:链家租房版块(https://bj.lianjia.com/zufang/) 要求:抓取该链接下前5页所有的租房信息,包括:标题、详情信息、详情链接、价格 如: 2、分析网页 用浏览器打开链接,按F12或右键检查,进入开发者模式;因…

spring 代码执行(CVE-2018-1273) 靶场攻略

靶场环境 vulhub/spring/CVE-2018-1273 漏洞复现 1.访问靶场地址 2.填写注册信息,bp抓包 3.添加poc username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/zcc")]&password&repeatedPassword 4.…

红黑树:强大的数据结构之插入详解,附图

一、红黑树概述 红黑树是一种自平衡二叉查找树,具有以下性质:节点要么是红色要么是黑色;根节点是黑色;每个叶子节点(NIL 节点)是黑色;每个红色节点的两个子节点都是黑色;从任一节点到…

Matlab|考虑柔性负荷的综合能源系统低碳经济优化调度

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 程序主要实现的是考虑柔性负荷的综合能源系统低碳经济优化调度,模型参考《考虑柔性负荷的综合能源系统低碳经济优化调度》,求解方法采用的是混合整数规划算法,通过matlabc…

C++_23_STL容器

文章目录 STL容器概念常用容器A string作用构造函数基本赋值操作获取字符串长度存取字符操作拼接操作查找和替换注意:查找是不存在返回-1比较操作截取操作插入与删除string与char * 转换 B vector概述与数组区别迭代器构造函数赋值操作插入与删除取值操作大小相关存储自定义类型…

【逐行注释】扩展卡尔曼滤波EKF和粒子滤波PF的效果对比,MATLAB源代码(无需下载,可直接复制)

文章目录 总述源代码运行结果改进方向总述 本代码使用 M A T L A B MATLAB MATL</

用c++实现分数(fraction)类

这个想法已经有3周&#xff0c;于是今天将它实现了。 Step 1基础&#xff1a; 我们需要定义一个class——fraction&#xff0c;全部属性定义为public class fraction{ public:}; 现在&#xff0c;让我们添加2个元素&#xff0c;分子和分母——fz和fw Step 1.1添加分子分母…

Linux C++ 开发9 - 手把手教你使用gprof性能分析工具

1. 什么是gprof&#xff1f;2. gprof的用法 2.1. 编译程序2.2. 运行程序2.3. 生成分析报告2.4. gprof常用参数说明2.5. 分析报告解读 2.5.1. Flat profile 各个字段的含义2.5.2. Call graph 各个字段的含义 3. Demo演示 3.1. demo04.cpp 源码3.2. 编译、运行和分析3.3. 查看分…

快速搭建Kubernetes集群

快速搭建Kubernetes集群 1 MacOS 1.1 下载 从 docker 下载 docker-desktop (opens new window)&#xff0c;并完成安装 1.2 启用 k8s 集群 启动 docker-desktop&#xff0c;打开preference 面板 切换到 Kubernetes 标签页&#xff0c;并勾选启动 Enable Kubernetes&#xff0c;…