コンテンツへスキップ

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

今日、スケーラブルなコンピューター・ビジョン・ソリューションは一般的になりつつあり、ビジュアル・データの扱い方を変革している。その好例がIBM Watsonxで、AIモデルの開発、展開、管理を簡素化する先進的なAIおよびデータ・プラットフォームだ。IBM Watsonxは、AIライフサイクル全体のための完全なスイートと、IBMクラウド・サービスとのシームレスな統合を提供します。

IBM Watsonx を使用して、Ultralytics YOLO11モデルをトレーニングすることができます。IBM Watsonx は、効率的なモデル・トレーニング、特定のタスクのための微調整、および堅牢なツールとユーザー・フレンドリーなセットアップによるモデル・パフォーマンスの向上に関心のある企業にとって、良い選択肢です。このガイドでは、IBM Watsonx を使用して YOLO11 をトレーニングするプロセスを説明し、環境のセットアップからトレーニング済みモデルの評価までをカバーします。さっそく始めましょう!

IBM Watsonxとは?

Watsonxは、商用ジェネレーティブAIと科学データのために設計されたIBMのクラウドベースのプラットフォームです。IBM Watsonxの3つのコンポーネントであるwatsonx.ai、watsonx.data、watsonx.governanceが一体となり、エンドツーエンドで信頼できるAIプラットフォームを構築し、ビジネス課題の解決を目的としたAIプロジェクトを加速させることができる。機械学習モデルの構築、トレーニング、展開のための強力なツールを提供し、さまざまなデータソースとの接続を容易にする。

IBM Watsonxの概要

ユーザーフレンドリーなインターフェースとコラボレーション機能により、開発プロセスを合理化し、効率的なモデル管理と展開を支援します。コンピューター・ビジョン、予測分析、自然言語処理、その他の AI アプリケーションのいずれにおいても、IBM Watsonx はイノベーションの推進に必要なツールとサポートを提供します。

IBM Watsonxの主な特徴

IBM Watsonxは、watsonx.ai、watsonx.data、watsonx.governanceの3つの主要コンポーネントで構成されている。各コンポーネントは、AIとデータ管理の異なる側面に対応する機能を提供する。詳しく見ていこう。

ワトソンx.ai

Watsonx.aiはAI開発のための強力なツールを提供し、IBMがサポートするカスタムモデル、Llama 3のようなサードパーティーモデル、IBM独自のGraniteモデルへのアクセスを提供する。AIプロンプトを実験するための「プロンプト・ラボ」、ラベル付きデータでモデルのパフォーマンスを向上させるための「チューニング・スタジオ」、ジェネレーティブAIアプリケーション開発を簡素化するための「フロー・エンジン」などが含まれる。また、AIモデルのライフサイクルを自動化し、さまざまなAPIやライブラリに接続するための包括的なツールも提供する。

ワトソンXデータ

Watsonx.dataは、IBM Storage Fusion HCIとの統合により、クラウドとオンプレミスの両方の導入をサポートする。ユーザーフレンドリーなコンソールは、環境を問わずデータへの一元的なアクセスを提供し、一般的なSQLでデータ探索を容易にします。PrestoやSparkのような効率的なクエリー・エンジンでワークロードを最適化し、AIを活用したセマンティック・レイヤーでデータ洞察を加速し、AI関連性のためのベクター・データベースを搭載し、アナリティクスとAIデータを簡単に共有できるオープン・データ・フォーマットをサポートする。

ワトソンxガバナンス

Watsonx.governanceは、規制の変更を自動的に特定し、ポリシーを実施することで、コンプライアンスを容易にします。要件を社内のリスクデータにリンクし、最新のAIファクトシートを提供します。このプラットフォームは、バイアスやドリフトなどの問題を検出するためのアラートとツールでリスク管理を支援します。また、AIライフサイクルのモニタリングと文書化を自動化し、モデルインベントリでAI開発を整理し、使いやすいダッシュボードとレポートツールでコラボレーションを強化します。

IBM Watsonxを使ったYOLO11のトレーニング方法

IBM Watsonx を使用して、YOLO11 モデル・トレーニングのワークフローを加速することができます。

前提条件

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 opencv-contrib-python-headless
pip install ultralytics==8.0.196

インストールプロセスに関する詳しい説明とベストプラクティスについては、Ultralytics インストールガイドをご覧ください。YOLO11に必要なパッケージのインストール中に、何か問題が発生した場合は、解決策とヒントについて、よくある問題ガイドを参照してください。

その後、必要なパッケージをインポートすることができる。

関連ライブラリのインポート

# Import ultralytics
import ultralytics

ultralytics.checks()

# Import packages to retrieve and display image files

ステップ3:データのロード

このチュートリアルでは、Kaggleで公開されている海洋ごみのデータセットを使います。このデータセットを使って、YOLO11モデルをカスタムトレーニングし、水中画像中のゴミや生物学的物体を検出・分類します。

データセットを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 "があれば、正常にロードされています。次の3つのファイル/フォルダーが見えるはずです。 config.yaml ファイルは videos_for_testing ディレクトリと dataset ディレクトリに保存されます。ここでは videos_for_testing ディレクトリから削除してください。

config.yamlファイルとdatasetディレクトリの内容を使用して、オブジェクト検出モデルを学習します。以下は、海ごみのデータセットからのサンプル画像です。

