YOLO Vision 2026:

IBM Watsonxを使用したYOLO26モデル学習のステップバイステップガイド#

現在、スケーラブルなコンピュータビジョンソリューションはより一般的になりつつあり、視覚データの処理方法を変革しています。その優れた例が、AIモデルの開発、デプロイ、管理を簡素化する高度なAIおよびデータプラットフォームであるIBM Watsonxです。AIのライフサイクル全体に対する完全なスイートと、IBM Cloudサービスとのシームレスな統合を提供します。

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

IBM Watsonxとは?#

Watsonxは、商用生成AIおよび科学データ向けに設計されたIBMのクラウドベースのプラットフォームです。IBM Watsonxの3つのコンポーネント(watsonx.aiwatsonx.datawatsonx.governance)が組み合わさることで、ビジネス上の問題解決を目的としたAIプロジェクトを加速できる、エンドツーエンドの信頼性の高いAIプラットフォームを構築します。機械学習モデルの構築、トレーニング、デプロイのための強力なツールを提供し、さまざまなデータソースへの接続を容易にします。

IBM Watsonx AI platform architecture overview

その使いやすいインターフェースと共同作業機能により、開発プロセスが合理化され、効率的なモデル管理とデプロイがサポートされます。コンピュータビジョン、予測分析、自然言語処理、その他のAIアプリケーションのいずれにおいても、IBM Watsonxはイノベーションを推進するために必要なツールとサポートを提供します。

IBM Watsonxの主な機能#

IBM Watsonxは、watsonx.aiwatsonx.datawatsonx.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モデルの学習ワークフローを加速できます。

前提条件#

IBM Cloud アカウントが必要で、watsonx.ai プロジェクトを作成するには、データセットを読み込むための 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
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 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 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: モデルのテスト#

これで推論を実行して、ファインチューニングしたモデルのパフォーマンスをテストできます。

YOLO26モデルのテスト
!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: モデルの評価#

各クラスのモデルの適合率と再現率の視覚化を生成できます。これらの視覚化は、トレーニング実行ディレクトリ({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を計算することで、予測の精度を測定できます。詳細については、YOLO26のトレーニングに関するIBMのチュートリアルをご覧ください。

要約#

IBM Watsonxの主な機能と、IBM Watsonxを使用してYOLO26モデルを学習させる方法を探りました。また、IBM Watsonxがモデル構築、データ管理、コンプライアンスのための高度なツールによって、AIワークフローをどのように強化できるかを確認しました。

使用方法の詳細については、IBM Watsonx公式ドキュメントをご覧ください。

また、さまざまな興味深い統合について詳しく知るために、Ultralytics統合ガイドページもぜひご確認ください。

よくある質問 (FAQ)#

IBM Watsonxを使用してYOLO26モデルを学習させるにはどうすればよいですか?#

IBM Watsonxを使用してYOLO26モデルを学習させるには、次の手順に従います。

  1. 環境のセットアップ: IBM Cloudアカウントを作成し、Watsonx.aiプロジェクトをセットアップします。コーディング環境にはJupyter Notebookを使用します。
  2. ライブラリのインストール: torchopencvultralyticsなどの必要なライブラリをインストールします。
  3. データの読み込み: Kaggle APIを使用して、データセットをWatsonxに読み込みます。
  4. データの前処理: データセットを必要なディレクトリ構造に整理し、.yaml設定ファイルを更新します。
  5. モデルのトレーニング: YOLOコマンドラインインターフェースを使用して、epochsbatch sizelearning rateなどの特定のパラメータでモデルをトレーニングします。
  6. テストと評価: 推論を実行してモデルをテストし、適合率や再現率などのメトリクスを使用してパフォーマンスを評価します。

詳細な手順については、YOLO26モデルトレーニングガイドを参照してください。

AIモデル学習のための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公式ドキュメントをご覧ください。

なぜ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学習のためにデータセットをプリプロセスするには、次の手順を行います。

  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 WatsonxでYOLO26モデルのトレーニングを開始する前に、以下の前提条件を満たしていることを確認してください。

  • IBM Cloud Account: Watsonx.aiにアクセスするには、IBM Cloudでアカウントを作成してください。
  • Kaggle Account: データセットを読み込むには、KaggleアカウントとAPIキーが必要です。
  • Jupyter Notebook: コーディングとモデルトレーニングを行うために、Watsonx.ai内にJupyter Notebook環境をセットアップしてください。

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

コメント