YOLOv10(1):初探,训练自己的数据

目录

1. 写在前面

2. 值得关注的点

3. 训练自己的数据集

4. 阅读代码的小建议


1. 写在前面

        很多人YOLOv9还没有完全研究透,YOLOv10出来了。

        惊不惊喜,意不意外!

        据论文里提到,YOLOv10就是为了加速推理,在保证精度的同时,降低参数量,减小计算量。就冲这,还没有研究YOLOv9的同学们,直接跳过吧。

        先说一句,如果大家不想动手,请不要客气,直接找我拿改动过的代码。

2. 值得关注的点

        论文提到,YOLOv10的研究团队为 YOLO 提出了整体效率 - 准确率驱动的模型设计策略,从效率和准确率两个角度全面优化 YOLO 的各个组件,大大降低了计算开销并增强了模型能力。研究过ELAN的同学有没有似曾相识的感觉,通过预设某种策略来设计网络,听上去和理解上去都很玄学,但是,对于我们这种本着用好就可以的同学,有用就是硬道理。

        此外,通过大量实验表明,YOLOv10 在各种模型规模上都实现了 SOTA 性能和效率。例如,YOLOv10-S 在 COCO 上的类似 AP 下比 RT-DETR-R18 快 1.8 倍,同时参数数量和 FLOP 大幅减少。与 YOLOv9-C 相比,在性能相同的情况下,YOLOv10-B 的延迟减少了 46%,参数减少了 25%。再一次划重点,可以先跨过YOLOv9,直接开搞YOLOv10。

        通过消除NMS的依赖性,通过利用空间通道解耦下采样排序指导的模块设计优化模型架构设计,YOLOv10在实时端到端目标检测领域具有重要意义。

3. 训练自己的数据集

(1)构造训练集

        YOLOv10所需要的训练数据集制式和YOLOv8、YOLOv9都是一样的,因此只要构建过YOLOv8、YOLOv9训练数据集的同学应该不会感觉到难。

        如果有对数据集制作有疑问的同学,可以私信我。

(2)做一些微小的改动

        YOLOv10的训练工作在开头的时候有些难,尤其是如果大家在README.md文件中看到如下内容的时候。

        不要担心,你只需要改动几个文件的几行代码,就可以以更轻松、更优雅的姿势开启训练。

第一步,修改配置文件

        修改ultralytics\cfg\default.yaml文件,设置好model和data,如下所示。

第二步,添加训练入口

        在ultralytics\models\yolov10\train.py文件中添加训练入口,具体的就是构建一个YOLOv10DetectionTrainer,然后开始训练。具体代码参考如下。

        请注意,以下图中有两点需要注意。

        M0:添加路径;

        M1:添加训练入口;

第三步,开始训练吧

        进入./yolov10-main/ultralytics/models/yolov10路径。

        执行python3 train.py开始训练吧。

4. 阅读代码的小建议

        YOLOv10和YOLOv8的代码结构略有相似。

        我们将整个代码结构划分为三条线,分别是Trainer、Model和YOLO。其实Model线和YOLO线是一样的,都是构建模型相关的东西。Trainer则是构建训练相关的内容。

Trainer的继承关系

        BaseTrainer - > DetectionTrainer -> YOLOv10DetectionTrainer

        通过实例化YOLOv10DetectionTrainer,来构建整体的训练脉络。

Model的继承关系

        task.py: BaseModel(nn.Module)

        task.py: DetectionModel(BaseModel)

        task.py: YOLOv10DetectionModel(DetectionModel)

YOLO的继承关系

        engine/model.py: class Model(nn.Module)

        yolo/model.py: class YOLO(Model)

        yolov10/model.py: class YOLOv10(YOLO)

   在YOLOv10DetectionTrainer中重载了get_model接口,用来实例化一个YOLOv10DetectionModel对象,开启训练。

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

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

相关文章

深入分析 Android BroadcastReceiver (二)

