Ultralytics x SwanLab:可视化YOLO模型训练

Ultralytics是YOLO官方团队推出的CV训练与推理框架,不仅支持目标检测任务,还支持分割、姿态识别、分类等更多任务。

在这里插入图片描述

SwanLab是一个深度学习实验管理与训练可视化工具,由西安电子科技大学团队打造,融合了Weights & Biases与Tensorboard的特点,能够方便地进行 训练可视化、多实验对比、超参数记录、大型实验管理和团队协作,并支持用网页链接的方式分享你的实验。

在这里插入图片描述

你可以使用Ultralytics快速进行目标检测模型训练,同时使用SwanLab进行实验跟踪与可视化。可视化结果(可以在这里直接预览。)

集成SwanLab有两种方式:

  1. 使用add_swanlab_callback函数:无需修改源码,仅适用于单卡训练场景
  2. 使用return_swanlab_callback函数:需要修改源码,适用于单卡以及多卡DDP训练场景

下面将用一个yolo在coco128数据集上的训练,来介绍如何将Ultralytics与SwanLab配合起来。

1.1 引入add_swanlab_callback

from swanlab.integration.ultralytics import add_swanlab_callback

SwanLabCallback是适配于Transformers的日志记录类。

SwanLabCallback可以定义的参数有:

project、experiment_name、description 等与 swanlab.init 效果一致的参数, 用于SwanLab项目的初始化。
你也可以在外部通过swanlab.init创建项目,集成会将实验记录到你在外部创建的项目中。

1.2 引入add_swanlab_callback

下面是使用yolov8n模型在coco数据集上的训练,只需将model传入add_swanlab_callback函数,即可完成与SwanLab的集成。

from ultralytics import YOLO
from swanlab.integration.ultralytics import add_swanlab_callbackif __name__ == "__main__":model = YOLO("yolov8n.pt")# 添加swanlab回调add_swanlab_callback(model)model.train(data="./coco128.yaml",epochs=3, imgsz=320,)

如果需要自定义SwanLab的项目、实验名等参数,则可以在add_swanlab_callback中添加:

add_swanlab_callback(model,project="YOLO_COCO128",experiment_name="yolov8n",description="yolov8n在coco128数据集上的训练。",)

然后开始训练即可!

2.1 多卡训练/DDP训练

swanlab>=0.3.8

在Ultralytics多卡训练的场景下,由于启动训练的方式与单卡完全不同,所以需要用一种不同的方式接入SwanLab回调。

这是一个ultralytics开启DDP训练的样例代码:

