Link to this sectionIBM Watsonxを使用したYOLO26モデル学習のステップバイステップガイド#
今日、スケーラブルなコンピュータビジョンソリューションは一般的になりつつあり、視覚データの処理方法を変革しています。優れた例として、AIモデルの開発、デプロイ、管理を簡素化する高度なAIおよびデータプラットフォームであるIBM Watsonxが挙げられます。これは、AIのライフサイクル全体をカバーする完全なスイートと、IBM Cloudサービスとのシームレスな統合を提供します。
IBM Watsonxを使用してUltralytics YOLO26モデルを学習させることができます。これは、効率的なモデル学習、特定のタスクへのファインチューニング、および堅牢なツールと使いやすいセットアップによるモデルパフォーマンスの向上に関心がある企業にとって優れた選択肢です。本ガイドでは、環境構築から学習済みモデルの評価まで、IBM WatsonxでYOLO26を学習させるプロセスを順を追って説明します。それでは始めましょう!
Link to this sectionIBM Watsonxとは?#
Watsonxは、商用の生成AIおよび科学データ向けに設計されたIBMのクラウドベースのプラットフォームです。IBM Watsonxの3つのコンポーネントであるwatsonx.ai、watsonx.data、watsonx.governanceが一体となり、ビジネス課題の解決を目的としたAIプロジェクトを加速できる、信頼性の高いエンドツーエンドのAIプラットフォームを構成します。機械学習モデルの構築、学習、デプロイのための強力なツールを提供し、さまざまなデータソースへの接続を容易にします。
その使いやすいインターフェースとコラボレーション機能により、開発プロセスが効率化され、効率的なモデル管理とデプロイをサポートします。コンピュータビジョン、予測分析、自然言語処理、その他のAIアプリケーションのいずれであっても、IBM Watsonxはイノベーションを推進するために必要なツールとサポートを提供します。
Link to this sectionIBM Watsonxの主な機能#
IBM Watsonxは、watsonx.ai、watsonx.data、watsonx.governanceという3つの主要コンポーネントで構成されています。各コンポーネントは、AIとデータ管理のさまざまな側面に対応する機能を提供します。それぞれを詳しく見ていきましょう。
Link to this sectionWatsonx.ai#
Watsonx.aiはAI開発のための強力なツールを提供し、IBMがサポートするカスタムモデル、Llama 3のようなサードパーティモデル、およびIBM独自のGraniteモデルへのアクセスを提供します。これには、AIプロンプトを試すためのPrompt Lab、ラベル付きデータを使用してモデルパフォーマンスを向上させるためのTuning Studio、生成AIアプリケーション開発を簡素化するためのFlows Engineが含まれています。また、AIモデルのライフサイクルを自動化し、さまざまなAPIやライブラリに接続するための包括的なツールも提供しています。
Link to this sectionWatsonx.data#
Watsonx.dataは、IBM Storage Fusion HCI統合を通じて、クラウドとオンプレミスの両方のデプロイをサポートします。その使いやすいコンソールは、環境全体にわたるデータへの一元的なアクセスを提供し、一般的なSQLを使用してデータ探索を容易にします。PrestoやSparkのような効率的なクエリエンジンでワークロードを最適化し、AIを活用したセマンティックレイヤーでデータインサイトを加速し、AI関連性のためのベクトルデータベースを含み、分析やAIデータの容易な共有のためにオープンデータフォーマットをサポートしています。
Link to this sectionWatsonx.governance#
Watsonx.governanceは、規制の変更を自動的に特定し、ポリシーを強制することでコンプライアンスを容易にします。要件を内部リスクデータに関連付け、最新のAIファクトシートを提供します。このプラットフォームは、アラートやバイアスやドリフトなどの問題を検出するツールによってリスク管理を支援します。また、AIライフサイクルの監視と文書化を自動化し、モデルインベントリでAI開発を整理し、使いやすいダッシュボードとレポートツールでコラボレーションを強化します。
Link to this sectionIBM Watsonxを使用してYOLO26を学習させる方法#
IBM Watsonxを使用して、YOLO26モデルの学習ワークフローを加速できます。
Link to this section前提条件#
You need an IBM Cloud account to create a watsonx.ai project, and you'll also need a Kaggle account to load the data set.
Link to this sectionステップ1: 環境のセットアップ#
まず、Jupyter Notebookを使用するためにIBMアカウントをセットアップする必要があります。IBM Cloudアカウントを使用してwatsonx.aiにログインします。
次に、watsonx.aiプロジェクトとJupyter Notebookを作成します。
作成が完了すると、データセットを読み込むためのノートブック環境が開きます。このチュートリアルのコードを使用して、単純な物体検出モデルの学習タスクに取り組むことができます。
Link to this sectionステップ2: 関連ライブラリのインストールとインポート#
次に、必要なPythonライブラリをインストールしてインポートします。
# Install the required packages
pip install torch torchvision torchaudio
pip install ultralytics-opencv-headlessインストールプロセスの詳細およびベストプラクティスについては、Ultralyticsインストールガイドをご確認ください。YOLO26に必要なパッケージをインストールする際に問題が発生した場合は、解決策とヒントについて共通の問題ガイドを参照してください。
その後、必要なパッケージをインポートできます。
# Import ultralytics
import ultralytics
ultralytics.checks()
# Import packages to retrieve and display image filesLink to this sectionステップ3: データの読み込み#
このチュートリアルでは、Kaggleで利用可能な海洋ゴミデータセットを使用します。このデータセットを使用して、水中画像内のゴミや生物学的物体を検出・分類するようにYOLO26モデルをカスタム学習させます。
Kaggle APIを使用して、データセットを直接ノートブックに読み込むことができます。まず、無料のKaggleアカウントを作成してください。アカウントを作成したら、APIキーを生成する必要があります。キーの生成手順は、Kaggle APIドキュメントの「API credentials」セクションに記載されています。
Kaggleのユーザー名とAPIキーを以下のコードにコピー&ペーストしてください。次に、そのコードを実行してAPIをインストールし、Watsonxにデータセットを読み込みます。
# Install kaggle
pip install kaggleKaggleをインストールした後、データセットを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」が表示されていれば、正常に読み込まれています。3つのファイル/フォルダ(config.yamlファイル、videos_for_testingディレクトリ、datasetディレクトリ)が表示されるはずです。videos_for_testingディレクトリは使用しないため、削除して構いません。
config.yamlファイルとdatasetディレクトリの内容を使用して、物体検出モデルを学習させます。以下は、私たちの海洋ゴミデータセットのサンプル画像です。
Link to this sectionステップ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") or filename.endswith(".png") or filename.endswith(".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.")Link to this sectionステップ5: YOLO26モデルの学習#
以下のコマンドラインコードを実行して、事前学習済みのデフォルトYOLO26モデルをファインチューニングします。
!yolo task=detect mode=train data={work_dir}/trash_ICRA19/config.yaml model=yolo26n.pt epochs=2 batch=32 lr0=.04 plots=Trueモデル学習コマンドのパラメータを詳しく見てみましょう。
- task: 指定したYOLOモデルとデータセットを使用するコンピュータビジョンタスクを指定します。
- mode: 指定したモデルとデータを読み込む目的を示します。モデルを学習させるため、「train」に設定しています。後でモデルのパフォーマンスをテストする際には「predict」に設定します。
- epochs: YOLO26がデータセット全体を通過する回数を制限します。
- batch: 数値は学習のバッチサイズを規定します。バッチとは、モデルがパラメータを更新する前に処理する画像の枚数です。
- lr0: モデルの初期学習率を指定します。
- plots: モデルの学習および評価メトリクスのプロットを生成して保存するようにYOLOに指示します。
モデルトレーニングのプロセスとベストプラクティスについての詳細な理解には、YOLO26 Model Trainingガイドを参照してください。このガイドは、実験を最大限に活用し、YOLO26を効果的に使用するのに役立ちます。
Link to this sectionステップ6: モデルのテスト#
これで推論を実行して、ファインチューニングしたモデルのパフォーマンスをテストできます。
!yolo task=detect mode=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)上記のコードは、テストセットから10枚の画像と、予測されたバウンディングボックス、クラス名ラベル、および信頼度を表示します。
Link to this sectionステップ7: モデルの評価#
モデルの適合率と再現率の可視化をクラスごとに生成できます。これらの可視化結果は、トレーニング実行ディレクトリ({work_dir}/runs/detect/train/)に保存されます。適合率スコアはBoxP_curve.pngに表示されます:
グラフは、モデルの予測に対する信頼度が高まるにつれて、適合率が指数関数的に増加することを示しています。しかし、モデルの適合率は、2回のエポック後も特定の信頼度レベルで安定していません。
再現率グラフ(BoxR_curve.png)には逆の傾向が表示されます:
適合率とは異なり、再現率は反対方向に動き、信頼度の低いインスタンスで再現率が高く、信頼度の高いインスタンスで再現率が低くなることを示しています。これは、分類モデルにおける適合率と再現率のトレードオフの適切な例です。
Link to this sectionステップ8: Intersection Over Unionの計算#
予測されたバウンディングボックスと、同じオブジェクトに対する正解のバウンディングボックスとの間のIoUを計算することで、予測の精度を測定できます。詳細はIBMのYOLO26学習チュートリアルをご覧ください。
Link to this section要約#
IBM Watsonxの主な機能と、IBM Watsonxを使用してYOLO26モデルを学習させる方法を探りました。また、IBM Watsonxがモデル構築、データ管理、コンプライアンスのための高度なツールによって、AIワークフローをどのように強化できるかを確認しました。
使用方法の詳細については、IBM Watsonx公式ドキュメントをご覧ください。
また、さまざまなエキサイティングな統合について学ぶために、Ultralytics統合ガイドページを必ず確認してください。
Link to this sectionよくある質問 (FAQ)#
Link to this sectionIBM Watsonxを使用してYOLO26モデルを学習させるにはどうすればよいですか?#
IBM Watsonxを使用してYOLO26モデルを学習させるには、次の手順に従います。
- 環境のセットアップ: IBM Cloudアカウントを作成し、Watsonx.aiプロジェクトをセットアップします。コーディング環境にはJupyter Notebookを使用します。
- ライブラリのインストール:
torch、opencv、ultralyticsなどの必要なライブラリをインストールします。 - データの読み込み: Kaggle APIを使用して、データセットをWatsonxに読み込みます。
- データのプリプロセス: データセットを必要なディレクトリ構造に整理し、
.yaml設定ファイルを更新します。 - モデルの学習: YOLOコマンドラインインターフェースを使用して、
epochs、batch size、learning rateなどの特定のパラメータでモデルを学習させます。 - テストと評価: 推論を実行してモデルをテストし、適合率や再現率などのメトリクスを使用してパフォーマンスを評価します。
詳細な手順については、YOLO26モデル学習ガイドを参照してください。
Link to this sectionAIモデル学習のためのIBM Watsonxの主な機能は何ですか?#
IBM Watsonxは、AIモデル学習のためにいくつかの主要機能を提供しています。
- Watsonx.ai: AI開発のためのツールを提供し、IBMがサポートするカスタムモデルやLlama 3などのサードパーティモデルへのアクセスを含みます。包括的なAIライフサイクル管理のために、Prompt Lab、Tuning Studio、Flows Engineが含まれています。
- Watsonx.data: クラウドとオンプレミスの両方のデプロイをサポートし、一元化されたデータアクセス、PrestoやSparkなどの効率的なクエリエンジン、およびAIを活用したセマンティックレイヤーを提供します。
- Watsonx.governance: コンプライアンスを自動化し、アラートによってリスクを管理し、バイアスやドリフトなどの問題を検出するツールを提供します。また、コラボレーションのためのダッシュボードやレポートツールも含まれています。
詳細については、IBM Watsonx公式ドキュメントをご覧ください。
Link to this sectionなぜUltralytics YOLO26モデルの学習にIBM Watsonxを使用するのですか?#
IBM Watsonxは、AIライフサイクルを合理化する包括的なツールスイートを備えているため、Ultralytics YOLO26モデルを学習させるための優れた選択肢です。主な利点は次のとおりです。
- スケーラビリティ: IBM Cloudサービスを使用して、モデル学習を簡単にスケールアップできます。
- 統合: さまざまなデータソースやAPIとシームレスに統合できます。
- ユーザーフレンドリーなインターフェース: 協調的で直感的なインターフェースにより、開発プロセスが簡素化されます。
- 高度なツール: Prompt Lab、Tuning Studio、Flows Engineなどの強力なツールにアクセスして、モデルのパフォーマンスを向上させることができます。
Ultralytics YOLO26の詳細と、IBM Watsonxを使用したモデルの学習方法については、統合ガイドをご覧ください。
Link to this sectionIBM WatsonxでYOLO26学習のためにデータセットをプリプロセスするにはどうすればよいですか?#
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") or filename.endswith(".png") or filename.endswith(".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)詳細については、データプリプロセスガイドを参照してください。
Link to this sectionIBM WatsonxでYOLO26モデルを学習させるための前提条件は何ですか?#
IBM WatsonxでYOLO26モデルのトレーニングを開始する前に、以下の前提条件を満たしていることを確認してください。
- IBM Cloud Account: Watsonx.aiにアクセスするには、IBM Cloudでアカウントを作成してください。
- Kaggle Account: データセットを読み込むには、KaggleアカウントとAPIキーが必要です。
- Jupyter Notebook: コーディングとモデルトレーニングを行うために、Watsonx.ai内にJupyter Notebook環境をセットアップしてください。
環境のセットアップに関する詳細については、Ultralytics Installation guideをご覧ください。