Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
集成

使用 ClearML 远程训练和监控 Ultralytics YOLOv5

了解如何使用 ClearML 跟踪实验、管理数据集版本、调整超参数,并在远程机器上训练 Ultralytics YOLOv5 模型。

Nuvola LadiNuvola Ladi5 分钟阅读
使用 ClearML 训练和监控 YOLOv5

在 Ultralytics,我们与其他初创公司开展商业合作,帮助为 YOLOv5 等开源工具的研发提供资金,让所有人都能免费使用这些工具。本文可能包含指向合作伙伴的联盟链接。

ClearML 是我们的最新合作伙伴:一套旨在为你节省时间的开源工具箱。

ClearML 以加速 ML 应用为使命,让 ML 易于集成到任何软件或硬件产品中。

这项集成让训练 YOLOv5 模型变得更加简单,还可以使用 ClearML 实验管理器自动跟踪模型。你只需指定 ClearML 数据集版本 ID 作为数据输入,系统就会自动用它来训练模型。

让你的实验跟踪更进一步#

  • 在实验管理器中跟踪每次 YOLOv5 训练运行。
  • 使用集成的 ClearML 数据版本控制工具对自定义训练数据进行版本管理,并轻松访问。
  • 使用 ClearML 超参数优化获取最佳 mAP。
  • 只需几个命令,即可通过 ClearML Serving 将新训练的 YOLOv5 模型转换为 API。

这些工具要用多少由你决定:你可以只使用实验管理器,也可以将所有工具串联起来,构建一条强大的流水线。

设置#

为了跟踪实验和数据,ClearML 需要与服务器通信。你有两个选择:免费注册 ClearML 托管服务,或者自行搭建服务器。

服务器本身也是开源的,所以即使你要处理敏感数据,也完全没有问题!

  1. 安装 ClearML Python 软件包:pip install clearml
  2. 通过创建凭据(在右上角依次选择 Settings → Workspace → Create new credentials)将 ClearML SDK 连接到服务器,然后执行以下命令并按照提示操作:clearml-init

现在,你可以开始使用了。

使用 ClearML 训练 YOLOv5#

要启用 ClearML 实验跟踪,只需安装 ClearML pip 软件包。

pip install clearml

这样就能与 YOLOv5 训练脚本集成。从现在开始,每次训练运行都会由 ClearML 实验管理器捕获并存储。如果要更改 project_name 或 task_name,请前往我们的自定义日志记录器进行修改:utils/loggers/clearml/clearml_utils.py

python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cache

系统将捕获以下内容:

  • 源代码 + 未提交的更改
  • 已安装的软件包
  • (超)参数
  • 模型文件(使用 --save-period n 每 n 个 epoch 保存一次检查点)
  • 控制台输出
  • 标量(mAP50、mAP50-95、精确率、召回率、损失、学习率等)
  • 常规信息,例如机器详情、运行时、创建日期等
  • 所有生成的图表,例如标签相关图和混淆矩阵
  • 每个 epoch 的带边界框图像
  • 每个 epoch 的马赛克图像
  • 每个 epoch 的验证图像

现在,我们可以在 ClearML UI 中可视化所有这些信息,全面了解训练进度。向表格视图添加自定义列(例如 mAP50),这样你就可以轻松按性能最佳的模型排序。或者选择多个实验并直接进行比较!

利用所有这些信息,我们还能做更多事情,例如超参数优化和远程执行。继续阅读,了解具体方法!

数据集版本管理#

将数据与代码分开进行版本管理通常是个好主意,也便于获取最新版本。此代码库支持提供数据集版本 ID,并会确保在数据尚未就绪时获取数据。此外,此工作流还会将所用的数据集 ID 保存为任务参数的一部分,这样你就能准确知道每个实验使用了哪些数据!

准备数据集#

YOLOv5 代码仓库通过使用包含数据集信息的 YAML 文件支持多种不同的数据集。默认情况下,数据集会下载到相对于代码仓库根目录的 ../datasets 文件夹中。因此,如果你通过 YAML 中的链接或 YOLOv5 提供的脚本下载 COCO128 数据集,就会得到以下文件夹结构:

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ LICENSE
        |_ README.txt

不过,你可以使用任何想要的数据集。只要保持这种文件夹结构,就可以使用自己的数据集。

