CV实战01 YOLOv5实现图像分割

网上翻了一天,没找到称心的教程,最后发现还是Ultralytics官方的教程文档好用!这里贴上官方教程一起学习!

【1:找到官方教程文档】

yolov5官方下载地址:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

下载方法如下:

下载后解压为文件夹打开,在“segment”目录下的文件【tutorial.ipynb】就是官方提供的教程了。

(注:.ipynb是notebook格式,若电脑编辑器无法打开也可在github网站单击打开)

【2:教程文档解读】

内容包括Setup、Predict、Validate、Train、Visualize、Environments、Status和Appendix共8个部分:

第1部分:Setup

从github网站采用git工具克隆到本地,并导入查看版本。(采用【第1步】方法下载也可以)

第2部分:Predict

 翻译:segment/predict.py在各种源上运行YOLOv5实例分割推理,从最新的YOLOv5版本自动下载模型,并将结果保存到runs/predict中。示例推理源有:

在notebook中输入如下命令开始预测:

(采用权重为yolov5s-seg.pt,由第4部分的Train步骤得到,图片放缩至640*640,置信度阈值设为0.25,预测对象为“data/images”目录下的所有图片) 

如显示下面结果则表示完成预测,预测结果保存在“runs/predict-seg/exp”目录下。

第3部分:Validate

教程文档采用coco数据集作为验证集

翻译: 在COCO数据集的val或测试分割上验证模型的准确性。模型自动从最新的YOLOv5版本下载。要按类显示结果,请使用——verbose标志。

在notebook中输入如下命令下载coco数据集:

 在notebook中输入如下命令开始验证:

 (采用权重为yolov5s-seg.pt,由第4部分的Train步骤得到,验证数据集采用coco.yaml文件中定义的路径读取,图片放缩至640*640,使用FP16半精度推理)

 如显示下面结果则表示完成验证,验证结果保存在“runs/val-seg/exp”目录下。

第4部分:Train

训练自己的数据:

教程文档推荐的是在线标注网站Roboflow,这个网站与yolo模型深度集成,功能强大且易上手。

文档还提供了使用roboflow制作图像分割数据集的详细教程:

Custom Training Exampleicon-default.png?t=O83Ahttps://blog.roboflow.com/train-yolov5-instance-segmentation-custom-dataset/

开始训练:

上面第1段代码是用于在Google Colab或类似的Jupyter Notebook环境中选择并初始化一个机器学习实验的logger(日志记录器)。Logger在机器学习项目中非常重要,因为它可以帮助你跟踪实验过程中的各种指标、参数和输出,从而更好地理解和比较不同的实验结果。这里提到的YOLOv5是一种流行的实时对象检测算法。

让我们逐行解析这段代码:

1. `# @title Select YOLOv5 🚀 logger {run: 'auto'}` 这是一个注释,但在Colab中它具有特殊意义。`@title`定义了一个可交互的小部件标题,在本例中是"Select YOLOv5 🚀 logger"。`{run: 'auto'}`意味着当用户更改这个小部件时,后面的代码会自动运行。

2. `logger = "Comet"  # @param ['Comet', 'ClearML', 'TensorBoard']` 定义了`logger`变量,并设置了默认值为"Comet"。这里的`# @param`注解允许创建一个下拉菜单,让用户可以在提供的选项中选择一种logger:Comet, ClearML 或 TensorBoard。

3. 接下来是一系列条件语句,根据`logger`变量的值来安装对应的库并进行初始化:
   - 如果选择了`Comet`,则使用`%pip install -q comet_ml`静默地安装Comet ML库,并通过`import comet_ml`导入该库,然后调用`comet_ml.init()`初始化Comet。
   - 如果选择了`ClearML`,则安装ClearML库,导入并登录到ClearML浏览器界面。
   - 如果选择了`TensorBoard`,则加载TensorBoard扩展,并启动TensorBoard服务指向`runs/train`目录,这通常是TensorFlow或PyTorch保存训练日志的地方。

总的来说,这段代码提供了一种方便的方式来配置不同类型的日志记录工具,这些工具可以用来监控和记录YOLOv5模型训练过程中产生的数据。这样可以根据需要灵活切换不同的日志系统,而无需手动修改大量的代码。

第5部分:Visualize

使用Comet网站在线可视化:

此外,使用ClearML网站在线可视化:

当然,也可以采用Tensorboard在本地进行实时可视化:

第6部分:Environments

这里的环境指运行python代码的平台,教程文档推荐4类环境,分别是1)可免费使用GPU的notebook:Gradient AI、Google Colab、Kaggle,2)谷歌云平台:Google Cloud,3)亚马逊计算平台:Manage AWS Resources - AWS Management Console - AWS.,4)Docker镜像:Ultralytics HUB

第7部分:Status

翻译:如果此徽章为绿色,则表示当前所有YOLOv5 GitHub Actions持续集成(CI)测试都通过了。CI测试每24小时在macOS, Windows和Ubuntu上验证YOLOv5训练(train.py),测试(value .py),推理(detect.py)和导出(export.py)的正确操作。

