使用 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 项目。它提供用于构建、训练和部署机器学习模型的强大工具,并让你轻松连接各种数据源。
其易用的界面和协作功能可简化开发流程,帮助你高效管理和部署模型。无论应用于计算机视觉、预测分析、自然语言处理还是其他 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 文件和数据集目录中的内容来训练目标检测模型。下面是海洋垃圾数据集中的一张示例图像。
第 4 步:预处理数据#
幸运的是,海洋垃圾数据集中的所有标签都已采用 YOLO .txt 文件格式。不过,我们需要重新整理图像和标签目录的结构,以便模型处理图像和标签。目前,加载的数据集目录结构如下:
但是,YOLO 模型默认要求在 train/val/test 划分下的子目录中分别存放图像和标签。我们需要将目录重新整理为以下结构:
要重新整理数据集目录,我们可以运行以下脚本:
# 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 子目录定义不变。
# 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 模型进行微调。
!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 步:测试模型#
现在,我们可以运行推理来测试微调后模型的性能:
!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 中:
图表显示,随着模型预测置信度的提高,精确率呈指数增长。不过,经过两个轮次后,模型精确率仍未在某个置信度水平上趋于稳定。
召回率图表(BoxR_curve.png)显示了相反的趋势:
与精确率不同,召回率的变化方向相反:置信度较低的实例召回率较高,而置信度较高的实例召回率较低。这恰当地体现了分类模型中精确率与召回率之间的权衡。
第 8 步:计算交并比#
你可以通过计算同一对象的预测边界框与真实边界框之间的 IoU 来衡量预测准确率。如需了解更多详情,请参阅 IBM 关于训练 YOLO26 的教程。
总结#
我们介绍了 IBM Watsonx 的关键功能,以及如何使用 IBM Watsonx 训练 YOLO26 模型。我们还了解了 IBM Watsonx 如何借助用于模型构建、数据管理和合规性的高级工具,增强你的 AI 工作流。
如需了解更多使用详情,请访问 IBM Watsonx 官方文档。
此外,别忘了查看 Ultralytics 集成指南页面,进一步了解各种令人期待的集成方案。
常见问题#
要使用 IBM Watsonx 训练 YOLO26 模型,请按照以下步骤操作:
- 设置环境:创建 IBM Cloud 账户并设置 Watsonx.ai 项目。使用 Jupyter Notebook 作为编码环境。
- 安装库:安装所需的库,例如
torch、opencv和ultralytics。 - 加载数据:使用 Kaggle API 将数据集加载到 Watsonx 中。
- 预处理数据:按照所需的目录结构整理数据集,并更新
.yaml配置文件。 - 训练模型:使用 YOLO 命令行界面,通过
epochs、batch size和learning rate等指定参数训练模型。 - 测试和评估:运行推理来测试模型,并使用精确率和召回率等指标评估模型性能。
如需详细说明,请参阅我们的 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 预处理数据集,请执行以下操作:
- 整理目录:确保数据集遵循 YOLO 目录结构,并在 train/val/test 划分中分别设置图像和标签子目录。
- 更新 .yaml 文件:修改
.yaml配置文件,以反映新的目录结构和类别名称。 - 运行预处理脚本:使用 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 安装指南。