YOLOv8从菜鸟到精通(二):YOLOv8数据标注以及模型训练

server/2025/1/18 3:56:51/

数据标注

前期准备

先打开Anaconda Navigator,点击Environment,再点击new(new是我下载anaconda的文件夹名称),然后点击创建

点击绿色按钮,并点击Open Terminal

输入labelimg便可打开它,labelimg是图像标注工具,在上篇文章中有讲到如何下载

标注工具的使用

找个空目录新建一个文件夹,我这里名称叫做yolotest,也可以设置其他名称

在 yolotest 目录下新建labels和images文件夹

在images文件夹新建test,train,val三个文件夹

在labesl下面新建train,val两个文件夹

images文件夹下面的test,train,val三个文件夹,全部存放相同的要训练的图片,例如train下面是 1.png,2.png,将这个两个文件复制一份到val,再复制一份到test

labels下面的train,val两个文件夹存放的是用labelimg标注的标签数据文件,等会 labelimg 使用会用到这个文件夹

将准备好的图片放到 images/train 文件夹下面并且复制一份到 images/val 和 images/test两个文件夹

数据集获取:https://storage.googleapis.com/openimages/web/visualizer/index.html?type=detection&set=train&c=%2Fm%2F05676x

来到labelimg界面,点击 Open Dir 按钮,选择到你的 images/train 文件夹即可,例如 D:\YOLOv8\yolotest\images\train。点击 Change Save Dir 按钮,选择到你的 labels/train 文件夹即可,例如 D:\YOLOv8\yolotest\labels\train。最后点击Save 下面的格式按钮,调整到 YOLO 格式的模式即可。

接下来开始标注数据

我选的例子是苹果,首先在图片上右键菜单,选择 Create RectBox 选项,或者点击左侧的 Create RectBox

苹果图片区域拉出选框,会弹出框,输入分类名称,这里填写的是apple,点击ok即可保存 ,这分类名称注意后面函数调用要用到。

此时在使用时可能会出现如下错误

解决方法

找到canvas.py,例如:D:\anaconda\envs\yolotest\Lib\site-packages\libs\canvas.py,打开它将526、530、531行的float改为int即可。

修改前后

修改完成后就可以正常工作啦!!!

我们继续接着上步,第一个图片标注完成后,点击左侧的 Save 按钮保存,然后点击 Next Image 切换标注下一张图片,操作和第一张图片类似

图标标注保存后,会在 labels/train 文件夹存储了标注的数据,classes.txt内容就是分类名称,其他的是和图片相同的名称的txt标注文件

最后,将 labels/train 文件夹数据复制到 labels/val 文件夹,等会验证模型的时候使用

至此,数据标注就完成啦!

模型训练

在 yolotest 文件下新建一个训练的配置文件,例如文件名称叫 apple.yaml,使用记事本打开,填写内容如下

path: D:/YOLOv8/yolotest
train: images/train
val: images/val
test: images/test
nc: 1
names: ["apple"]

# 有多个类别的话,按照以下方法写

# names: ["111","222"]

  • 参数解释

 path: 代表训练的根目录,这里的 yolotest在D盘,就写 D:/YOLOv8/yolotest,其他盘的路径自己修改

train: 代表要训练的图片文件夹,相对于path路径

val: 代表要验证的图片文件夹,相对于path路径

test: 代表要测试的图片文件夹,相对于path路径

nc: 代表分类名称数量,这是1个,因为使用labelimg标注的是1个类别,如果是多个数据就跟和实际类别数量一样的即可

names: 是一个json数组,代表的是标注的分类名称,labelimg使用的是apple这一个分类名称,这里就这样写即可

切记如果有多个分类名称的话名称的顺序不要写错,会影响训练结果

开始训练

在控制台输入命令,在cmd窗口,输入d:回车,在输入 cd YOLOv8/yolotest,进入这个文件夹 yolotest,其他路径自行进入

输入以下训练命令,下面两个任选一个,截图参数看ultralytics官网

yolo detect train data=d:/YOLOv8/yolotest/apple.yaml model=d:/YOLOv8/yolotest/yolov8s.pt imgsz=640

yolo detect train data=d:/YOLOv8/yolotest/apple.yaml model=d:/YOLOv8/yolotest/yolov8s.pt epochs=100 imgsz=640

这个时候系统会下载yolov8s.pt的基础训练文件

环境配置成功,一切无误,开始训练

训练完毕,注意这里的 Results saved后面的路径是动态的,截图中是在 runs/detect/train文件夹下,就是D:/YOLOv8/yolotest文件夹下

最后,在训练完成的目录中可以找到 best.pt 的训练模型以及训练中被标记和选中目标的图片结果集


http://www.ppmy.cn/server/159253.html

相关文章

微软徽标认证WHQL

什么是微软徽标认证? WHQL认证,也叫Windows徽标认证,是Windows硬件设备质量实验室(Windows Hardware Quality Labs)的简称。由微软设立的这项认证标准,通过使用微软的测试平台对设备和驱动进行严格的测试&a…

【Rust自学】12.5. 重构 Pt.3:移动业务逻辑

12.5.0. 写在正文之前 第12章要做一个实例的项目——一个命令行程序。这个程序是一个grep(Global Regular Expression Print),是一个全局正则搜索和输出的工具。它的功能是在指定的文件中搜索出指定的文字。 这个项目分为这么几步: 接收命令行参数读取…

PostMan测试webSocket接口(保姆级教程)

前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注一下! 也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!让我们在成长的道路上互相学习&…

springboot 整合jsp

注意&#xff1a; 非专业技术人员用于研究 该项目已过时 pom.xml依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&quo…

《深入理解Mybatis原理》Mybatis中的缓存实现原理

一级缓存实现 什么是一级缓存&#xff1f; 为什么使用一级缓存&#xff1f; 每当我们使用MyBatis开启一次和数据库的会话&#xff0c;MyBatis会创建出一个SqlSession对象表示一次数据库会话。 在对数据库的一次会话中&#xff0c;我们有可能会反复地执行完全相同的查询语句&…

《AI赋能鸿蒙Next,打造极致沉浸感游戏》

在游戏开发领域&#xff0c;鸿蒙Next系统与人工智能技术的结合为开发者们带来了前所未有的机遇&#xff0c;使打造更具沉浸感的游戏成为可能。以下将深入探讨如何利用人工智能在鸿蒙Next上开发出令人身临其境的游戏。 利用AI优化游戏角色智能行为 在传统游戏中&#xff0c;非…

【人工智能】Python中的自动化机器学习(AutoML):如何使用TPOT优化模型选择

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门&#xff01; 解锁Python编程的无限可能&#xff1a;《奇妙的Python》带你漫游代码世界 随着机器学习在各行业的广泛应用&#xff0c;模型选择和优化成为了数据科学家面临的主要挑战之一。自动化机器学习&am…

【Java】LinkedHashMap (LRU)淘汰缓存的使用

文章目录 **1. initialCapacity&#xff08;初始容量&#xff09;****2. loadFactor&#xff08;加载因子&#xff09;****3. accessOrder&#xff08;访问顺序&#xff09;****完整参数解释示例****示例验证** LinkedHashMap 在 Java 中可维护元素插入或访问顺序&#xff0c;并…