第8部分:Appendix

这段代码展示了如何使用 PyTorch Hub 来加载 YOLOv5 模型并进行推理(即对图像进行对象检测)。YOLOv5 是一个非常流行且高效的实时对象检测算法。下面是代码的详细解释:

1. **加载模型**:
   model = torch.hub.load(
       "ultralytics/yolov5", "yolov5s-seg", force_reload=True, trust_repo=True
   )
   - `torch.hub.load` 从指定的 GitHub 仓库中加载预训练模型。
   - `"ultralytics/yolov5"` 是仓库的名称,这里是 Ultralytics 的 YOLOv5 仓库。
   - `"yolov5s-seg"` 是要加载的具体模型名称。这里选择了 `yolov5s-seg`,它是一个轻量级的分割版本。你也可以选择其他变体,如 `yolov5n`, `yolov5m`, `yolov5l`, `yolov5x` 等。
   - `force_reload=True` 强制重新加载模型,即使缓存中已经存在。
   - `trust_repo=True` 表示信任这个仓库,允许执行其中的脚本。

2. **准备输入图像**:
   im = "https://ultralytics.com/images/zidane.jpg"
   - `im` 可以是文件路径、URL、PIL 图像、OpenCV 图像、NumPy 数组或列表。在这个例子中,`im` 是一个指向图像的 URL。

3. **进行推理**:
   results = model(im)
   - `model(im)` 对输入图像 `im` 进行推理,并返回检测结果。

4. **显示结果**:
   results.print()
   - `results.print()` 打印出检测到的对象及其置信度等信息。
   - 你还可以使用其他方法来处理结果:
     - `results.show()` 显示带有边界框和标签的图像。
     - `results.save()` 保存带有边界框和标签的图像到文件。
     - `results.crop()` 裁剪出检测到的对象并返回裁剪后的图像。
     - `results.pandas()` 将结果转换为 Pandas DataFrame 格式,方便进一步的数据处理和分析。

### 示例代码

下面是一个完整的示例代码,你可以直接在支持 PyTorch 和 Jupyter Notebook 或者 Google Colab 的环境中运行:

import torch# 加载模型
model = torch.hub.load("ultralytics/yolov5", "yolov5s-seg", force_reload=True, trust_repo=True)# 准备输入图像
im = "https://ultralytics.com/images/zidane.jpg"# 进行推理
results = model(im)# 打印结果
results.print()# 显示结果图像
results.show()

这段代码将下载并加载 YOLOv5s-seg 模型,对提供的图像进行对象检测,并打印和显示检测结果。

【3:train在线教程】

在第2章的第4部分train中,教程文档推荐了一个详细的在线教程,进行进去后页面如下:

 在线教程内容包含:环境设置、准备数据集、模型训练、测试与验证、模型性能提升、模型部署。

 具体内容这里就不展开细讲了,以后得空再专门写一篇。

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

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

相关文章

数字后端零基础入门系列 | Innovus零基础LAB学习Day1

一 Floorplan 数字IC后端设计如何从零基础快速入门?(内附数字IC后端学习视频) Lab5-1这个lab学习目标很明确——启动Innovus工具并完成设计的导入。 在进入lab之前,我们需要进入我们的FPR工作目录。 其中ic062为个人服务器账户。比如你端…

多线程代码案例

案例一.单例模式 单例模式是一种设计模式;类似于棋谱,有固定套路,针对一些特定场景可以给出一些比较好的解决方案; 只要按照设计模式来写代码,就可以保证代码不会太差,保证了代码的下限; --------------------------------------------------------------------------------…

【优选算法】(第三十六篇)

目录 ⼆叉树的锯⻮形层序遍历(medium) 题目解析 讲解算法原理 编写代码 ⼆叉树的最⼤宽度(medium) 题目解析 讲解算法原理 编写代码 ⼆叉树的锯⻮形层序遍历(medium) 题目解析 1.题目链接&#xf…

植物大战僵尸杂交版

最新版植物大战僵尸杂交版 最近本款游戏火爆 下载资源如下: win版本:2.3.7 链接:下载地址 提取码:9N3P Mac(苹果版本):2.0.0 链接:下载地址 提取码:Bjaa 介绍&#xff…

mysql/doris 计算两个时间相差n天n时n分示范