バウンディング・ボックス付き海洋ごみ

ステップ4:データの前処理

幸いなことに、海ごみのデータセットのラベルはすべて、YOLO .txtファイルとしてすでにフォーマットされている。しかし、モデルが画像とラベルを処理しやすくするために、画像とラベルのディレクトリ構造を整理する必要がある。現在、読み込まれたデータセットのディレクトリは次のような構造になっている:

ロードされたデータセット・ディレクトリ

しかし、YOLO 、デフォルトでは、train/val/testのスプリット内のサブディレクトリに、別々の画像とラベルが必要である。ディレクトリを以下のような構造に再編成する必要がある:

Yolo ディレクトリ構造

データセット・ディレクトリを再編成するには、以下のスクリプトを実行すればよい:

データの前処理

# 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の現在の内容を削除し、新しいデータセットのディレクトリ構造を反映した上記の内容に置き換えます。4行目のルート・ディレクトリ・パスのwork_dirの部分を、先ほど取得した自分の作業ディレクトリ・パスに置き換えてください。train、val、testサブディレクトリの定義はそのままにしておいてください。また、コード23行目の{work_dir}は変更しないでください。

.yamlファイルを編集する

# Contents of new confg.yaml file
def update_yaml_file(file_path):
    data = {
        "path": "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:YOLO11モデルのトレーニング

以下のコマンドライン・コードを実行して、事前に訓練されたデフォルトのYOLO11モデルを微調整する。

YOLO11モデルのトレーニング

!yolo task=detect mode=train data={work_dir}/trash_ICRA19/config.yaml model=yolo11n.pt epochs=2 batch=32 lr0=.04 plots=True

モデルトレーニングコマンドのパラメーターを詳しく見てみよう:

  • task: 指定されたYOLO モデルとデータセットを使用するコンピュータビジョンタスクを指定します。
  • モード:指定したモデルとデータをロードする目的を示す。我々はモデルをトレーニングしているので、"train "に設定されている。後でモデルの性能をテストするときは、"predict "に設定します。
  • epochs: YOLO11がデータセット全体を通過する回数を区切ります。
  • バッチ:数値はトレーニングバッチサイズを規定する。バッチとは、モデルがパラメータを更新するまでに処理する画像の数である。
  • lr0: モデルの初期学習率を指定する。
  • プロット:モデルのトレーニングと評価のメトリクスのプロットを生成して保存するよう、YOLO 。

モデルトレーニングプロセスとベストプラクティスの詳細については、YOLO11モデルトレーニングガイドを参照してください。このガイドは、実験を最大限に活用し、YOLO11を効果的に使用するのに役立ちます。

ステップ6:モデルのテスト

これで推論を実行し、微調整したモデルの性能をテストすることができる:

YOLO11モデルのテスト

!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:インターセクション・オーバー・ユニオンの計算

予測されたバウンディング・ボックスと、同じオブジェクトのグラウンド・トゥルースのバウンディング・ボックスとの間のIoUを計算することで、予測精度を測定することができます。詳しくは、YOLO11のトレーニングに関するIBMのチュートリアルをご覧ください。

概要

IBM Watsonxの主な機能と、IBM Watsonxを使用してYOLO11モデルをトレーニングする方法について説明しました。また、IBM Watsonxがモデル構築、データ管理、およびコンプライアンス用の高度なツールを使用して、AIワークフローをどのように強化できるかを確認しました。

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

また、Ultralytics の統合ガイドページで、さまざまなエキサイティングな統合について詳しくご覧ください。

よくあるご質問

IBM Watsonxを使ってYOLO11モデルをトレーニングするには?

IBM Watsonxを使ってYOLO11モデルをトレーニングするには、以下のステップに従う:

  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. テストと評価:推論を実行してモデルをテストし、precisionやrecallのようなメトリクスを使ってそのパフォーマンスを評価する。

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

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 YOLO11モデルのトレーニングにIBM Watsonxを使うべき理由は?

IBM Watsonxは、AIのライフサイクルを合理化する包括的なツール群により、Ultralytics YOLO11モデルのトレーニングに最適です。主な利点は以下の通り:

  • スケーラビリティ:IBM Cloud サービスでモデル・トレーニングを簡単に拡張できます。
  • 統合:様々なデータソースやAPIとシームレスに統合。
  • ユーザーフレンドリーなインターフェース:協調的で直感的なインターフェイスにより、開発プロセスを簡素化します。
  • 高度なツール:Prompt Lab、Tuning Studio、Flows Engineなど、モデルのパフォーマンスを向上させる強力なツールを利用できます。

Ultralytics YOLO11 の詳細と、IBM Watsonx を使用してモデルをトレーニングする方法については、インテグレーション・ガイドをご覧ください。

IBM WatsonxでYOLO11のトレーニングを行うためのデータセットの前処理はどうすればよいですか?

IBM Watsonx で YOLO11 のトレーニングを行うためのデータセットの前処理を行います:

  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") 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でYOLO11モデルをトレーニングするための前提条件は何ですか?

IBM Watsonx で YOLO11 モデルのトレーニングを開始する前に、以下の前提条件が揃っていることを確認してください:

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

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

📅作成 3ヶ月前 ✏️更新しました 1ヶ月前

コメント