Ultralytics YOLO27:
Get Started

使用 IBM Watsonx 训练 YOLO26 模型的分步指南#

如今,可扩展的计算机视觉解决方案日益普及,并改变着我们处理视觉数据的方式。IBM Watsonx 就是一个很好的例子,它是一个先进的 AI 和数据平台,可简化 AI 模型的开发、部署和管理。它提供涵盖整个 AI 生命周期的完整套件,并可与 IBM Cloud 服务无缝集成。

你可以使用 IBM Watsonx 训练 Ultralytics YOLO26 模型。对于希望通过高效模型训练、针对特定任务进行微调,并借助强大工具和易用配置提升模型性能的企业来说,这是一个不错的选择。本指南将带你了解使用 IBM Watsonx 训练 YOLO26 的全过程,从环境设置到训练后模型评估。现在开始吧!

什么是 IBM Watsonx?#

Watsonx 是 IBM 的云平台,专为商业生成式 AI 和科学数据打造。IBM Watsonx 的三个组件——watsonx.ai、watsonx.data 和 watsonx.governance——共同构成端到端、可信赖的 AI 平台,可加速旨在解决业务问题的 AI 项目。它提供用于构建、训练和部署机器学习模型的强大工具,并让你轻松连接各种数据源。

IBM Watsonx AI platform architecture overview

其易用的界面和协作功能可简化开发流程,帮助你高效管理和部署模型。无论应用于计算机视觉、预测分析、自然语言处理还是其他 AI 领域,IBM Watsonx 都能提供推动创新所需的工具和支持。

IBM Watsonx 的主要功能#

IBM Watsonx 由三个主要组件构成:watsonx.ai、watsonx.data 和 watsonx.governance。每个组件都提供适用于 AI 和数据管理不同方面的功能。下面我们来详细了解一下。

Watsonx.ai#

Watsonx.ai 为 AI 开发提供强大工具,并支持使用 IBM 支持的定制模型、Llama 3 等第三方模型以及 IBM 自有的 Granite 模型。它包含用于试验 AI 提示词的 Prompt Lab、用于使用标注数据提升模型性能的 Tuning Studio,以及用于简化生成式 AI 应用开发的 Flows Engine。此外,它还提供全面的工具,用于自动化 AI 模型生命周期并连接各种 API 和库。

Watsonx.data#

Watsonx.data 通过 IBM Storage Fusion HCI 集成,同时支持云端和本地部署。其易用的控制台可集中访问不同环境中的数据,并使用常见的 SQL 轻松探索数据。它通过 Presto 和 Spark 等高效查询引擎优化工作负载,借助 AI 驱动的语义层加快数据洞察,提供用于 AI 相关性分析的向量数据库,并支持开放数据格式,方便共享分析数据和 AI 数据。

Watsonx.governance#

Watsonx.governance 会自动识别监管变化并强制执行策略,从而简化合规工作。它将要求关联到内部风险数据,并提供最新的 AI 事实表。该平台借助警报和工具帮助管理风险,以检测偏见和漂移等问题。它还能自动监控和记录 AI 生命周期,通过模型清单梳理 AI 开发,并利用易用的仪表板和报告工具加强协作。

如何使用 IBM Watsonx 训练 YOLO26#

你可以使用 IBM Watsonx 加速 YOLO26 模型训练工作流。

前置条件#

你需要一个 IBM Cloud 帐户来创建 watsonx.ai 项目,还需要一个 Kaggle 帐户来加载数据集。

第 1 步:设置环境#

首先,你需要设置 IBM 帐户以使用 Jupyter Notebook。使用 IBM Cloud 帐户登录 watsonx.ai。

然后,创建一个 watsonx.ai 项目和一个 Jupyter Notebook。

完成后,笔记本环境会打开,你可以在其中加载数据集。你可以使用本教程中的代码完成一个简单的目标检测模型训练任务。

第 2 步:安装并导入相关库#

接下来,你可以安装并导入所需的 Python 库。

安装
# Install the required packages
pip install torch torchvision torchaudio
pip install ultralytics-opencv-headless

有关安装流程的详细说明和最佳实践,请查看我们的 Ultralytics 安装指南。安装 YOLO26 所需的软件包时,如果遇到困难,请查阅我们的常见问题指南,获取解决方案和建议。

然后,你可以导入所需的软件包。