mysql/doris 计算两个时间相差n天n时n分示范 两个时间:so.create_time,so.update_time CONCAT(FLOOR(DATEDIFF(HOUR ,so.create_time,so.update_time)/24),天,DATEDIFF(HOUR ,so.create_time,so.update_time)%24,时,DATEDIFF(MINUTE ,so.create_time,so…

【重学 MySQL】六十六、外键约束的使用

【重学 MySQL】六十六、外键约束的使用 外键约束的概念关键字主表和从表/父表和子表外键约束的创建条件外键约束的特点外键约束的创建方式外键约束的删除外键约束的约束等级外键约束的级联操作外键约束的示例外键约束的作用开发场景阿里开发规范 在MySQL中,外键约束…

(已解决)vscode使用launch.json进行debug调试报错:Couldn‘t spawn debuggee:embedded null byte

Launch.json 进行debug时报错: 主要原因是vscode全局配置被整乱了,下面是个人解决的方法,以供参考. 在网上也寻找过解决方法,有的说是,在launch.json中,添加一行"python":"/root/miniconda3…

git版本控制软件,操作方法

git版本库操作 1. 注册用户信息 git config --global (邮箱和用户名) 2. 创建工作区 git init 3. 编写文件 vim readme.txt 4. 把文件放到暂存区 git add readme.txt 5. 查看工作区状态 git status 6. 把文件放到本地版本库里 git commit -m "" filename 7. 查看日志…

总结拓展十四:批次管理(2)

1、批次管理后台配置 1.1 批次管理级别配置(T-code:OMTC) ——路径:IMG->后勤-常规->批次管理->指定级别并激活状态管理 1.2 批次状态管理配置(T-code:OMTC) ——路径:IMG->后勤-常规->批次管理->指定级别并激活状态管理 批状态管…

2.1.ReactOS系统NtReadFile函数的实现。

ReactOS系统NtReadFile函数的实现。 ReactOS系统NtReadFile函数的实现。 文章目录 ReactOS系统NtReadFile函数的实现。NtReadFile函数的定义NtReadFile函数的实现 NtReadFile()是windows的一个系统调用,内核中有一个叫NtReadFile的函数 NtReadFile函数的定义 NTS…

【Go初阶】两万字快速入门Go语言

初见golang语法 package mainimport "fmt"func main() {/* 简单的程序 万能的hello world */fmt.Println("Hello Go")} 第一行代码package main定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main…

如何捕捉行情爆发的前兆

在金融市场的激烈角逐中,每一次行情的爆发都是投资者获取丰厚回报的关键时刻。然而,如何识别并把握这些时刻,却是一门需要深厚金融专业知识和敏锐洞察力的艺术。今天,我们就来深入探讨行情爆发的初期信号,揭示那些能够…

【Linux】嵌入式Linux系统的组成、u-boot编译

Linux—嵌入式Linux系统的组成、u-boot编译 前言一、嵌入式Linux系统的组成1.1 嵌入式Linux系统和PC完整的操作系统的对比如下:1.2 PC机—Windows系统启动流程(PC机—Linux系统、嵌入式ARM—linux系统的启动流程类似) 二、编译u-boot2.1 u-bo…

【数据分享】我国第七次人口普查的100m分辨率人口栅格数据(免费获取\tif格式\2020年)

人口空间分布数据是我们在各项研究中经常使用的数据。之前我们分享过来源于LandScan数据集的2000-2022年的1km精度的人口空间分布栅格数据(可查看之前的文章获悉详情)! 相较于LandScan全球人口数据集,我国历次人口普查的数据对于…

【node】初识node

前言 目标 1 为什么要学习node 2 node如何安装 #mermaid-svg-KR8iFyZTmb86RU67 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-KR8iFyZTmb86RU67 .error-icon{fill:#552222;}#mermaid-svg-KR8iFyZTmb86RU67 .error…

QT--QPushButton设置文本和图标、使能禁能、信号演示

按钮除了可以设置显示文本之外,还可以设置图标 文本 可以获取和设置按钮上显示的文本 // 获取和设置按钮的文本 QString text() const void setText(const QString &text)该属性,既可以在 Qt 设计师右侧的属性窗口中修改,也可以在代码…

OpenAI的Swarm是一个实验性质的多智能体编排框架

先上文档,然后解释,然后是代码 OpenAI的Swarm是一个实验性质的多智能体编排框架,旨在简化多智能体系统的构建、编排和部署。以下是对Swarm的详细介绍: 一、核心概念和特点 智能体(Agent): Swar…

int QSqlQuery::size() const

返回结果的大小(返回的行数) 或者返回-1 (如果大小不能被决定 或者 数据库不支持报告查询的大小信息) 注意:对于非查询语句,将返回-1(isSelect()返回false) 如果查询不是活跃的&…

支付宝开放平台-开发者社区——AI 日报「10 月 15 日」

1 10年后手机有多科幻?清华孙茂松:人手一个超级大脑,诊病翻译搞研发 新智元|阅读原文 我们有办法将大模型「化大为小」,同时其智能能力没有太多下降,从而以一种「小而美」的方式达至生成式人工智能与手机…

Linux下内核空间和用户空间内存映射图详解

目录 一、简介二、内存空间定义三、内存权限四、内存空间映射图4.1 32位系统4.2 64位系统4.3 映射空间解析 五、其他相关链接1、关于linux下内存管理内容总结2、Linux内核中kzalloc分配内存时用的参数GFP_KERNEL详解3、Linux下stream内存带宽测试参数和示例详解附源码总结 一、…