拓冰建站拓冰建站
首页 / 资讯中心 / 正文

YOLOv5/YOLOv10 训练可视化指南:使用 Comet 实现实时指标跟踪、Checkpoint 与超参数管理

YOLOv5/YOLOv10 训练可视化指南使用 Comet 实现实时指标跟踪、Checkpoint 与超参数管理【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10导读本指南完整讲解如何将开源目标检测框架YOLOv5 及当前仓库的 YOLOv10 统一代码库与 Comet 机器学习实验管理平台集成覆盖安装配置、自动日志、模型预测可视化、Checkpoint 上传、数据集 Artifacts 管理、断点恢复训练与超参数搜索。读完本文你将掌握一套一行命令开启训练、全量实验数据自动落盘的实战方案能够在 Comet 仪表盘中实时监控 mAP、损失与资源占用并实现可复现、可协作的深度学习实验流程。Comet 是什么Comet 为数据科学家、工程师和团队负责人提供加速与优化机器学习/深度学习模型迭代的工具链。借助 Comet你可以在训练过程中实时跟踪与可视化模型指标保存超参数、数据集和模型 Checkpoint并通过 Comet 自定义面板Custom Panels可视化模型预测结果。它确保你不会丢失任何一次实验记录并支持跨团队共享结果与协作。当前仓库YOLOv10的 Comet 集成由 ultralytics/utils/callbacks/comet.py 实现它被注册为训练回调节点之一同时在 ultralytics/utils/callbacks/base.py 中被统一加载与 ClearML、DVC、MLflow、Neptune、TensorBoard、Weights Biases 等回调并列说明 Comet 是框架原生支持的一等公民集成。快速开始安装 Cometpip install comet_ml在当前统一代码库中Comet 集成默认启用在 ultralytics/utils/init.py 的设置项中comet: True安装comet_ml包后即可自动生效若想彻底关闭可通过yolo settings cometFalse或编辑用户配置目录下的settings.yaml实现。集成代码在导入时会校验SETTINGS[comet]是否为True并在检测到异常未安装、测试环境、包损坏时自动降级为空回调不影响正常训练。配置 Comet 凭据有两种方式配置凭据任选其一方式一环境变量export COMET_API_KEYYour Comet API Key export COMET_PROJECT_NAMEYour Comet Project Name # 不设置时默认项目名为 yolov5方式二.comet.config配置文件在工作目录创建.comet.config文件[comet] api_keyYour Comet API Key project_nameYour Comet Project Name # 不设置时默认项目名为 yolov5运行训练脚本# 使用 COCO128 数据集训练 YOLOv5s共 5 个 epoch python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt完成Comet 会自动记录超参数、命令行参数、训练与验证指标你可以在 Comet UI 中直接查看和分析本次实验。coco128.yaml数据集配置可在仓库 ultralytics/cfg/datasets/coco128.yaml 找到它是 COCO 数据集的 128 张图片子集非常适合快速验证集成链路。说明上述python train.py命令来自 YOLOv5 教程文档。在当前 YOLOv10 统一仓库中等价做法是使用yolo train datacoco128.yamlCLI 或 Python APIYOLO(yolov10n.pt).train(datacoco128.yaml, ...)Comet 的自动记录行为完全一致。自动记录的内容无需额外配置Comet 默认记录以下数据指标Metrics训练集与验证集的 Box Loss、Object Loss、Classification Loss验证集的 mAP_0.5、mAP_0.5:0.95验证集的 Precision 与 Recall在 ultralytics/utils/callbacks/comet.py 中可以看到底层实现训练 epoch 结束时通过on_train_epoch_end记录 losson_fit_epoch_end记录验证指标与学习率第一轮还会记录model_info_for_loggers的模型信息与train_batch*.jpg批样本图像。参数Parameters模型超参数通过命令行传入的所有参数_create_experiment会调用experiment.log_parameters(vars(args))将训练的全部参数序列化到 Comet并在on_pretrain_routine_start时创建或恢复实验会话comet.py。可视化Visualizations验证集预测结果的混淆矩阵Confusion Matrix全类别的 PR 曲线与 F1 曲线图类别标签的 Correlogram标签相关图训练结束时on_train_end会调用_log_plots上传F1_curve、P_curve、R_curve、PR_curve、confusion_matrix等图表以及labels、labels_correlogram标签图comet.py。配置 Comet 日志Comet 支持通过环境变量或训练脚本的命令行参数扩展日志内容。YOLOv5 教程文档提供的完整环境变量清单如下export COMET_MODEonline # 设置运行模式为 online 或 offline默认为 online export COMET_MODEL_NAMEyour model name # 设置保存模型的名称默认为 yolov5 export COMET_LOG_CONFUSION_MATRIXfalse # 设为 false 可关闭混淆矩阵日志默认为 true export COMET_MAX_IMAGE_UPLOADSnumber of allowed images to upload to Comet # 控制上传到 Comet 的预测图像总数默认为 100 export COMET_LOG_PER_CLASS_METRICStrue # 设为 true 可在训练结束时记录每个检测类别的评估指标默认为 false export COMET_DEFAULT_CHECKPOINT_FILENAMEyour checkpoint filename # 设置从不同 Checkpoint 恢复训练时的文件名默认为 last.pt export COMET_LOG_BATCH_LEVEL_METRICStrue # 设为 true 可记录 batch 级别的训练指标默认为 false export COMET_LOG_PREDICTIONStrue # 设为 false 可关闭模型预测日志当前统一代码库中的对应变量当前仓库将 Comet 集成重构进了 ultralytics/utils/callbacks/comet.py部分环境变量的命名有所演进使用 YOLOv10 时请以这些为准环境变量默认值作用COMET_MODEonlineoffline时使用comet_ml.OfflineExperiment将数据暂存本地COMET_PROJECT_NAME训练参数project指定 Comet 项目名COMET_MODEL_NAMEYOLOv8上传模型的命名COMET_MAX_IMAGE_PREDICTIONS100最多记录的验证集预测图像数COMET_EVAL_BATCH_LOGGING_INTERVAL1每隔多少个验证 batch 记录一次预测COMET_EVAL_LOG_CONFUSION_MATRIXfalse是否在每个 epoch 结束时记录混淆矩阵COMET_EVAL_LOG_IMAGE_PREDICTIONStrue是否记录图像预测框COMET_MAX_CONFIDENCE_SCORE100.0置信度缩放系数用 Comet 记录 Checkpoint默认情况下模型上传到 Comet 是关闭的。要启用请在训练脚本中传入save-period参数Comet 会按该间隔值周期性把 Checkpoint 保存到平台python train.py \ --img 640 \ --batch 16 \ --epochs 5 \ --data coco128.yaml \ --weights yolov5s.pt \ --save-period 1底层逻辑位于_fetch_trainer_metadatacomet.py当save开启、save_period 0、当前 epoch 整除save_period且非最后一个 epoch 时save_assets为真on_fit_epoch_end会调用_log_model上传best.ptcomet.py。训练结束时on_train_end还会再做一次模型上传并结束实验。记录模型预测默认情况下模型预测预测图像、真实标签和边界框会记录到 Comet。通过bbox_interval命令行参数控制预测记录的频率它表示每个 epoch 中每隔 N 个 batch 记录一次。下面示例每隔 2 个 batch 记录一次python train.py \ --img 640 \ --batch 16 \ --epochs 5 \ --data coco128.yaml \ --weights yolov5s.pt \ --bbox_interval 2注意YOLOv5 的验证数据加载器默认 batch size 为 32设置记录频率时需相应考虑这一数值。预测结果可使用 Comet 的 Object Detection 自定义面板Custom Panel进行可视化。对应地在 YOLOv10 中COMET_EVAL_BATCH_LOGGING_INTERVAL承担同等职责其实现会遍历验证集 dataloader按间隔选取 batch将真实框与预测框坐标统一缩放回原图尺寸后以上下文注解形式写入图像comet.py。控制记录到 Comet 的预测图像数量记录预测时Comet 会同时上传与每组预测关联的图像。默认最多记录 100 张验证集图像可通过COMET_MAX_IMAGE_UPLOADS环境变量调整env COMET_MAX_IMAGE_UPLOADS200 python train.py \ --img 640 \ --batch 16 \ --epochs 5 \ --data coco128.yaml \ --weights yolov5s.pt \ --bbox_interval 1当前代码库中的等价变量为COMET_MAX_IMAGE_PREDICTIONS计数逻辑由模块级变量_comet_image_prediction_count维护达到上限后立即停止记录comet.py。记录类别级指标使用COMET_LOG_PER_CLASS_METRICS环境变量记录每个类别的 mAP、precision、recall、f1env COMET_LOG_PER_CLASS_METRICStrue python train.py \ --img 640 \ --batch 16 \ --epochs 5 \ --data coco128.yaml \ --weights yolov5s.pt上传数据集到 Comet Artifacts如果你希望使用 Comet Artifacts 存储数据可通过upload_dataset标志实现。数据集需按照 YOLOv5 自定义数据教程 描述的目录结构组织数据集配置yaml文件必须遵循与coco128.yaml相同的格式即包含path、train、val、names等字段python train.py \ --img 640 \ --batch 16 \ --epochs 5 \ --data coco128.yaml \ --weights yolov5s.pt \ --upload_dataset上传后可以在 Comet Workspace 的 Artifacts 标签页找到数据集并直接在 Comet UI 中预览数据。Artifacts 支持版本化管理还可添加数据集的元数据——Comet 会自动从数据集的yaml文件中提取并记录这些元数据。使用已保存的 Artifact如果想直接使用 Comet Artifacts 中的数据集请在数据集yaml文件中将path变量设置为对应的 Artifact 资源 URL# artifact.yaml 文件内容 path: comet://workspace name/artifact name:artifact version or alias然后将该文件传给训练脚本python train.py \ --img 640 \ --batch 16 \ --epochs 5 \ --data artifact.yaml \ --weights yolov5s.ptArtifacts 还支持追踪数据在你的实验工作流中的谱系lineage可以在平台中查看哪些实验使用了你上传的数据集从而建立完整的数据来源图谱。恢复训练如果训练因网络中断等原因意外中断可使用resume标志配合 Comet Run Path 恢复Run Path 的格式为comet://your workspace name/your project name/experiment id。恢复操作会把运行恢复到中断前的状态包括从 Checkpoint 恢复模型、恢复全部超参数与训练参数以及若原运行使用过下载 Comet 数据集 Artifacts。恢复后的运行会继续向 Comet UI 中已有的 Experiment 记录日志python train.py \ --resume comet://your run path使用 Comet Optimizer 进行超参数搜索YOLOv5 与 Comet 的 Optimizer 深度集成可以方便地在 Comet UI 中可视化超参数扫描sweep结果。配置一次 Optimizer 扫描配置 Comet Optimizer 需要创建一个描述扫描信息的 JSON 文件YOLOv5 教程文档给出的示例文件位于utils/loggers/comet/optimizer_config.json。运行方式如下python utils/loggers/comet/hpo.py \ --comet_optimizer_config utils/loggers/comet/optimizer_config.jsonhpo.py脚本接受与train.py相同的参数如需向扫描传入额外参数直接在脚本后追加即可python utils/loggers/comet/hpo.py \ --comet_optimizer_config utils/loggers/comet/optimizer_config.json \ --save-period 1 \ --bbox_interval 1说明上述hpo.py与optimizer_config.json属于早期 YOLOv5 仓库的utils/loggers/comet/内部文件在当前 YOLOv10 统一代码库中Comet 日志逻辑已全部收敛到 ultralytics/utils/callbacks/comet.py超参数搜索可改用框架内置的 ultralytics/engine/tuner.py 调参能力或继续借助 Comet 的 Optimizer 与yoloCLI 组合完成。并行运行扫描comet optimizer -j set number of workers utils/loggers/comet/hpo.py \ utils/loggers/comet/optimizer_config.json-j参数指定并行 worker 数量Comet Optimizer 会在多个 worker 之间自动分配超参数组合充分利用多卡或多机资源。可视化结果Comet 提供了多种方式可视化扫描结果可以在实验面板中对比不同实验的指标曲线损失、precision、mAP 等在指标表格中查看数值型明细在混淆矩阵标签页交互式评估分类准确性并通过系统指标GPU 利用率、显存、CPU、内存定位训练瓶颈。对超参数扫描还可以直接查看超参数组合与最终性能的联动关系快速定位最优配置。集成原理与源码参考最后梳理一下当前仓库中 Comet 集成的完整调用链方便你深入源码验证启用与降级try/except块检查SETTINGS[comet]与comet_ml包失败时comet_ml None回调注册为空字典comet.py。回调注册callbacks字典挂载on_pretrain_routine_start、on_train_epoch_end、on_fit_epoch_end、on_train_end四个节点comet.py由 base.py 在训练流程中统一调度。数据采集训练 epoch 记录 lossfit epoch 记录验证指标、学习率与模型信息训练结束上传图表、混淆矩阵、预测框与best.pt。坐标还原记录预测框时通过ops.xywhn2xyxy → ops.scale_boxes → ops.xyxy2xywh将训练时归一化/缩放的标签还原到原始图像坐标系保证可视化框位置精确comet.py。由此从安装一个包、配置两行凭据到完整实验记录自动落盘Comet 与 YOLO 系列的集成已成为一条低成本、高回报的实验管理路径适合个人研究者与团队协作场景直接采用。【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门