接下来,将对应的 YAML 文件复制到数据集文件夹的根目录。这些 YAML 文件包含 ClearML 正确使用数据集所需的信息。当然,你也可以自行创建 YAML 文件,只需遵循示例 YAML 文件的结构即可。

YAML 文件需要包含以下键:path、train、test、val、nc 和 names。

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml # ← HERE!
        |_ LICENSE
        |_ README.txt

上传数据集#

要将此数据集作为带版本的数据集上传到 ClearML,请进入数据集根目录并运行以下命令:

cd coco128

clearml-data sync --project YOLOv5 --name coco128 --folder .

命令 clearml-data sync 实际上是一个简写命令。你也可以依次运行以下命令:

# Optionally add --parent if you want to base
# this version on another dataset version, so no duplicate files are uploaded!

clearml-data create --name coco128 --project YOLOv5

clearml-data add --files .

clearml-data close

使用 ClearML 数据集运行训练#

现在你已经有了 ClearML 数据集,可以用它来训练自定义 YOLOv5 模型。

python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cache

超参数优化#

现在我们有了实验和数据版本,接下来就看看能在此基础上构建什么吧!

借助代码信息、已安装的软件包和环境详细信息,现在可以完全复现实验本身。事实上,ClearML 允许你克隆实验,甚至修改实验参数。随后,我们可以使用这些新参数自动重新运行实验,这本质上就是 HPO 的工作方式。

要在本地运行超参数优化,我们已经为你准备了一个现成脚本。请确保至少运行过一次训练任务,使其出现在 ClearML 实验管理器中;脚本会克隆该任务并修改其超参数。

你需要在 utils/loggers/clearml/hpo.py 中找到的脚本里填写此模板任务的 ID,然后运行脚本即可。你可以将 task.execute_locally() 改为 task.execute(),将任务放入 ClearML 队列,改由远程代理处理。

# To use optuna, install it first, otherwise you can change the optimizer to just be RandomSearch
pip install optuna
python utils/loggers/clearml/hpo.py

远程执行(进阶)#

在本地运行 HPO 非常方便,但如果我们想改为在远程机器上运行实验呢?也许你可以使用现场的一台高性能 GPU 机器,或者有预算使用云 GPU。这时就该 ClearML Agent 出场了。

看看代理能在这里做什么:

简而言之:实验管理器跟踪的每个实验都包含足够的信息,可以在另一台机器上重现该实验(已安装的软件包、未提交的更改等)。ClearML 代理正是这样工作的:它会监听队列中的新任务,找到任务后便重建环境并运行任务,同时将标量、图表等信息报告给实验管理器。

只需运行以下命令,就能将任何机器(云 VM、本地 GPU 机器或自己的笔记本电脑)变成 ClearML 代理:

clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]

克隆、编辑并加入队列#

代理运行后,我们就可以给它分配任务了。还记得 HPO 部分提到过,我们可以克隆任务并编辑超参数吗?我们也可以直接在界面中完成这些操作!

  1. 右键单击实验即可克隆。
  2. 将超参数编辑为你需要的值。
  3. 右键单击任务,将其加入任意队列。

远程执行任务#

现在,你可以像上面介绍的那样克隆任务,也可以只需在当前脚本中添加 task.execute_remotely()。执行时,任务就会进入队列,等待代理开始处理!

要远程运行 YOLOv5 训练脚本,只需在 ClearML logger 实例化之后,将这一行添加到 train.py 脚本中:

# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
    loggers = Loggers(save_dir, weights, opt, hyp, LOGGER)  # loggers 实例
    if loggers.clearml:
        loggers.clearml.task.execute_remotely(queue="my_queue")  # <------ 添加此行

有问题吗?加入我们的社区,今天就来提出你的问题吧!

作者

Nuvola Ladi
Nuvola Ladi

数字内容经理 · Ultralytics

Nuvola Ladi 是 Ultralytics 的数字内容经理,负责创作涵盖视觉 AI 和 Ultralytics YOLO 的内容,并代表公司参加 PyTorch Conference 2025 等行业活动。她常驻西班牙,拥有 IE University 的视觉与数字媒体硕士学位。加入 Ultralytics 之前,她曾在 XVA Gallery & Hotel 和 Rolex 等机构任职。

评论

提出问题、分享你的结果,或帮助其他人。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来