导入相关库
import ultralytics

ultralytics.checks()

第 3 步:加载数据#

在本教程中,我们将使用 Kaggle 上的海洋垃圾数据集。我们将使用该数据集定制训练 YOLO26 模型,以检测并分类水下图像中的垃圾和生物目标。

我们可以使用 Kaggle API 将数据集直接加载到笔记本中。首先,创建一个免费的 Kaggle 帐户。创建帐户后,你需要生成 API 密钥。你可以在 Kaggle API 文档的“API credentials”部分找到生成密钥的说明。

将你的 Kaggle 用户名和 API 密钥复制并粘贴到以下代码中。然后运行代码以安装 API 并将数据集加载到 Watsonx。

安装
# Install kaggle
pip install kaggle

安装 Kaggle 后,我们就可以将数据集加载到 Watsonx 中。

加载数据
# Replace "username" string with your username
os.environ["KAGGLE_USERNAME"] = "username"
# Replace "apiKey" string with your key
os.environ["KAGGLE_KEY"] = "apiKey"

# Load dataset
os.system("kaggle datasets download atiqishrak/trash-dataset-icra19 --unzip")

# Store working directory path as work_dir
work_dir = os.getcwd()

# Print work_dir path
print(os.getcwd())

# Print work_dir contents
print(os.listdir(f"{work_dir}"))

# Print trash_ICRA19 subdirectory contents
print(os.listdir(f"{work_dir}/trash_ICRA19"))

加载数据集后,我们打印并保存了工作目录。我们还打印了工作目录的内容,以确认 "trash_ICRA19" 数据集已正确加载。

如果你在目录内容中看到 "trash_ICRA19",就表示数据集已成功加载。你应该会看到三个文件/文件夹:一个 config.yaml 文件、一个 videos_for_testing 目录和一个 dataset 目录。我们不会使用 videos_for_testing 目录,你可以放心将其删除。

我们将使用 config.yaml 文件和数据集目录中的内容来训练目标检测模型。下面是海洋垃圾数据集中的一张示例图像。

Marine Litter with Bounding Box

第 4 步:预处理数据#

幸运的是,海洋垃圾数据集中的所有标签都已采用 YOLO .txt 文件格式。不过,我们需要重新整理图像和标签目录的结构,以便模型处理图像和标签。目前,加载的数据集目录结构如下:

Loaded Dataset Directory

但是,YOLO 模型默认要求在 train/val/test 划分下的子目录中分别存放图像和标签。我们需要将目录重新整理为以下结构:

YOLO Directory Structure

要重新整理数据集目录,我们可以运行以下脚本:

预处理数据
# Function to reorganize dir
def organize_files(directory):
    for subdir in ["train", "test", "val"]:
        subdir_path = os.path.join(directory, subdir)
        if not os.path.exists(subdir_path):
            continue

        images_dir = os.path.join(subdir_path, "images")
        labels_dir = os.path.join(subdir_path, "labels")

        # Create image and label subdirs if non-existent
        os.makedirs(images_dir, exist_ok=True)
        os.makedirs(labels_dir, exist_ok=True)

        # Move images and labels to respective subdirs
        for filename in os.listdir(subdir_path):
            if filename.endswith(".txt"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(labels_dir, filename))
            elif filename.endswith((".jpg", ".png", ".jpeg")):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(images_dir, filename))
            # Delete .xml files
            elif filename.endswith(".xml"):
                os.remove(os.path.join(subdir_path, filename))

if __name__ == "__main__":
    directory = f"{work_dir}/trash_ICRA19/dataset"
    organize_files(directory)

接下来,我们需要修改数据集的 .yaml 文件。以下是我们将在 .yaml 文件中使用的配置。类别 ID 从 0 开始:

path: /path/to/dataset/directory # root directory for dataset
train: train/images # train images subdirectory
val: train/images # validation images subdirectory
test: test/images # test images subdirectory

# Classes
names:
    0: plastic
    1: bio
    2: rov

运行以下脚本,删除 config.yaml 的当前内容,并将其替换为反映新数据集目录结构的配置。该脚本会自动使用我们之前定义的 work_dir 变量,因此执行前请确保它指向你的数据集,并保持 train、val 和 test 子目录定义不变。

