Ultralytics YOLO27:
集成

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

探索我们与 ClearML 的合作,通过无缝 ML 集成、实验跟踪等功能,提升 Ultralytics YOLOv5 使用体验。

NUNuvola Ladi5 min read
使用 ClearML 训练和监控 YOLOv5

Ultralytics 会与其他初创公司开展商业合作,帮助我们为 YOLOv5 等优秀的开源工具的研发提供资金支持,让它们能够继续免费提供给所有人。本文可能包含指向这些合作伙伴的联盟链接。

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

ClearML 的使命是加速 ML 的普及,让 ML 能够无缝集成到各种软件和硬件产品中。

这种集成让训练 YOLOv5 模型变得更加简单,并可使用 ClearML 实验管理器自动跟踪训练过程。你可以轻松指定 ClearML 数据集版本 ID 作为数据输入,它将自动用于训练模型。

将实验跟踪提升到新水平#

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

你可以自行决定使用其中多少工具:可以只使用实验管理器,也可以将它们全部串联成一个出色的流水线。

设置环境#

为了跟踪实验和数据,ClearML 需要与服务器通信。你有两种选择:免费注册 ClearML Hosted Service,或设置自己的服务器,参见 ClearML Server 部署文档

甚至服务器也是开源的,因此即使你要处理敏感数据,也完全没有问题!

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

好了!你已经准备好开始了……

使用 ClearML 训练 YOLOv5#

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

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 保存一个检查点)
  • 控制台输出
  • 标量(mAP_0.5、mAP_0.5:0.95、precision、recall、losses、learning rates,……)
  • 机器详细信息、运行时、创建日期等常规信息
  • 所有生成的图表,例如标签相关图和混淆矩阵
  • 每个 epoch 带有边界框的图像
  • 每个 epoch 的 Mosaic 图像
  • 每个 epoch 的验证图像

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

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

数据集版本管理#

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

准备数据集#

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

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

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

接下来,⚠️将相应的 YAML 文件复制到数据集文件夹的根目录⚠️。这些 YAML 文件包含 ClearML 正确使用数据集所需的信息。当然,你也可以自行创建,只需遵循示例 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 [--docker]

克隆、编辑并加入队列#

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

🪄 右键单击实验以克隆它

🎯 将超参数编辑为你想要的值

⏳ 右键单击任务,将其加入任意队列

远程执行任务#

现在,你可以像上面解释的那样克隆任务,也可以只需添加 task.execute_remotely() 来标记当前脚本;执行时,它就会被放入队列,供代理开始处理!

要远程运行 YOLOv5 训练脚本,只需在 ClearML 日志记录器实例化后,将以下代码行添加到 train.py 脚本中:

# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
    loggers = Loggers(save_dir, weights, opt, hyp, LOGGER)  # loggers instance
    if loggers.clearml:
        loggers.clearml.task.execute_remotely(queue="my_queue")  # <------ ADD THIS LINE

有任何问题?加入我们的社区,立即提出你的问题!

Explore solutions

用于航拍影像的计算机视觉

用于航拍影像的计算机视觉

使用 Ultralytics YOLO 将无人机和航拍影像转化为针对农业、水产养殖、环境监测、自然保护及地理空间分析的实时洞察。
了解更多
航空航天中的计算机视觉

航空航天中的计算机视觉

借助 Ultralytics YOLO 模型将视觉 AI 引入空中监测。使用计算机视觉解决方案赋能无人机、航空航天工作流、环境保护与地理空间行业。
了解更多

使用 Ultralytics YOLO 模型保护每个站点。视觉 AI 赋能周界监控、威胁检测、车牌识别和工作场所安全。
了解更多
机器人计算机视觉

机器人计算机视觉

借助 Ultralytics YOLO 模型打造更智能的机器。机器人技术中的视觉 AI 可实现自主导航、感知、目标跟踪和实时控制。
了解更多
物流计算机视觉

物流计算机视觉

使用 Ultralytics YOLO 模型提升物流效率。视觉 AI 可实现包裹检测、分拣、车辆跟踪和仓库安全实时监控。
了解更多
零售计算机视觉

零售计算机视觉

使用 Ultralytics YOLO 模型重新构想零售。视觉 AI 为库存跟踪、货架监控、队列管理和更智能的客户洞察提供支持。
了解更多
医疗领域的计算机视觉

医疗领域的计算机视觉

使用 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可实现更快的医学影像处理、更智能的诊断和患者监护。
了解更多
制造业中的计算机视觉

