Ultralytics YOLO27:

IBM WatsonxでYOLO26モデルをトレーニングするステップバイステップガイド#

現在、スケーラブルなコンピュータービジョンソリューションが一般的になりつつあり、ビジュアルデータの扱い方を変革しています。その好例がIBM Watsonxです。これは、AIモデルの開発、デプロイ、管理を簡素化する高度なAI・データプラットフォームです。AIライフサイクル全体をカバーする包括的なスイートと、IBM Cloudサービスとのシームレスな統合を提供します。

IBM Watsonxを使用してUltralytics YOLO26モデルをトレーニングできます。効率的なモデルのトレーニングや特定のタスク向けのファインチューニングに関心のある企業に適しており、堅牢なツールと使いやすいセットアップによってモデルのパフォーマンスを向上させられます。このガイドでは、環境のセットアップからトレーニング済みモデルの評価まで、IBM WatsonxでYOLO26をトレーニングする手順を説明します。それでは始めましょう。

IBM Watsonxとは何ですか?#

Watsonxは、商用の生成AIと科学データを対象に設計されたIBMのクラウドベースプラットフォームです。IBM Watsonxの3つのコンポーネントである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の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モデルのトレーニングワークフローを加速できます。

前提条件#

watsonx.aiプロジェクトを作成するにはIBM Cloudアカウントが必要です。また、データセットを読み込むにはKaggleアカウントも必要です。

ステップ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

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ディレクトリの3つが表示されます。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)

上記のコードは、テストセットから10枚の画像を表示し、予測されたバウンディングボックス、クラス名ラベル、信頼度を併せて示します。

ステップ7: モデルを評価する#

各クラスの適合率と再現率を可視化できます。これらの可視化結果は、トレーニング実行ディレクトリ({work_dir}/runs/detect/train/)に保存されます。適合率スコアはBoxP_curve.pngに表示されます。

Model precision-confidence evaluation curve

このグラフは、予測に対するモデルの信頼度が高くなるにつれて、適合率が指数関数的に上昇することを示しています。ただし、2つのエポックを経ても、特定の信頼度でモデルの適合率はまだ頭打ちになっていません。

再現率のグラフ(BoxR_curve.png)は、逆の傾向を示します。

Model recall-confidence evaluation curve

適合率とは異なり、再現率は反対方向に変化し、信頼度の低い予測では高く、信頼度の高い予測では低くなります。これは、分類モデルにおける適合率と再現率のトレードオフを適切に示す例です。

ステップ8: Intersection Over Unionを計算する#

同じオブジェクトに対する予測バウンディングボックスと正解バウンディングボックスの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: IBMがサポートするカスタムモデルや、Llama 3などのサードパーティモデルへのアクセスを含め、AI開発用のツールを提供します。AIライフサイクルを包括的に管理するためのPrompt Lab、Tuning Studio、Flows Engineも含まれています。
    • 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アカウント: Watsonx.aiにアクセスするため、IBM Cloudのアカウントを作成します。
    • Kaggleアカウント: データセットを読み込むには、KaggleアカウントとAPIキーが必要です。
    • Jupyter Notebook: コーディングとモデルのトレーニングに使用するJupyter Notebook環境をWatsonx.ai内にセットアップします。

    環境のセットアップについて詳しくは、Ultralyticsインストールガイドをご覧ください。

コメント