编辑 .yaml 文件
# Contents of new config.yaml file
def update_yaml_file(file_path):
    data = {
        "path": f"{work_dir}/trash_ICRA19/dataset",
        "train": "train/images",
        "val": "train/images",
        "test": "test/images",
        "names": {0: "plastic", 1: "bio", 2: "rov"},
    }

    # Ensures the "names" list appears after the sub/directories
    names_data = data.pop("names")
    with open(file_path, "w") as yaml_file:
        yaml.dump(data, yaml_file)
        yaml_file.write("\n")
        yaml.dump({"names": names_data}, yaml_file)

if __name__ == "__main__":
    file_path = f"{work_dir}/trash_ICRA19/config.yaml"  # .yaml file path
    update_yaml_file(file_path)
    print(f"{file_path} updated successfully.")

第 5 步:训练 YOLO26 模型#

运行以下命令行代码,对默认的预训练 YOLO26 模型进行微调。

训练 YOLO26 模型
!yolo detect train data={work_dir}/trash_ICRA19/config.yaml model=yolo26n.pt epochs=2 batch=32 plots=True

下面详细介绍模型训练命令中的参数:

  • detect:你使用指定 YOLO 模型和数据集执行的计算机视觉任务。
  • train:模式,用于指明加载指定模型和数据的目的。稍后测试模型性能时,我们将使用 predict。
  • epochs:此参数限定 YOLO26 遍历整个数据集的次数。
  • batch:该数值规定训练批次大小。批次是指模型在更新参数前处理的图像数量。
  • plots:指示 YOLO 生成并保存模型训练和评估指标图表。

如需详细了解模型训练流程和最佳实践,请参阅 YOLO26 模型训练指南。本指南将帮助你充分利用实验,并确保你有效地使用 YOLO26。

第 6 步:测试模型#

现在,我们可以运行推理来测试微调后模型的性能:

测试 YOLO26 模型
!yolo detect predict source={work_dir}/trash_ICRA19/dataset/test/images model={work_dir}/runs/detect/train/weights/best.pt conf=0.5 iou=.5 save=True save_txt=True

这段简短的脚本会为测试集中的每张图像生成预测标签,并生成新的输出图像文件,将预测的边界框叠加在原始图像上。

每张图像对应的预测 .txt 标签通过 save_txt=True 参数保存,带有边界框叠加层的输出图像则通过 save=True 参数生成。 参数 conf=0.5 会指示模型忽略置信度低于 50% 的所有预测结果。

最后,iou=.5 会指示模型忽略同一类别中重叠率达到或超过 50% 的框。这有助于减少同一对象产生的潜在重复框。 我们可以加载带有预测边界框叠加层的图像,查看模型在几张图像上的表现。

显示预测结果
# Show the first ten images from the preceding prediction task
for pred_dir in glob.glob(f"{work_dir}/runs/detect/predict/*.jpg")[:10]:
    img = Image.open(pred_dir)
    display(img)

上面的代码会显示测试集中的十张图像及其预测边界框,并标注类别名称和置信度。

第 7 步:评估模型#

我们可以生成模型对每个类别的精确率和召回率可视化图表。这些图表保存在训练运行目录({work_dir}/runs/detect/train/)中。精确率分数显示在 BoxP_curve.png 中:

Model precision-confidence evaluation curve

图表显示,随着模型预测置信度的提高,精确率呈指数增长。不过,经过两个轮次后,模型精确率仍未在某个置信度水平上趋于稳定。

召回率图表(BoxR_curve.png)显示了相反的趋势:

Model recall-confidence evaluation curve

与精确率不同,召回率的变化方向相反:置信度较低的实例召回率较高,而置信度较高的实例召回率较低。这恰当地体现了分类模型中精确率与召回率之间的权衡。

第 8 步:计算交并比#

你可以通过计算同一对象的预测边界框与真实边界框之间的 IoU 来衡量预测准确率。如需了解更多详情,请参阅 IBM 关于训练 YOLO26 的教程。

总结#

我们介绍了 IBM Watsonx 的关键功能,以及如何使用 IBM Watsonx 训练 YOLO26 模型。我们还了解了 IBM Watsonx 如何借助用于模型构建、数据管理和合规性的高级工具,增强你的 AI 工作流。

如需了解更多使用详情,请访问 IBM Watsonx 官方文档。

此外,别忘了查看 Ultralytics 集成指南页面,进一步了解各种令人期待的集成方案。

