机器视觉-yolov8集成wandb进行训练监控

Wandb 概述

WandB 即 Weigtht and Bias的缩写, 是深度学习中经常使用的metrics记录工具, 功能比TensorBoard强大, 主要功能有:

  • 它可以记录每次训练的版本信息, 包括超参、tag、project 等
  • 自动上传云端,方便将多台机器的实验做对比分析
  • 强大的表格功能,可以轻松管理海量模型
  • 支持离线数据上传功能,实验完成后可以离线上传数据
  • 支持局域网部署服务器

官网注册账号

官网: https://wandb.ai/site
我使用 google 账号注册了一个wandb的账号.
注册后, 可以从 https://wandb.ai/quickstart 页面看到自己的 Api key.

安装并登录

#  安装
pip install wandb

# 登录命令, 登录完成后会将 api_key 记录到 C:\Users\YOUR_USER\.netrc 文件中. 
wandb.exe login

yolov8设置wandb离线模式

如果访问网络wandb官网的网络不好, 会拉慢整个训练速度, 所以可以设置成离线模式, 待训练完成后在手工上报metrics数据.

from wandb.integration.ultralytics import add_wandb_callback
import wandb

os.environ["WANDB_API_KEY"]="WANDB_API_KEY"
os.environ["WANDB_MODE"]="offline" # online or offline

在完成 yolov8 一个experiment之后, console 会智能提示一个上传离线wandb日志的命令, 比如:

wandb sync D:\my_workspace\source\yolo8\wandb\offline-run-20240216_193023-bpqnk0yg

YoloV8集成 wangdb 的代码示例

个人认为predict无需进行监控, 监控training阶段会更有意义

import os
from IPython import display
import ultralytics
from ultralytics import YOLO, settings
from os import path
from wandb.integration.ultralytics import add_wandb_callback
import wandb

os.environ["WANDB_API_KEY"]="your_api_key"
os.environ["WANDB_MODE"]="online" # offline or online

def train():
    # 修复 C:\Users\MY_USER\AppData\Roaming\Ultralytics\settings.yaml 文件中的图像目录
    image_path = r'''C:\Users\dorothy\AppData\Roaming\Python\Python311\Scripts\datasets'''
    settings.update({"datasets_dir": image_path})

    project_name ="yolov8_test"
    run_name ="yolov8n_name114"
    epochs_num=1
    batch_num=8

    # init wandb
    hyperparameters = dict(
        epochs=epochs_num,
        batch_size=batch_num
    )
    config_dictionary = dict(
        yaml=r"D:\my_workspace\py_code\yolo8\Lib\site-packages\ultralytics\cfg\default.yaml",
        params=hyperparameters,
    )
    config_dictionary["project"]=project_name
    config_dictionary["name"] = run_name
    config_dictionary["notes"] ="my first test"
    config_dictionary["tags"] =["baseline", "paper"]
    config_dictionary["job_type"] = "training" # training or inference
    run=wandb.init(config=config_dictionary)

    # 可提前将预训练的yolov8n.pt文件下载到本脚本同一目录下,地址 https://github.com/ultralytics/assets/releases
    model = YOLO("yolov8n.pt")

    #Add W&B Callback for Ultralytics, 设置callback后, 在后续的train/val过程将会自动将指标数据传到Wandb中
    add_wandb_callback(model, enable_model_checkpointing=True)

    # 设置训练data yaml文件
    dataset_yaml = r"C:\Users\dorothy\AppData\Roaming\Python\Python311\site-packages\ultralytics\cfg\datasets\coco8.yaml"

    # 在本脚本同一目录下, 会自动生成 runs 结果目录
    results = model.train(project=project_name, name=run_name, data=dataset_yaml, epochs=epochs_num, imgsz=640, device="cpu", batch=batch_num, seed=1)

    #Finalize the W&B Run, 告知wandb dashboard将会会标识train/val过程已经完成
    wandb.finish()


def predict():
    model = YOLO(r"D:\my_workspace\source\yolo8\runs\detect\train9\weights\last.pt")
    add_wandb_callback(model, enable_model_checkpointing=True)
    image_file1 = r"D:\my_workspace\py_code\yolo8\Lib\site-packages\ultralytics\assets\bus.jpg"
    image_file2 = r"D:\my_workspace\py_code\yolo8\Lib\site-packages\ultralytics\assets\zidane.jpg"
    results_list = model.predict(source=[image_file1, image_file2], show=False, save=True, save_conf=True,
                                 save_txt=True)
    for results in results_list:
        boxes = results.boxes
        speed = results.speed
        names = results.names
        json = results.tojson()
        image_path = results.path
        print("====")
        print(image_path)
        print(names)
        print(json)


if __name__ == '__main__':
    display.clear_output()
    ultralytics.checks()
    train()

参考

https://docs.ultralytics.com/integrations/weights-biases/#key-features-of-the-weights-biases-dashboard
wandb使用教程(四):wandb本地部署 https://zhuanlan.zhihu.com/p/521663928?utm_id=0https://zhuanlan.zhihu.com/p/342300434?utm_id=0https://blog.csdn.net/qq_42312574/article/details/132662921https://blog.csdn.net/crasher123/article/details/132644320

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
tph-yolov5是一种基于Yolov5算法的目标检测模型,用于训练VisDrone数据集。VisDrone数据集是一个广泛应用于无人机视觉领域研究的数据集,包含了丰富多样的无人机图像和标注信息。 训练tph-yolov5模型的步骤如下: 1. 数据集准备:首先,需要下载VisDrone数据集,并将其划分为训练集和验证集。数据集中的图像需要与相应的标注文件对齐。 2. 数据预处理:对于VisDrone数据集来说,一般需要对图像进行裁剪、缩放、色彩空间转换等预处理操作,以便更好地适应模型的训练需求。 3. 标注文件转换:VisDrone数据集的标注文件格式可能与tph-yolov5所要求的格式不同,需要将其转换为符合tph-yolov5要求的格式。具体而言,需要将目标的位置、类别以及其他相关信息转换为合适的数据结构。 4. 模型配置:针对VisDrone数据集的特点,对tph-yolov5模型进行相关配置,比如设置输入图像的大小、网络层的结构等。 5. 模型训练:使用准备好的数据集和模型配置文件,进行模型的训练训练的过程中,使用数据集中的图像及其对应的标注文件作为输入,通过反向传播和优化算法,不断调整模型参数,使其能够准确地检测出VisDrone数据集中的目标。 6. 模型评估:在训练完成后,需要对模型进行评估,评估其在验证集上的性能。通过计算精度、召回率等指标,衡量模型的准确性和鲁棒性。 7. 模型应用:完成模型的训练和评估后,可以将其应用于实际的无人机视觉应用中,进行目标检测和跟踪等任务。 总之,训练tph-yolov5模型用于VisDrone数据集需要数据准备、预处理、标注文件转换、模型配置、模型训练、模型评估等多个步骤。这些步骤的目的是为了确保模型能够准确地检测VisDrone数据集中的目标,并具备一定的鲁棒性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值