在自定义数据集上训练 YOLOv8 进行目标检测

news2025/1/8 5:58:40

这是目标检测中令人惊叹的 AI 模型之一。在这种情况下,您无需克隆存储库、设置要求并配置模型,就像在 YOLOv5 及其之前的版本中所做的那样。

在 YOLOv8 中,不需要执行这些手动任务。您只需安装 Ultralytics 即可,我将向您展示如何通过一个简单的命令安装它。

这是一个提升了先前 YOLO 版本成功率的模型,同时增加了新的功能和改进,以提高性能和灵活性。YOLOv8 是进行各种目标识别和跟踪、实例分割、图像分类和姿态估计任务的理想选择,因为它旨在快速、精确且易于使用。YOLOv8 的官方网站如下:https://github.com/ultralytics/ultralytics/

我们可以使用该模型执行三种类型的任务:

(1) 检测

(2) 分割

(3) 分类

检测

我们可以从下表中选择任一模型进行目标检测:

1315180b4b5a823c5fee633170329569.jpeg

分割

我们可以从下表中选择任一模型进行图像分割:

dfe30a953398b6cbe44f80ddb8f34877.jpeg

分类

我们可以从下表中选择任一模型进行图像分类:

4001d9e8c81ebc020d8aa6302b771d1b.jpeg