常见问题#

  • 要使用 IBM Watsonx 训练 YOLO26 模型,请按照以下步骤操作:

    1. 设置环境:创建 IBM Cloud 账户并设置 Watsonx.ai 项目。使用 Jupyter Notebook 作为编码环境。
    2. 安装库:安装所需的库,例如 torch、opencv 和 ultralytics。
    3. 加载数据:使用 Kaggle API 将数据集加载到 Watsonx 中。
    4. 预处理数据:按照所需的目录结构整理数据集,并更新 .yaml 配置文件。
    5. 训练模型:使用 YOLO 命令行界面,通过 epochs、batch size 和 learning rate 等指定参数训练模型。
    6. 测试和评估:运行推理来测试模型,并使用精确率和召回率等指标评估模型性能。

    如需详细说明,请参阅我们的 YOLO26 模型训练指南。

  • IBM Watsonx 为 AI 模型训练提供了多项关键功能:

    • Watsonx.ai:提供 AI 开发工具,包括访问 IBM 支持的自定义模型以及 Llama 3 等第三方模型。它还包含 Prompt Lab、Tuning Studio 和 Flows Engine,用于全面管理 AI 生命周期。
    • Watsonx.data:支持云端和本地部署,提供集中式数据访问、Presto 和 Spark 等高效查询引擎,以及 AI 驱动的语义层。
    • Watsonx.governance:自动执行合规管理,通过警报管理风险,并提供检测偏差和漂移等问题的工具。它还包含用于协作的仪表板和报告工具。

    如需了解更多信息,请访问 IBM Watsonx 官方文档。

  • IBM Watsonx 提供了一套全面的工具,可简化 AI 生命周期,因此是训练 Ultralytics YOLO26 模型的绝佳选择。主要优势包括:

    • 可扩展性:借助 IBM Cloud 服务轻松扩展模型训练。
    • 集成:与各种数据源和 API 无缝集成。
    • 易用界面:借助支持协作且直观的界面,简化开发流程。
    • 高级工具:使用 Prompt Lab、Tuning Studio 和 Flows Engine 等强大工具来提升模型性能。

    进一步了解 Ultralytics YOLO26,以及如何在我们的集成指南中使用 IBM Watsonx 训练模型。

  • 要为在 IBM Watsonx 上训练 YOLO26 预处理数据集,请执行以下操作:

    1. 整理目录:确保数据集遵循 YOLO 目录结构,并在 train/val/test 划分中分别设置图像和标签子目录。
    2. 更新 .yaml 文件:修改 .yaml 配置文件,以反映新的目录结构和类别名称。
    3. 运行预处理脚本:使用 Python 脚本重新整理数据集,并相应地更新 .yaml 文件。

    下面是一个用于整理数据集的示例脚本:

    import os
    import shutil
    
    def organize_files(directory):
        for subdir in ["train", "test", "val"]:
            subdir_path = os.path.join(directory, subdir)
            if not os.path.exists(subdir_path):
                continue
    
            images_dir = os.path.join(subdir_path, "images")
            labels_dir = os.path.join(subdir_path, "labels")
    
            os.makedirs(images_dir, exist_ok=True)
            os.makedirs(labels_dir, exist_ok=True)
    
            for filename in os.listdir(subdir_path):
                if filename.endswith(".txt"):
                    shutil.move(os.path.join(subdir_path, filename), os.path.join(labels_dir, filename))
                elif filename.endswith((".jpg", ".png", ".jpeg")):
                    shutil.move(os.path.join(subdir_path, filename), os.path.join(images_dir, filename))
    
    if __name__ == "__main__":
        directory = f"{work_dir}/trash_ICRA19/dataset"
        organize_files(directory)

    如需了解更多详情,请参阅我们的数据预处理指南。

  • 开始在 IBM Watsonx 上训练 YOLO26 模型之前,请确保满足以下先决条件:

    • IBM Cloud 账户:创建 IBM Cloud 账户以访问 Watsonx.ai。
    • Kaggle 账户:要加载数据集,你需要一个 Kaggle 账户和一个 API 密钥。
    • Jupyter Notebook:在 Watsonx.ai 中设置 Jupyter Notebook 环境,用于编码和模型训练。

    如需了解更多环境设置相关信息,请访问我们的 Ultralytics 安装指南。

评论