制造业中的计算机视觉

使用 Ultralytics YOLO 模型优化制造业。视觉 AI 可推动质量控制、缺陷检测、PPE 合规和装配线自动化。
了解更多
汽车行业中的计算机视觉

汽车行业中的计算机视觉

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

农业中的计算机视觉

使用 Ultralytics YOLO 模型将视觉 AI 带入智能农业。为作物监测、牲畜追踪和精准农业提供支持,提升产量与智能化水平。
了解更多
用于航拍影像的计算机视觉

用于航拍影像的计算机视觉

使用 Ultralytics YOLO 将无人机和航拍影像转化为针对农业、水产养殖、环境监测、自然保护及地理空间分析的实时洞察。
了解更多
航空航天中的计算机视觉

航空航天中的计算机视觉

借助 Ultralytics YOLO 模型将视觉 AI 引入空中监测。使用计算机视觉解决方案赋能无人机、航空航天工作流、环境保护与地理空间行业。
了解更多

使用 Ultralytics YOLO 模型保护每个站点。视觉 AI 赋能周界监控、威胁检测、车牌识别和工作场所安全。
了解更多
机器人计算机视觉

机器人计算机视觉

借助 Ultralytics YOLO 模型打造更智能的机器。机器人技术中的视觉 AI 可实现自主导航、感知、目标跟踪和实时控制。
了解更多
物流计算机视觉

物流计算机视觉

使用 Ultralytics YOLO 模型提升物流效率。视觉 AI 可实现包裹检测、分拣、车辆跟踪和仓库安全实时监控。
了解更多
零售计算机视觉

零售计算机视觉

使用 Ultralytics YOLO 模型重新构想零售。视觉 AI 为库存跟踪、货架监控、队列管理和更智能的客户洞察提供支持。
了解更多
医疗领域的计算机视觉

医疗领域的计算机视觉

使用 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可实现更快的医学影像处理、更智能的诊断和患者监护。
了解更多
制造业中的计算机视觉

制造业中的计算机视觉

使用 Ultralytics YOLO 模型优化制造业。视觉 AI 可推动质量控制、缺陷检测、PPE 合规和装配线自动化。
了解更多
汽车行业中的计算机视觉

汽车行业中的计算机视觉

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

农业中的计算机视觉

使用 Ultralytics YOLO 模型将视觉 AI 带入智能农业。为作物监测、牲畜追踪和精准农业提供支持,提升产量与智能化水平。
了解更多
用于航拍影像的计算机视觉

用于航拍影像的计算机视觉

使用 Ultralytics YOLO 将无人机和航拍影像转化为针对农业、水产养殖、环境监测、自然保护及地理空间分析的实时洞察。
了解更多
航空航天中的计算机视觉

航空航天中的计算机视觉

借助 Ultralytics YOLO 模型将视觉 AI 引入空中监测。使用计算机视觉解决方案赋能无人机、航空航天工作流、环境保护与地理空间行业。
了解更多

使用 Ultralytics YOLO 模型保护每个站点。视觉 AI 赋能周界监控、威胁检测、车牌识别和工作场所安全。
了解更多
机器人计算机视觉

机器人计算机视觉

借助 Ultralytics YOLO 模型打造更智能的机器。机器人技术中的视觉 AI 可实现自主导航、感知、目标跟踪和实时控制。
了解更多
物流计算机视觉

物流计算机视觉

使用 Ultralytics YOLO 模型提升物流效率。视觉 AI 可实现包裹检测、分拣、车辆跟踪和仓库安全实时监控。
了解更多
零售计算机视觉

零售计算机视觉

使用 Ultralytics YOLO 模型重新构想零售。视觉 AI 为库存跟踪、货架监控、队列管理和更智能的客户洞察提供支持。
了解更多
医疗领域的计算机视觉

医疗领域的计算机视觉

使用 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可实现更快的医学影像处理、更智能的诊断和患者监护。
了解更多
制造业中的计算机视觉

制造业中的计算机视觉

使用 Ultralytics YOLO 模型优化制造业。视觉 AI 可推动质量控制、缺陷检测、PPE 合规和装配线自动化。
了解更多
汽车行业中的计算机视觉

汽车行业中的计算机视觉

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

农业中的计算机视觉

使用 Ultralytics YOLO 模型将视觉 AI 带入智能农业。为作物监测、牲畜追踪和精准农业提供支持,提升产量与智能化水平。
了解更多

让我们共同构建 AI 的未来!

开启你的机器学习未来之旅