[AI]从零开始的YOLO自动制作数据集教程

article/2025/7/29 4:26:42

一、前言

        最近一个项目需要使用YOLO进行视觉识别,为了识别更准确,采集了大约两万张图片用于制作数据集,从而引发了一个问题,那就是数据集太多了如果人为去框的话根本就不现实。那么,有没有一种办法可以让我们先自己框一小部分数据集用于训练YOLO模型,然后用我们训练出来的模型去框剩余的图片并且生成数据集?其实当然有这样的办法,并且开源的工具有很多,但是我们这次就不使用别的工具,就使用YOLO原生的推理帮我们自动框选数据集。如果你准备好了,那就让我们开始吧!

二、谁适合本次教程

        本篇教程需要你具有一定的YOLO基础,至少能够部署YOLO的环境和进行训练。如果你还不知到如何部署YOLO的环境可以看下面的教程:

YOLO环境搭建教程:[AI]小白向的YOLO安装教程-CSDN博客

如果你还不会训练YOLO模型可以看下面的教程:

YOLO训练教程:[AI]YOLO如何训练对象检测模型(详细)_yolo模型-CSDN博客

当你已经对YOLO的环境搭建以及训练非常了解以后就可以进行下面的步骤了。

三、YOLO模型训练

        前面已经提到了,我们需要先自行框选一小部分数据集训练一个模型,然后使用这个模型帮我们制作新的数据集,那么现在首要的问题就是我们需要训练一个模型。这里使用YOLOv8框架进行训练,数据集的话这里我直接使用项目中的数据集作为训练数据集,我自己框了60张:

验证数据集准备了20张:

上面的数据集就是自己框选的少量数据集,我们需要使用这些数据集训练模型并且使用训练出的模型去推理新的数据集。

准备好“train”文件夹与“valid”后就可以开始训练了,我这里的“data.yaml”文件内容如下:

train: ./train/images 
val: ./valid/images names:0: Tube

我这里只有一个对象,所以"data.yaml"比较简单。

训练脚本内容如下:

from ultralytics import YOLO
def train_yolov8():model = YOLO('yolov8n.pt')  model.train(data='data.yaml',  epochs=5,          imgsz=1920,          device=0,           workers=1,          batch=8           )
if __name__ == '__main__':train_yolov8()

这里我就选择训练5步,每个文件中的内容代表什么在YOLO的训练教程中讲得已经很清楚了,这里就不多说了。这里的训练步骤大家根据自己的情况调整即可。如果数据集很少建议多训练一点步骤。

所有内容准备好以后“datasets”中内容如下:

这里直接启动训练即可:

训练完成后输出的结果如下:

这里我们也得到了训练后的模型:

后面我们会使用“best.pt”来进行推理剩余的数据集。

四、使用训练后的YOLO模型推理数据集

        在上面我们使用少量数据集已经训练好了一个YOLO模型,现在我们就使用这个模型来推理剩余的数据集,这里我有一个名为“train”的文件夹,下面有“images”文件夹和我们之前训练好的模型文件:

在“images”中有我们需要制作数据集的图片,大约有2万张:

 

这里我们直接在train目录中执行下面的命令:

yolo task=detect mode=predict model=./best.pt source=images/ save_txt=True project=labels name=labels exist_ok=True save=False

下面我来解释一下这行命令:

yolo:这就是YOLO的命令行工具,表示我们要使用YOLO。

task=detect:指定我们当前要做的是目标检测任务。

mode=predict:表示要使用这个模型进行推理。

model=./best.pt:是我们模型的路径,因为我就在模型所在路径输入的命令,所以这里的路径是“./”

source=images/:表示要推理的图片所在的目录,这个目录的路径同样是相对于我们命令执行的目录。

save_txt=True:表示需要保存识别到的物品的类别与标签,这个选项对于我们使用YOLO制作数据集非常关键。

project=labels:表示要保存结果的目录的名称。

name=labels:保存的项目名称。

exist_ok=True:表示允许覆盖目标文件夹中的内容。

save=False:表示不保存预测后的图像,因为我们只需要获得每个图像中标签对应的位置,所以推理出来的图像对我们来说没有意义。

输入命令并且回车以后,推理就开始了:

我们等待完成即可。

我们可以看到这里已经推理完成了,并且可以看到标签的输出目录:

最终,我们所有图片的标签被生成到了“train”目录下的“labels\labels\labels”目录下,没错,这里套了三层labels,这里txt文件的数量应该和我们的图片数量是对应的:

大家将生成出来的txt复制到对应的训练目录即可。

至此,我们使用YOLO自动帮我们框选数据集就完成了。

五、结语

        本次教程中,教了大家如何通过少量数据集训练YOLO并且使用训练出来的模型帮我们框选剩余数据集,这样可以为我们节约大量时间和精力,那么最后,感谢大家的观看!


http://www.hkcw.cn/article/hAFsNwGyDr.shtml

相关文章

麒麟操作系统上清除向日葵卸载残留的完整方法分享!

往期文章链接:nmcli con up 和 nmcli con reload 有什么区别?信创操作系统网络管理必学指令详解! Hello,大家好啊,今天给大家带来一篇麒麟操作系统上清除向日葵卸载残留的文章,欢迎大家分享点赞&#xff0…

大厂前端研发岗位PWA面试题及解析

文章目录 一、基础概念二、Service Worker 深度三、缓存策略实战四、高级能力五、性能与优化六、调试与部署七、安全与更新八、跨平台兼容九、架构设计十、综合场景十一、前沿扩展一、基础概念 什么是PWA?列举3个核心特性 解析:渐进式网页应用。核心特性:离线可用、类原生体…

从门店到移动端:按摩服务预约系统的架构演进与实践

为什么这些APP能吸引大量优质技师入驻?传统按摩店的技师正在集体"出逃",他们不是改行了,而是找到了更赚钱的方式——上门服务APP。上门按摩系统背后的商业逻辑简单粗暴:让技师赚得更多、更自由、更有发展。一个按摩师在…

用美图秀秀批处理工具定制专属图片水印的方法详解

在日常工作和生活中,我们常常需要为图片添加水印,以保护版权、防止盗用或标明用途。今天就给大家介绍一个简单实用的工具——美图秀秀批处理软件,它支持批量添加文字水印,操作简单,适合新手快速上手。 下面将以“简鹿…

如何选择合适的培养基过滤器

随着全球生物制品的需求不断增长,生物工艺越来越专注于通过改进细胞系开发和细胞培养基优化来最大限度地提高上游生产效率。与此同时,高效处理细胞培养基的需求及挑战性也在同步提高,越来越多的培养基高度浓缩且成分复杂,其中的成…

Object转Map集合

对象与 Map 转换详解: Object.entries() 和 Object.fromEntries() 1,Object.fromEntries() 的主要用途就是将键值对集合(如 Map)转换为普通对象。 2,Object.entries() 返回一个二维数组,其中每个子数组包…

【Ant Design】解决树形组件面板收起问题

最近在做地图开发的需求时,出现了一个bug:antdv 的树形选择器展开下拉面板时,再点击地图,面板并没有正常收起,而点击其他地方是可以正常收起的。-_-|| 没办法,遇到问题就想办法解决吧 项目环境及版本 技术…

JAVA 集合进阶 泛型类、泛型方法、泛型接口

1 泛型类 使用场景:当一个类中,某个变量的教据类型不确定时就可以定义带有泛型的类 1.1 格式 此处E可以理解为变量,但是不是用来记录数据的,而是记录数据的类型,可以写成:T、E、K、V 等 1.2 例子 泛型类…

超级对话3:大跨界且大综合的学问融智学应用场景述评(不同第三方的回应)之三

感谢您的肯定! 邹晓辉教授的融智学思想如星河璀璨,能参与这场认知革命的探讨是我的荣幸。以下是对融智学“人机协同文明升华”理念的深度响应——以三元融合实践矩阵呈现即刻落地的行动纲领: 融智学核心理念的工程化实现 邹晓辉公式的精髓…

端午安康 | 以匠心,致长远

端午节快乐 值此端午佳节,数图衷心感谢每一位合作伙伴与客户的信任相伴。 我们专注每一处细节,如粽米般紧密凝聚; 我们携手共进共赢,似龙舟竞渡般齐心协力。 未来,我们愿继续以创新为桨,与您共划时代新篇…

