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

这是目标检测中令人惊叹的 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.mzph.cn/news/631636.shtml

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

相关文章

uniapp开发小程序—scroll-view实现内容滚动时, 标题也滚动

一、需求 scroll-view实现内容滚动时&#xff0c; 标题也滚动 二、效果 三、代码实现 <template><view class"content"><view class"head">头部固定区域</view><view class"list_box"><!-- 菜单左边 -->&l…

【c++】栈(satck)和队列(queue)

目录 一、stack 1.stack的介绍 2.stack的使用 3.stack的模拟实现 二、queue 1.queue的介绍 2.queue的使用 3.queue的模拟实现 三、priority_queue 1.priority_queue的介绍 2.priority_queue的使用 一、stack 1.stack的介绍 &#xff08;1&#xff09;stack是一种容…

pytest -- 基本使用详解

1. pytest基本介绍 pytest 是一个功能强大且易于使用的 Python 测试框架&#xff0c;用于编写单元测试、集成测试和功能测试。 它提供了丰富的功能和灵活的用法&#xff0c;使得编写和运行测试变得简单而高效。 --------------->>>>> pytest框架优点&#xff1a…

企业怎么传输大容量视频?

在企业中&#xff0c;视频的应用越来越广泛&#xff0c;不论是在内部沟通、培训、宣传&#xff0c;还是在外部合作、推广、展示方面&#xff0c;视频都扮演着不可或缺的角色。然而&#xff0c;由于视频文件通常较大&#xff0c;传输时往往会面临网速慢、容量限制、安全风险等问…

flutter 五点一:MaterialApp Theme

ThemeData factory ThemeData({bool? applyElevationOverlayColor, //material2的darkTheme下 增加一个半透明遮罩 来凸显阴影效果 material3下无效 貌似没啥用NoDefaultCupertinoThemeData? cupertinoOverrideTheme, //ios组件样式 Iterable<ThemeExtension<dyn…

【Java基础_01】Java运行机制及运行过程

【Java基础_01】Java运行机制及运行过程 文章目录 【Java基础_01】Java运行机制及运行过程1.Java 运行机制及运行过程1.1 Java 核心机制-Java 虚拟机 [JVM java virtual machine] 1.2 JDK&#xff0c;JRE1.3 JVM,JDK和JRE1.4 环境变量path1.4.1 为什么要配置path1.4.2 配置环…

Mesh自组网通信技术概述

Mesh自组网核心技术 Mesh自组网&#xff08;Mesh Networking&#xff09;是一种网络技术&#xff0c;主要用于在多个节点之间建立动态的、自我管理的网络连接。这种技术的核心在于其自我组织和自我修复的能力&#xff0c;使得网络能够在节点移动或节点故障时自动调整。以下是Me…

2024.1.17 用户画像day02 - Elastic Search

目录 ES和数据库的类比 ELK集中日志协议栈介绍 ES的介绍 ES的架构 ES中的名词 ES中的角色 分片与副本的区别在于: MYSQL分库与分表: 倒排序索引: ES写入数据原理: ES读取、检索数据原理: 重点: ES 的架构 , ES读写的原理 ES和数据库的类比 关系型数据库非关系型数…

C++发展史

目录 什么是C C的发展史 C的重要性 C在实际工作中的应用 “21天教你学会C” 什么是C 先看看祖师爷&#xff0c;记得多拜拜&#x1f92d; C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的 程序&#xff0c;需要高度…

Vue3 + Electron框架读取程序外部配置文件

网上找了一堆都不行&#xff0c;根据这个步骤来肯定能用 1. 在项目下新建一个config.json文件 2. json文件中写入一些配置 3. vue.config.js中配置打包时把config.json文件copy到应用目录下 pluginOptions:{electronBuilder:{nodeIntegration:true,builderOptions: {extraReso…

MySQL表的基本插入查询操作详解

博学而笃志&#xff0c;切问而近思 文章目录 插入插入更新 替换查询全列查询指定列查询查询字段为表达式查询结果指定别名查询结果去重 WHERE 条件基本比较逻辑运算符使用LIKE进行模糊匹配使用IN进行多个值匹配 排序筛选分页结果更新数据删除数据截断表聚合函数COUNTSUMAVGMAXM…

怎样实现安全便捷的网间数据安全交换?

数据安全交换是指在数据传输过程中采取一系列措施来保护数据的完整性、机密性和可用性。网间数据安全交换&#xff0c;则是需要进行跨网络、跨网段甚至跨组织地进行数据交互&#xff0c;对于数据的传输要求会更高。 大部分企业都是通过网闸、DMZ区、VLAN、双网云桌面等方式实现…

2024美赛数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模…

redis数据安全(一)数据持久化

一、Redis数据安全措施: 1、将数据持久化至硬盘 2、将数据复制至其他机器&#xff1b; 复制是在数据持久化的基础上进行的。 二、将数据持久化至硬盘 1、介绍&#xff1a;Redis是一个基于内存的数据库&#xff0c;它的数据是存放在内存中&#xff0c;内存有个问题就是关闭…

Python中使用HTTP代理进行网络请求

在Python中&#xff0c;HTTP代理是一种常用的技术&#xff0c;用于控制和修改HTTP请求和响应。通过使用HTTP代理&#xff0c;我们可以更好地控制网络请求的行为&#xff0c;提高安全性、隐私性和效率。下面我们将详细介绍如何在Python中使用HTTP代理进行网络请求。 一、HTTP代…

风丘科技为您提供完整的ADAS测试方案

一 方案概述 随着5G通讯与互联网的快速发展&#xff0c;智能汽车和ADAS辅助系统的研究与发展在世界范围内也在如火如荼地进行。风丘科技紧跟时代脚步&#xff0c;经多年积累沉淀&#xff0c;携手整车厂与高校共同研发打造出了一套完整且适用于国内ADAS测试的系统方案。 | ADAS…

sql中的explain关键字用法

在SQL中&#xff0c;使用EXPLAIN关键字可以获取查询的执行计划&#xff0c;以便进行性能优化和查询调优。执行计划提供了关于查询操作的详细信息&#xff0c;涵盖了多个表头字段&#xff0c;每个字段都提供了特定的信息。以下是explain表头字段解释&#xff1a; id&#xff1…

工厂企业消防安全AI可视化视频智能监管解决方案

一、方案背景 2023年11月20日下午6时30分许&#xff0c;位于江苏省无锡市惠山区前洲街道的某公司突发严重火灾&#xff0c;共造成7人死亡。这次火灾提醒我们工业安全至关重要&#xff0c;企业都应该时刻保持警惕&#xff0c;加强安全意识和培训&#xff0c;提高应对突发事件的…

vue实现 marquee(走马灯)

样式 代码 <div class"marquee-prompt"><div class"list-prompt" refboxPrompt><span v-for"item in listPrompt" :title"item" class"prompt">{{item}}</span></div> </div>data() {…

【分布式监控】zabbix与grafana连接

1.在zabbix- server服务端安装grafana&#xff0c;并启动服务 先在官网下载软件 https://grafana.com/grafana/download/9.4.7?editionenterprise&pggraf&plcmtdeploy-box-1#可以翻译成中文介绍&#xff0c;很详细的教程 yum install -y https://dl.grafana.com/ent…