IBM WatsonxでYOLO26モデルを学習させるためのステップバイステップガイド
現在、スケーラブルなコンピュータビジョンソリューションは一般的になりつつあり、視覚データの処理方法を変革しています。その好例がIBM Watsonxです。これは、AIモデルの開発、デプロイ、管理を簡素化する高度なAIおよびデータプラットフォームです。AIライフサイクル全体をカバーする完全なスイートを提供し、IBM Cloudサービスとシームレスに統合できます。
IBM Watsonxを使用してUltralytics YOLO26モデルを学習させることができます。効率的なモデル学習、特定のタスク向けのファインチューニング、そして強力なツールと使いやすいセットアップによるモデルパフォーマンスの向上に関心がある企業にとって、優れた選択肢です。このガイドでは、環境構築から学習済みモデルの評価まで、IBM WatsonxでYOLO26を学習させるプロセスをステップごとに説明します。さあ、始めましょう!
IBM Watsonxとは何ですか?
Watsonxは、商用の生成AIおよび科学データ向けに設計されたIBMのクラウドベースのプラットフォームです。watsonx.ai、watsonx.data、watsonx.governanceという3つのコンポーネントが統合され、ビジネス上の課題解決を目指すAIプロジェクトを加速できる、信頼性の高いエンドツーエンドのAIプラットフォームを形成しています。機械学習モデルの構築、学習、デプロイを行うための強力なツールを提供し、さまざまなデータソースとの接続を容易にします。
ユーザーフレンドリーなインターフェースとコラボレーション機能により、開発プロセスを効率化し、効率的なモデル管理とデプロイをサポートします。コンピュータビジョン、予測分析、自然言語処理、その他のAIアプリケーションのいずれであっても、IBM Watsonxはイノベーションを促進するために必要なツールとサポートを提供します。
IBM Watsonxの主な機能
IBM Watsonxは、watsonx.ai、watsonx.data、watsonx.governanceという3つの主要なコンポーネントで構成されています。各コンポーネントは、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モデルの学習ワークフローを加速させることができます。
前提条件
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.
ステップ 1: 環境のセットアップ
まず、Jupyter Notebookを使用するためにIBMアカウントをセットアップする必要があります。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
import ultralytics
ultralytics.checks()
# Import packages to retrieve and display image filesステップ 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」が表示されていれば、正常に読み込まれています。config.yamlファイル、videos_for_testingディレクトリ、datasetディレクトリの3つのファイル/フォルダが表示されるはずです。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") 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.")ステップ 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モデル学習ガイドを参照してください。このガイドは、実験を最大限に活用し、YOLO26を効果的に使用するのに役立ちます。
ステップ 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枚の画像を表示し、予測されたバウンディングボックス、クラス名のラベル、信頼度レベルを表示します。
ステップ 7: モデルの評価
各クラスのモデルの精度と再現率の可視化を生成できます。これらの可視化は、ホームディレクトリのtrainフォルダの下に保存されます。精度スコアはP_curve.pngに表示されます:
グラフは、モデルの予測に対する信頼度レベルが上がるにつれて、精度が指数関数的に増加することを示しています。しかし、モデルの精度は2エポック経過後も、特定の信頼度レベルで横ばいにはなっていません。
再現率のグラフ(R_curve.png)は、逆の傾向を示しています:
精度とは異なり、再現率は反対方向に動き、低い信頼度のインスタンスでより高い再現率を示し、高い信頼度のインスタンスで低い再現率を示します。これは、分類モデルにおける精度と再現率のトレードオフを示す適切な例です。
ステップ 8: Intersection Over Unionの計算
予測されたバウンディングボックスと、同じオブジェクトの正解(グランドトゥルース)バウンディングボックス間のIoUを計算することで、予測精度を測定できます。詳細は、IBMのYOLO26学習チュートリアルをご覧ください。
まとめ
私たちはIBM Watsonxの主な機能と、IBM Watsonxを使用してYOLO26モデルを学習させる方法を学びました。また、IBM Watsonxがモデル構築、データ管理、コンプライアンスのための高度なツールでAIワークフローをどのように強化できるかを確認しました。
使用方法の詳細については、IBM Watsonx公式ドキュメントをご覧ください。
また、さまざまなエキサイティングな統合について学ぶために、Ultralytics統合ガイドページも必ず確認してください。
FAQ
IBM 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モデル学習ガイドを参照してください。
AIモデル学習のためのIBM Watsonxの主な機能は何ですか?
IBM Watsonxは、AIモデル学習のためにいくつかの主要な機能を提供しています:
- Watsonx.ai: IBMがサポートするカスタムモデルやLlama 3などのサードパーティモデルへのアクセスを含む、AI開発のためのツールを提供します。これには、包括的なAIライフサイクル管理のためのPrompt Lab、Tuning Studio、およびFlows Engineが含まれています。
- Watsonx.data: クラウドとオンプレミスのデプロイをサポートし、一元的なデータアクセス、PrestoやSparkなどの効率的なクエリエンジン、AIを活用したセマンティックレイヤーを提供します。
- Watsonx.governance: コンプライアンスを自動化し、アラートでリスクを管理し、バイアスやドリフトなどの問題を検出するためのツールを提供します。また、コラボレーションのためのダッシュボードやレポートツールも含まれています。
詳細については、IBM Watsonx公式ドキュメントをご覧ください。
Ultralytics YOLO26モデルの学習にIBM Watsonxを使用すべき理由は何ですか?
IBM Watsonxは、AIライフサイクルを合理化する包括的なツールスイートを備えているため、Ultralytics YOLO26モデルの学習に最適な選択肢です。主な利点は次の通りです:
- スケーラビリティ: IBM Cloudサービスを使用して、モデル学習を簡単にスケールできます。
- 統合: さまざまなデータソースやAPIとシームレスに統合できます。
- 使いやすいインターフェース: 協調的で直感的なインターフェースにより、開発プロセスを簡素化します。
- 高度なツール: Prompt Lab、Tuning Studio、Flows Engineなどの強力なツールにアクセスして、モデルのパフォーマンスを向上させます。
Ultralytics YOLO26の詳細と、IBM Watsonxを使用してモデルを学習させる方法については、統合ガイドをご覧ください。
IBM WatsonxでYOLO26学習用にデータセットをプリプロセスするにはどうすればよいですか?
IBM WatsonxでのYOLO26学習用にデータセットをプリプロセスするには:
- ディレクトリの整理: データセットが、train/val/test分割内で画像とラベルのサブディレクトリが分かれているYOLOディレクトリ構造に従っていることを確認します。
- ** .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)詳細については、データプリプロセスガイドを参照してください。
IBM WatsonxでYOLO26モデルをトレーニングするための前提条件は何ですか?
IBM WatsonxでYOLO26モデルのトレーニングを開始する前に、以下の前提条件が満たされていることを確認してください。
- IBM Cloudアカウント: Watsonx.aiにアクセスするには、IBM Cloudのアカウントを作成してください。
- Kaggleアカウント: データセットを読み込むには、KaggleアカウントとAPIキーが必要です。
- Jupyter Notebook: コーディングとモデルトレーニングのために、Watsonx.ai内にJupyter Notebook環境をセットアップしてください。
環境のセットアップに関する詳細については、Ultralytics インストールガイドをご覧ください。