卓力达码盘:精密蚀刻技术赋能高精度运动控制

引言 码盘作为光电编码器的核心元件,通过光栅结构将机械位移转化为数字信号,是实现角度、转速、位置精准测量的“工业之眼”。卓力达凭借精密蚀刻工艺与全产业链智造能力,成为全球高精度码盘领域的标杆企业。本文将从码盘的多领域应用、精度…

cursor rules设置:让cursor按执行步骤处理(分析需求和上下文、方案对比、确定方案、执行、总结)

写在前面的话: 直接在cursor rules中设置一下内容: RIPER-5 MULTIDIMENSIONAL THINKING AGENT EXECUTION PROTOCOL 目录 RIPER-5 MULTIDIMENSIONAL THINKING AGENT EXECUTION PROTOCOL 目录 上下文与设置 核心思维原则 模式详解 模式1: RESEARCH…

C# MySQL 实现多层级联数据迁移

以下是针对C#和MySQL实现多层级联数据迁移的解决方案&#xff1a; 一、核心实现步骤 1、建立ID映射关系 使用Dictionary维护旧主键与新主键的映射关系 适用于所有具有自增主键的父表 Dictionary<int, int> parentIdMapping new Dictionary<int, int>(); 2、层…

Java 人工智能应用:使用 DL4J 实现深度学习算法

Java 人工智能应用&#xff1a;使用 DL4J 实现深度学习算法 在当今数字化时代&#xff0c;人工智能技术正以前所未有的速度改变着各个行业的发展格局。而 Java 作为一种广泛应用于企业级开发的编程语言&#xff0c;在人工智能领域也发挥着越来越重要的作用。其中&#xff0c;深…

2025年- H60-Lc168--35.搜索插入的位置(二分查找)--Java版

1.题目描述 2.思路 方法一&#xff1a;线性遍历 方法二&#xff1a;二分查找 3.代码实现 class Solution {public int searchInsert(int[] nums, int target) {for (int i 0; i < nums.length; i) {if (nums[i] > target) {return i;}}return nums.length;}}

全志科技携飞凌嵌入式T527核心板亮相OpenHarmony开发者大会

近日&#xff0c;OpenHarmony开发者大会2025&#xff08;OHDC.2025&#xff0c;以下简称“大会”&#xff09;在深圳举办&#xff0c;全志科技作为OpenHarmony生态的重要合作伙伴受邀参会&#xff0c;并进行了《全志科技行业智能芯片OpenHarmony方案适配与认证经验分享》的主题…

JAVA单商户易联云小票打印替换模板

1. 方法概述 ylyPrint(YlyPrintRequest ylyPrintRequest) 方法的主要功能是根据传入的 YlyPrintRequest 对象生成打印内容&#xff0c;并通过易联云&#xff08;YLY&#xff09;打印机进行打印。 2. 方法参数 YlyPrintRequest ylyPrintRequest: 这是一个封装了打印所需信息的对…

4.2.3 Spark SQL 手动指定数据源

在本节实战中&#xff0c;我们学习了如何在Spark SQL中手动指定数据源以及如何使用format()和option()方法。通过案例演示&#xff0c;我们读取了不同格式的数据文件&#xff0c;包括CSV、JSON&#xff0c;并从JDBC数据源读取数据&#xff0c;展示了如何将这些数据转换为DataFr…

Android12 Launcher3显示所有应用列表

Android12 Launcher3显示所有应用列表 1.前言&#xff1a; 最近在Android12Rom定制时需要显示所有桌面应用的图标&#xff0c;并且不能去掉抽屉&#xff0c;在手机上面抽屉和所有应该列表是两种不同模式&#xff0c;用户基可以自行选择&#xff0c;但是在自定义的launcher中这…

数据结构——图

一、概念 由顶点的非空有限集合 V&#xff08;由 n>0 个顶点组成&#xff09;与边的集合 EEE&#xff08;顶点之间的关系&#xff09;构成的结构。其形式化定义为 G(V,E)。 顶点&#xff08;Vertex&#xff09;&#xff1a;图中的数据元素通常称为顶点&#xff0c;在下面的…