您可以在下面找到一个快速入门的安装和使用示例,以及完整的培训、验证、预测和部署文档可在 yolov8 文档中找到(https://docs.ultralytics.com/)。

使用 YOLOv8 有两种方式:

(1) CLI — 命令行界面

(2) Python 脚本

现在我将使用 Google Colab 进行训练。在安装之前,我需要连接到我的 GPU。

c968d6673947aae77976b986ce0be07b.jpeg在上述屏幕中选择 GPU 作为硬件加速器后,点击“保存”按钮。

挂载 Google 云硬盘,以便 Colab 可以访问它的文件。

85197519e9db28ea506432fb59e448d0.jpeg点击上述屏幕中的“连接到Google Drive”按钮后,选择挂载按钮。现在我们的笔记本已连接到Google Drive。

要测试是否获得了GPU,请在Colab上写入以下命令:

cec3f55e875cf43ffb9e12169e747d7d.jpeg

我们将通过下面的单个命令安装 YOLOv8 的所有要求和依赖项:

6310ba56e23396d85624801d03c0e270.jpeg

74d515a85fa187a7b5067b1c36e04520.jpeg现在安装成功了。

它有三种模式:

(1) 训练模式 — 表达为 mode = train

(2) 验证模式 — 表达为 mode = val

(3) 预测模式 — 表达为 mode = predict

它执行三种类型的任务:

(1) 检测 — 表达为 task = detect

(2) 分割 — 表达为 task = segment

(3) 分类 — 表达为 task = classify

测试它是否工作,运行以下命令:

e23165531451d07e55887132ae3ce8c1.jpeg

首先,它会下载模型和图像,然后分别对图像进行预测。在这里,我们选择了检测表中的第一个模型 — yolov8n。在下面的屏幕中,我们可以看到模型和图像已下载,并且预测的图像已保存在 `runs/detect/predict/bus.jpg` 中。

3e764c63182e9d7029865f16c7486083.jpeg

输入图像:

86cdca8afb65e3ee7b97e51f7ab09c85.jpeg

预测的图像:

348a14bec4a4a6a34e9c63a59af35019.jpeg

现在,我将上传一张猫的图像到“images”文件夹进行预测:

6999de5a4028ffdd59d9dc4cd4cd2556.jpeg

运行以下命令以从图像中检测猫:

0f8983ad4bfb0ff80379b60a8214784f.jpeg

它成功地从图像中预测了猫,并将其保存到 `predict2` 文件夹中。

cad26e6b647671f9167a6e9c9cb12193.jpeg

执行分割:

在这里,我们使用了上面表格中的第一个模型 YOLOv8n-seg:

c0b17a17c879ea55ff13c5e9309d0f1e.jpeg

分割后的图像保存在 `runs/segment/predict` 中。

b90665681b608e6ba3d6f96b9e56bd16.jpeg

f82db13f886941c580fb784fa72f8dc8.jpeg

执行分类:

在这里,我们使用了上面表格中的第一个模型 YOLOv8n-cls:

18df6d869efaf7eccc7c84ab999903d2.jpeg

分类后的图像保存在 `runs/classify/predict` 中。

9e3d2e01e329e713fed5eb695b5ff91c.jpeg

开始自定义训练:

我有一个准备好的数据集已上传到以下 Google Drive 链接:

[Google Drive 数据集链接](https://drive.google.com/drive/u/1/folders/1QQVa1PoaDxhFBU2GJHXWARlpMB_i-qGs)

 Google Colab 笔记本链接:

[Google Colab 笔记本链接](https://colab.research.google.com/drive/1crJsLpHzKExZBot5DhDYGmfuTdi1KBxG?authuser=1#scrollTo=YpyuwrNlXc1P)

配置 `data.yaml` 文件:(我们使用上表中的第二个模型)

eb932afd4424280a4fa0f3b6fcaa2dd0.jpeg

45d3b95c25ffa519d1e11ccab2c4c036.jpeg

e286389295d6b6a159e322db04ae276a.jpeg

5565e55921581369daf6c04709b6e12a.jpeg

91359392a2e5a1860e9763462975f254.png

32a40b9e150b1657a4588ed9b7d0f59f.jpeg

a73e18b367405677868a57f9796ae37f.jpeg

6a76afcfb4b3dacae7c4f14391498b10.jpeg

a863edefe06fc5e042db560ac6511389.jpeg

这里, data = data.yaml。在 `data.yaml` 文件中,我列出了所有我的图像路径。因此,它将自动从该文件夹获取图像和标签。

b6bd33ffea3988f0289f3c2afdbc81d4.jpeg

a8bf84b132b26f857fd1a961bf4acba5.jpeg

上述代码的解释:

  • IPython.display:IPython 是一个增强型的交互式 Python shell,提供比默认 Python shell 更多功能。通过 IPython.display 模块,它是 IPython 的一个组件,您可以在 Jupyter Notebook 或 IPython 环境中直接显示各种内容类型(如图片、视频、音频、HTML 等)。

  • Image:IPython.display 模块的 Image 类是其中的一个特殊元素。在 Jupyter Notebook 或 IPython 上下文中,它使图像显示变得可能。这意味着您无需在不同的软件中打开它们,即可直接在笔记本中显示照片、图片或其他图像文件。

图像的路径作为输入传递给 Image 类,并且 display() 函数在您的笔记本中输出图像。请注意,图像文件需要是受支持的格式(如 JPG、PNG 或 GIF),并且需要在您的 IPython 环境或 Jupyter Notebook 中可用。

使用 IPython.display 和 Image 可以快速在笔记本中可视化图像,使它们更具教育性和吸引力。显示指定路径 'runs/detect/train/' 中的名为 "confusion_matrix.png" 的图像。

33e0f80b86c6811ee0ac0a30d0a97655.jpeg

上述代码的解释:

  • 通过上述代码 `Image(filename='runs/detect/train/confusion_matrix.png', width=600)` 显示 "confusion_matrix.png" 位于 'runs/detect/train/' 目录中。通过 `width=600` 选项将可见图像的宽度设置为 600 像素。

显示另一张名为 "confusion_matrix.png" 的图像,位于指定路径中:

47a960a5a810733a96f31cc8ab970b12.jpeg

显示另一张名为 "val_batch0_pred.jpg" 的图像,位于指定路径 'runs/detect/train/' 中:

9fd1ee6c34a12374c37494731fa3b031.jpeg

上述代码的解释:

  • 通过上述代码 `Image(filename='runs/detect/train/val_batch0_pred.jpg', width=600)` 显示 "val_batch0_pred.jpg" 位于 'runs/detect/train/' 给定路径中。通过 `width=600` 选项将可见图像的宽度设置为 600 像素。

使用训练好的 YOLO 模型在验证数据集上执行目标检测:

d482bae31328d328f55f822a50c7d131.jpeg

上述代码的解释:

  • 命令行工具 `!yolo`:命令的开头的 `!` 符号是 Jupyter Notebook 特有的,表示它是一个在笔记本环境中运行的 shell 命令。

  • `Yolo task=detect`:Yolo 是一个命令行工具,`task=detect` 指示它检测对象。

  • 当将 mode 参数设置为 val 时,将使用验证数据集完成任务。这用于评估在应用于新数据时训练的模型的性能。

  • `model=runs/detect/train/weights/best.pt`:指定用于检测的 YOLO 模型权重文件的路径。使用了在训练中获得的最佳权重(来自“train”模式)。

  • `data=data.yaml`:指定包含有关数据集、类别和训练和评估过程中使用的其他设置的数据配置文件(data.yaml)的路径。

使用自定义模型进行推理

使用训练好的 YOLO 模型在新图像上进行目标检测

377c4610064512b7db20cad68a47b1ec.jpeg

0bc304e1bfeb46e3456e5ec8ce2ed41b.jpeg

上述代码的解释:

  • 选项 `mode=predict` 指示该工具预测并识别提供的照片中的物体。使用它可以对新的、未使用过的照片进行预测。

  • `model=runs/detect/train/weights/best.pt`:这指示 YOLO 模型的权重文件的位置,该权重文件将用于检测。在使用模型进行预测之前,它必须首先在数据集上进行训练。

  • `conf=0.25`:对象检测的置信度阈值设置为 0.25。输出将显示任何置信度大于 0.25 的检测到的对象。

  • `source=test/images`:`source=test/images` 标识包含用于目标检测的图像的目录。在这个例子中,工具将在存储在 test/images 目录中的照片中找到对象。

·  END  ·

HAPPY LIFE

2b859a533c3ecbe404accb642c684bd6.png

本文仅供学习交流使用,如有侵权请联系作者删除

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

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

相关文章

C++:类(Class)

内容整理自:The Cherno:C系列,2024年1月18日 --------------------------------------------------------------------------------------------------------------------------------- 简单地说, 类,只是 数据功能 的整合体。…

SPI传感器接口设计与优化:基于STM32的实践

SPI(串行外设接口)是一种常用的串行通信协议,用于在微控制器和外部设备之间进行全双工的高速数据传输。在本文中,我们将探讨如何基于STM32微控制器设计和优化SPI传感器接口,并提供相应的代码示例。 1. SPI传感器接口设…

RXJS中Subject, BehaviorSubject, ReplaySubject, AsyncSubject的区别?

在RxJS(Reactive Extensions for JavaScript)中,Subject、BehaviorSubject、ReplaySubject和AsyncSubject都是Observable的变体,它们用于处理观察者模式中的不同场景。以下是它们之间的主要区别: 1、Subject: 是一种特…

【VMware】安装和卸载VMware的Ubuntu

安装视频:(全程无废话) https://www.bilibili.com/video/BV1W34y1k7ge/?spm_id_from333.337.search-card.all.click&vd_sourcefb8dcae0aee3f1aab700c21099045395

SegVol: Universal and Interactive Volumetric Medical Image Segmentation

Abstract 精确的图像分割为临床研究提供了有意义且结构良好的信息。尽管在医学图像分割方面取得了显著的进展,但仍然缺乏一种能够分割广泛解剖类别且易于用户交互的基础分割模型。 本文提出了一种通用的交互式体医学图像分割模型——SegVol。通过对90k个未标记的C…

Midjourney 1 月 17 日官方版本补丁更新公告,可能于二月底或三月向公众开放

Midjourney专区:Midjourney-喜好儿aigc 更多消息:AI人工智能行业动态,aigc应用领域资讯 功能更新和开发 修复/改变区域和缩小功能预计在本周或下周推出 测试一致的样式,强调样式而不是内容 常量字符功能正在开发中,但…

如何使用批量图片转换工具快速转换图片格式

你好!在我们的日常生活中,我们常常需要处理大量的图片。而有时候,我们可能会遇到一种情况,就是需要将多张图片批量转换为特定的格式,比如将图片批量转换为PNG格式。那么,如何实现这一操作呢?在本文中,我将…

详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议_ipsec esp

目录 IP安全概述 IPSec协议簇 IPSec的实现方式 AH(Authentication Header,认证头) ESP(Encapsulating Security Payload,封装安全载荷) IKE(Internet Key Exchange,因特网密钥…

漏洞检测和评估【网站子域扫描工具02】

上一篇:爬取目标网站的域名和子域名【网站子域扫描工具01】 在Python中,有一些流行的漏洞扫描库可以对子域进行漏洞扫描和评估,比如Nmap、Sublist3r等。 1.端口扫描 以下是一个简单的示例代码,展示了如何使用Nmap进行基本的端口扫…

基于springboot+vue的高校心理教育辅导系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

查看pip及Python版本

Python环境正确安装之后,按“WinR”组合键打开“运行”对话框,输入“cmd”,如下图 打开命令提示符窗口后,输入以下命令查看Python及pip的版本。 pip -V 如果命令提示符窗口能够正确显示pip及Python版本,则说明Python…

如何制作产品的说明书!跟我学!

​产品说明书可以清晰地描述产品的功能、使用方法、注意事项以及维护保养等方面。但很多朋友对于如何制作产品的说明书感到困惑,其实这并不难。今天,教大家如何制作一份简单明了的产品说明书。 我们需要选择合适的制作工具和格式。比如FLBOOK在线制作电子…

目标检测--01

基本概念 什么是目标检测? ​ 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状…

【动态规划】【离线查询】【前缀和】689. 三个无重叠子数组的最大和

作者推荐 【动态规划】【数学】【C算法】18赛车 本文涉及的基础知识点 动态规划 滚动向量 离线查询 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode689. 三个无重叠子数组的最大和 给你一个整数数组 nums 和一个整数 k &…

关键信息基础设施安全相关材料汇总

文章目录 前言一、法律(1)《中华人民共和国国家安全法》(2)《中华人民共和国网络安全法》(3) 《中华人民共和国密码法》(4)《中华人民共和国数据安全法》(5) 《中华人民共和国个人信息保护法》二、行政法规(6)《中华人民共和国保守国家秘密法实施条例》(7) 《关键信息基础设施安…

Java数据结构之图(头歌平台,详细注释)

第1关:图的表示 任务描述 图(Graph)是表示一些事物或者状态的关系的表达方法。由于许多问题都可以归约为图的问题,人们提出了许多和图相关的算法。 本关任务:学习图的相关概念和表示,并用邻接表示图。 相关…

python2实现数据库表定时全量同步sftp

python2实现数据库表定时全量同步sftp 需求 周边系统需要通过sftp接口,将本系统数据库的8张表吐给sftp,文件名为txt,提供的字段用#号分隔(逗号存在分隔不开的情况),8张表采用全量每天同步。 环境 操作系统centos7.…

Discuz论坛网站登录账号操作慢,必须强制刷新才会显示登录怎么办?

飞飞发现在登录服务器大本营账号时,输入账号密码登录后还是显示的登录框,强制刷新后才知道已经登录了,每次都要刷新才能正常显示,非常影响用户体验,于是在网上找了类似的问题故障解决方法,目前问题已经解决…

Maven普通工程和web工程创建

文章目录 创建项目前设置maven工程前设置工作创建项目前--》设置utf-8配置maven参数Maven普通工程和web工程创建Maven简单工程第一步:File–New–Project 第二步:选择maven然后下一步:填写后询选择finish初始化maven工程目录简介maven简单工程…

产品经理NPDP

产品经理是告诉团队做正确的事情,项目经理是告诉团队正确地做事情 产品经理的核心能力是商业洞察能力、产品规划与设计、团队管理能力。 产品经理国际资格认证(NPDP)