文章目录 深入分析 Android BroadcastReceiver (二)1. 深入理解 BroadcastReceiver 的高级使用和优化2. 有序广播(Ordered Broadcasts)2.1 实现有序广播 3. 粘性广播(Sticky Broadcasts)3.1 使用粘性广播 4. 本地广播(…

如何在SpringBoot中定义一个自定义的Starter?

在 Spring Boot 中创建一个自定义的 Starter 涉及到创建一个自动配置模块,包括了一组预选的依赖定义和自动配置类。以下是定义一个自定义 Starter 的步骤: 1. 创建自定义 Starter 项目 首先,创建一个新的 Maven 或 Gradle 项目作为自定义 S…

VSCode插件Sort Lines

Sort Lines是一款VSCode中的扩展,可以帮助你对所选文本或整个文件中的行进行排序。可以给你按字母大小排序(升序、降序),也可以进行排序去重。而且还能将所有文本打乱顺序。做短文本分类的训练,清洗数据集的时候&#…

《论个人成功与多种因素的关联》

《论个人成功与多种因素的关联》 基因与成长环境共同塑造出了努力向上的个体。通常看来,个人的成功源自自身努力,毕竟所有回报皆由努力及加倍付出换取。但从微观层面深入剖析,为何有人努力奋进,而有人却选择躺平?即便同…

Response

一、响应对象概述 1、什么是响应对象 响应,它表示了服务器端收到请求,同时也已经处理完成,把处理的结果告知用户。简单来说,指的就是服务器把请求的处理结果告知客户端。在B/S架构中,响应就是把结果带回浏览器。响应对…

汽车IVI中控开发入门及进阶(二十五):CVBS视频流

前言: AHD和CVBS是两种视频格式,在车载摄像头中,有支持传统CVBS模拟视频的摄像头,也有支持新的高分辨率AHD格式的摄像头。 CVBS视频是经典的模拟视频格式,在视频经常显示在小型监视器上的车辆上仍然最受欢迎。如果想要车辆的最大分辨率,可选择AHD格式,即高分辨率模拟视…

VRRP联动BFD的相关配置

今天就与大家分享VRRP联动BFD的相关配置,同时也会演示一下没有BFD的情况下,又是如何呢?前后做个对比,只要把情况了解清楚了,初学者才能更加深刻地掌握它。 一、实验拓扑图 二、配置思路 我们在做任何事情&#xff0c…

CTF中的命令执行绕过方式

引言 不论在CTF还是实战中,命令执行的场景五花八门,那么往往在一些小型比赛中,会以那种PING接口进行getflag操作。 0x01:管道符 在用linux命令时候,我们可以一行执行多条命令或者有条件的执行下一条命令,下面我们讲解…

24.6.2(动态开点线段树)

星期一: cf edu round 36 E cf传送门 题意:1到n天初始全为工作日,有两种操作,将 l-r 区间变为 工作日/休息日,每次操作后询问剩余总工作日有多少 思路&…

【npm】创建和发布无作用域的公共包

目录 1、创建包项目 2、进入目录 3、初始化项目 4、查看当前npm镜像源 5、切换镜像源 6、查看当前登录用户 7、登录 npm 用户 8、发布 9、查看公共包页面 10、删除已发布的npm包 11、📚总结 1、创建包项目 # 在命令行上,为包创建目录 mkdir…

Redis集群方案有哪些?

今天咱们来聊聊Redis集群方案,想象一下Redis是个超级大的储物柜,里面放满了你各种各样的宝贝(数据)。但随着宝贝越来越多,一个储物柜不够用了,这时候我们就得想方设法扩大空间,还要保证找东西依…

假指纹与活体指纹检测

目录 1. 假指纹简介 2. 假指纹制作流程 3. 活体指纹检测 4. 活体指纹检测竞赛 1. 假指纹简介 随着科学技术的发展,指纹技术以各种各样的形式进入了我们的生活。在大多数情况下,指纹识别应用于移动设备和桌面设备解决方案,以提供安全方便的…

Eclipse语言编程:深入探索与实用技巧

Eclipse语言编程:深入探索与实用技巧 在编程领域,Eclipse以其强大的功能和灵活的扩展性赢得了众多开发者的青睐。然而,对于初学者来说,Eclipse语言编程可能是一个充满挑战和困惑的领域。本文将从四个方面、五个方面、六个方面和七…

android高效读图方式——Hardwarebuffer读图

安卓上有许许多多使用OpenGL来渲染的原因,比方说做特效/动画/硬解/人脸识别等等。渲染完成后如何从gpu中把数据快速读取出来也是高效图像处理中的重要的一环。 相对于glReadPixel的同步读取方式,安卓GLES3.0提供了更高效快速的Hardwarebuffer读图方式&a…

Hyperf 框架常见面试题

Hyperf 是一个高性能的 PHP 微服务框架,它基于 Swoole 提供协程支持,适合构建高并发的服务。在面试中,针对 Hyperf 的问题可能会覆盖框架的基本使用、设计理念、性能优化、微服务实践等多个方面。以下是一些可能的 Hyperf 面试题及简要回答方…

摸鱼大数据——Hive调优1-3

hive官方配置url: Configuration Properties - Apache Hive - Apache Software Foundation 1、调优方式 hive参数配置的意义: 开发Hive应用/调优时,不可避免地需要设定Hive的参数。设定Hive的参数可以调优HQL代码的执行效率,或帮助定位问题。然而实践中…

Docker 安装部署(CentOS 8)

以下所有操作都是基于 CentOS 8 系统进行操作的。安装的 Docker 版本为 25.0.5-1.el8。 1、卸载老版本 Docker sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine注&a…

mmdet3D中文注释

# 版权声明: 本代码版权所有 (c) OpenMMLab。 import os from collections import OrderedDict from os import path as osp from typing import List, Tuple, Unionimport mmcv import numpy as np from nuscenes.nuscenes import NuScenes from nuscenes.utils.geometry_util…

基于学习的决策树

基于学习的决策树概述 决策树是一种监督学习方法,广泛应用于分类和回归任务中。基于学习的决策树模型通过学习数据中的特征来构建树状结构,帮助做出决策。以下是对基于学习的决策树的详细介绍,包括其基本概念、工作流程、构建算法、优势和挑…

利用人工智能实现量子计算

转载自:利用人工智能实现量子计算 2024年 5月 12日 By Mark Wolf https://developer.nvidia.com/zh-cn/blog/enabling-quantum-computing-with-ai/ 文章目录 一、概述二、改进量子处理器三、校正噪声量子位的误差四、开发高效的量子算法五、探索量子计算的人工智能 …