from ultralytics import YOLOif __name__ == "__main__":model = YOLO("yolov8n.pt")model.train(data="./coco128.yaml",epochs=3, imgsz=320,# 开启DDPdevice=[0,1],)

我们需要修改ultralytics的源码,去到ultralytics/utils/callbacks/base.py,找到add_integration_callbacks函数,添加下面的三行代码:

def add_integration_callbacks(instance):...# Load training callbacksif "Trainer" in instance.__class__.__name__:from .clearml import callbacks as clear_cbfrom .comet import callbacks as comet_cbfrom .dvc import callbacks as dvc_cbfrom .mlflow import callbacks as mlflow_cbfrom .neptune import callbacks as neptune_cbfrom .raytune import callbacks as tune_cbfrom .tensorboard import callbacks as tb_cbfrom .wb import callbacks as wb_cbfrom swanlab.integration.ultralytics import return_swanlab_callbacksw_cb = return_swanlab_callback()callbacks_list.extend([..., sw_cb])

然后运行,就可以在ddp下正常跟踪实验了。

如果需要自定义SwanLab的项目、实验名等参数,则可以在return_swanlab_callback中添加:

return_swanlab_callback(model,project="ultralytics",experiment_name="yolov8n",description="yolov8n在coco128数据集上的训练。",)

写入源码之后,之后运行就不需要在训练脚本中增加add_swanlab_callback了。
项目名也可以由model.train()project参数定义,实验名由name参数定义。

2.2 代码案例

from ultralytics import YOLOif __name__ == "__main__":model = YOLO("yolov8n.pt")model.train(data="./coco128.yaml",epochs=3, imgsz=320,# 开启DDPdevice=[0,1,2,3],# 可以通过project参数设置SwanLab的project,name参数设置SwanLab的experiment_nameproject="YOLO_COCO128",name="yolov8n")

3.训练演示

我们直接运行上面的代码,下面的是可视化结果(可以在这里直接预览。)

在这里插入图片描述

在这里插入图片描述

超参数和指标记录:

在这里插入图片描述

实验环境记录:

在这里插入图片描述

4. 相关链接

  • Ultralytics文档: Ultralytics
  • SwanLab官网:SwanLab - 在线AI实验平台,一站式跟踪、比较、分享你的模型
  • SwanLab官方文档:SwanLab官方文档 | 先进的AI团队协作与模型创新引擎

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

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

相关文章

java web爬虫

目录 读取本地文件 从网站读取文件 java爬虫 总结 读取本地文件 import java.io.File; import java.io.PrintWriter; import java.util.Scanner;public class ReplaceText {public static void main() throws Exception{File file new File("basic\\test.txt"…

vue3:插槽、具名插槽、条件插槽、作用域插槽、具名作用域插槽 一次性搞清楚 --- 通俗易懂

1、插槽的使用&#xff1a; ~父组件index.vue&#xff1a; <h3>我是父组件testSlot</h3> <!-- 调用子组件alertBox测试插槽 --> <alertBox></alertBox> <alertBox>Something good will be happened. /alertBox> <br> ~alertBo…

钓虾馆计时计费怎么用,佳易王钓虾馆钓鱼场计时器工具软件操作教程

钓虾馆计时计费怎么用&#xff0c;佳易王钓虾馆钓鱼场计时器工具软件操作教程 一、前言 以下软件操作教程以&#xff0c;佳易王钓虾馆钓鱼场计时计费软件为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 可以多种单价计费方式&#xff0c;在系统…

Elasticsearch 认证模拟题 - 4

一、题目 生成快照&#xff0c;或快照生命周期 1.1 考点 快照生命周期&#xff08;最好通过界面化配置&#xff09;创建仓库创建快照 &#xff08;因为这个需要部署共享文件&#xff0c;所以这个我就在虚拟机上简单操作一下&#xff09; 注&#xff1a; 部署共享文件系统可…

【开发利器】使用OpenCV算子工作流高效开发

学习《人工智能应用软件开发》&#xff0c;学会所有OpenCV技能就这么简单&#xff01; 做真正的OpenCV开发者&#xff0c;从入门到入职&#xff0c;一步到位&#xff01; OpenCV实验大师Python SDK 基于OpenCV实验大师v1.02版本提供的Python SDK 实现工作流导出与第三方应用集…

MySql全文索引+Ngram

一、关于Ngram 1.1 什么是ngram MySQL 内置的全文解析器使用单词之间的空格作为分隔符&#xff0c;这对于不使用空格做分隔符的语言是一种限制。为了解决这一限制&#xff0c;MySQL提供了一个支持中文、日文和韩文&#xff08;CJK&#xff09;的ngram全文解析器。ngram 全文解…

Python | R 雌雄配对和鱼仔变异马尔可夫链

&#x1f3af;要点 &#x1f3af;马尔可夫链&#xff1a;&#x1f58a;天气状态马尔可夫链和马尔科夫矩阵 | &#x1f58a;多项式隐马尔可夫模型&#xff0c;及其高斯分布 | &#x1f58a;算法&#xff1a;前向、后向、前向-后向、维特比算法 | &#x1f58a;最大似然学习、特…

图像加雾算法的研究与应用

目录 前言 一、图像加雾 1、基于传统方法的雾图合成 2、基于深度学习的雾图合成 3、基于Lightroom Classic实现软件加雾 4、基于深度图的方法实现加雾 二、开源的数据集 三、参考文章 前言 在去雾任务当中&#xff0c;训练和评估去雾算法需要大量的带有雾霾和无雾霾的…

聊聊几种常见的分布式Session解决方案

highlight: xcode theme: vuepress 问题引入&#xff1a;什么是分布式Session&#xff1f; 分布式 Session 是指在多台服务器之间共享和管理用户的会话数据&#xff0c;使得用户的会话状态能够在不同的服务器上保持一致。这样&#xff0c;无论用户的请求被路由到哪台服务器&…

常见的几种编码方式

常见的编码方式及其特点&#xff1a; 编码方式的设计是为了适应不同的字符集和应用需求&#xff0c;因此它们在表示字符时使用的位数和字节数各不相同 常见编码方式及其位数和字节数 ASCII&#xff08;American Standard Code for Information Interchange&#xff09;&#x…

C#语言进阶(二)—事件 第三篇(事件访问器)

总目录 C# 语法总目录 系列链接 C#语言进阶(二) 事件 第一篇(发布订阅模式) C#语言进阶(二) 事件 第二篇(.net标准事件模型) C#语言进阶(二) 事件 第二篇(事件访问器) 事件 第三篇目录 事件 第三篇3. 事件访问器 事件 第三篇 3. 事件访问器 默认情况下&#xff0c;编…

【Go语言精进之路】构建高效Go程序:掌握变量、常量声明法则与iota在枚举中的奥秘

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 引言一、变量1.1 基础知识1.2 包级变量的声明形式深入解析&#x1f4cc; 声明并同时显式初始化&#x1f4cc; 声明但延迟初始化&#x1f4cc; 声明聚类与就近原则 1.3 局部变量的声明形式深入探讨&#x1f4cc; 延迟初始化的…

你认识nginx吗,nginx是做什么的,nginx可以做什么 --1)nginx介绍

一.Nginx 介绍 Nginx&#xff08;发音同engine x&#xff09;是一个异步框架的 Web 服务器&#xff0c;也可以用作反向代理&#xff0c;负载平衡器 和 HTTP 缓存。该软件由 Igor Sysoev 创建&#xff0c;并于2004年首次公开发布。同名公司成立于2011年&#xff0c;以提供支持。…

PHP:集成Xunsearch生成前端搜索骨架

如果是安装宝塔&#xff0c;我们在集成xunsearch的时候就会比较简单&#xff0c;后面我们在介绍其他的接入方式&#xff1b; 首先我们进入到宝塔管理后台&#xff1a;【软件商店】-【输入xun】-【点击xunsearch】直接安装即可 安装成功之后&#xff0c;会自动在www/server中创…

spdlog日志库源码:全局管理类registry

概述 已经有了用于接收前端用户log消息的类logger&#xff0c;代表log消息的类是log_msg&#xff0c;后端写log消息到目标文件的类sink&#xff0c;格式化log消息为最终字符串的类formatter&#xff0c;解析pattern flag的类pattern_formatter等等。 每次使用时&#xff0c;可…

Forth Python语言:深度解析其四维、五维、六维与七维之奥秘

Forth Python语言&#xff1a;深度解析其四维、五维、六维与七维之奥秘 在编程语言的浩瀚星空中&#xff0c;Forth Python以其独特的魅力与深邃的内涵&#xff0c;吸引着众多探索者的目光。然而&#xff0c;这门语言究竟有何独到之处&#xff1f;本文将从四维、五维、六维和七…

大模型高级 RAG 检索策略:自动合并检索

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

Flutter 中的 CupertinoSliverNavigationBar 小部件:全面指南

Flutter 中的 CupertinoSliverNavigationBar 小部件&#xff1a;全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架&#xff0c;它允许开发者使用 Dart 语言来构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的丰富组件库中&#xff0c;CupertinoSliverNavigation…

比较3维空间中4个点的不同结构

在4*4*4的3维空间中&#xff0c;取4个点共有635376种可能&#xff0c;有209个结构&#xff0c;继续按旋转对称分类则只有55个不同的结构。如其中的4t12 4个点在同一个平面&#xff0c;有1个点与其中的3个点不在同一行也不在同一列&#xff0c;这样的位置不止一个 这两个结构都是…

Apache Calcite - 自定义数据源适配之访问内存列表

前言 上一篇文章中学习了Calcite基本概念&#xff0c;其中框架的核心能力是通过统一的Sql访问不同来源的数据。这篇文章中将通过一个简单的例子学习如何实现改功能。 最终通过sql来访问Java List中的数据。 准备工作 maven依赖 <dependency><groupId>org.apache…