IBM WatsonxでYOLO11モデルをトレーニングするためのステップバイステップガイド
今日では、スケーラブルなコンピュータビジョンソリューションがより一般的になり、視覚データを扱う方法を変革しています。優れた例はIBM Watsonxです。これは、AIモデルの開発、デプロイメント、および管理を簡素化する高度なAIおよびデータプラットフォームです。AIライフサイクル全体の完全なスイートと、IBM Cloudサービスとのシームレスな統合を提供します。
IBM Watsonxを使用してUltralytics YOLO11モデルをトレーニングできます。これは、効率的なモデルトレーニング、特定のタスクに対する微調整、および堅牢なツールとユーザーフレンドリーなセットアップによるモデルパフォーマンスの向上に関心のある企業にとって良い選択肢です。このガイドでは、環境のセットアップからトレーニング済みモデルの評価まで、IBM WatsonxでYOLO11をトレーニングするプロセスについて説明します。それでは始めましょう!
IBM Watsonxとは何ですか?
Watsonx は、IBMの商用向けクラウドベースプラットフォームです。 生成AI そして、科学的データ。IBM Watsonxの3つのコンポーネント - watsonx.ai
, watsonx.data
、および watsonx.governance
- ビジネス上の問題を解決することを目的としたAIプロジェクトを加速できる、エンドツーエンドの信頼できるAIプラットフォームを構築するために連携します。構築、トレーニング、および 機械学習モデルのデプロイ さまざまなデータソースとの接続を容易にします。
IBM Watsonxは、ユーザーフレンドリーなインターフェースとコラボレーション機能により、開発プロセスを効率化し、効率的なモデル管理とデプロイを支援します。コンピュータビジョン、予測分析、自然言語処理、その他のAIアプリケーションなど、IBM Watsonxはイノベーションを推進するために必要なツールとサポートを提供します。
IBM Watsonxの主な機能
IBM Watsonxは、主に3つのコンポーネントで構成されています。 watsonx.ai
, watsonx.data
、および watsonx.governance
。各コンポーネントは、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を使用して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つのファイル/フォルダが表示されるはずです:a config.yaml
ファイル、a videos_for_testing
ディレクトリと、 dataset
ディレクトリ。ここでは、 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
そして、上記のコンテンツで置き換えて、新しいデータセットのディレクトリ構造を反映させます。4行目のルートディレクトリパスのwork_dir部分を、以前に取得した自分の作業ディレクトリパスに置き換えるようにしてください。train、val、testのサブディレクトリの定義はそのままにしてください。また、コードの23行目の{work_dir}は変更しないでください。
.yamlファイルの編集
# Contents of new config.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モデルとデータセットを使用するコンピュータビジョンタスクを指定します。
- mode:指定されたモデルとデータをロードする目的を示します。ここではモデルをトレーニングするため、"train"に設定されています。後でモデルのパフォーマンスをテストする際には、"predict"に設定します。
- エポック: これは、YOLO11がデータセット全体を通過する回数を区切ります。
- batch: 数値は、トレーニングのバッチサイズを規定します。バッチとは、モデルがパラメータを更新する前に処理する画像の数です。
- 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つのエポック後も、特定の信頼度レベルでまだ安定していません。
<a href="https://www.ultralytics.com/glossary/recall">再現率グラフ(R_curve.png)は、逆の傾向を示しています。
精度とは異なり、再現率は逆方向に移動し、信頼度の低いインスタンスでは再現率が高くなり、信頼度の高いインスタンスでは再現率が低くなります。これは、分類モデルにおける精度と再現率のトレードオフの良い例です。
ステップ 8: Intersection Over Union の計算
予測されたバウンディングボックスと、同じオブジェクトのグラウンドトゥルースのバウンディングボックスの間のIoUを計算することにより、予測の精度を測定できます。詳細については、IBMのYOLO11トレーニングに関するチュートリアルをご覧ください。
概要
IBM Watsonxの主要な機能と、IBM Watsonxを使用してYOLO11モデルをトレーニングする方法について説明しました。また、IBM Watsonxがモデル構築、データ管理、コンプライアンスのための高度なツールでAIワークフローをどのように強化できるかについても説明しました。
使用方法の詳細については、IBM Watsonxの公式ドキュメントをご覧ください。
また、さまざまなエキサイティングな統合について詳しく知るには、Ultralytics統合ガイドページをご覧ください。
よくある質問
IBM Watsonxを使用してYOLO11モデルをトレーニングするにはどうすればよいですか?
IBM Watsonxを使用してYOLO11モデルをトレーニングするには、次の手順に従います。
- 環境をセットアップ: IBM Cloud アカウントを作成し、Watsonx.ai プロジェクトをセットアップします。コーディング環境には Jupyter Notebook を使用します。
- ライブラリのインストール: 必要なライブラリ(例:
torch
,opencv
、およびultralytics
. - データのロード: Kaggle APIを使用して、データセットをWatsonxにロードします。
- データの前処理: データセットを必要なディレクトリ構造に整理し、を更新
.yaml
構成ファイル。 - モデルの学習:YOLOコマンドラインインターフェースを使用して、次のような特定のパラメータでモデルをトレーニングします。
epochs
,batch size
、およびlearning rate
. - Test and Evaluate: 推論を実行してモデルをテストし、精度や再現率などの指標を使用してパフォーマンスを評価します。
詳細な手順については、YOLO11モデルのトレーニングガイドを参照してください。
AIモデルのトレーニングのためのIBM Watsonxの主な機能は何ですか?
IBM Watsonxは、AIモデルのトレーニングにいくつかの重要な機能を提供します。
- Watsonx.ai: IBMがサポートするカスタムモデルやLlama 3などのサードパーティモデルへのアクセスなど、AI開発用のツールを提供します。Prompt Lab、Tuning Studio、Flows Engineが含まれており、包括的なAIライフサイクル管理が可能です。
- 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トレーニング用にデータセットを前処理するには:
- ディレクトリの整理: データセットが、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でYOLO11モデルをトレーニングするための前提条件は何ですか?
IBM WatsonxでYOLO11モデルのトレーニングを開始する前に、以下の前提条件を満たしていることを確認してください。
- IBM Cloudアカウント: IBM Cloudでアカウントを作成して、Watsonx.aiにアクセスします。
- Kaggleアカウント:データセットをロードするには、KaggleアカウントとAPIキーが必要です。
- Jupyter Notebook:コーディングとモデルのトレーニングのために、Watsonx.ai内にJupyter Notebook環境をセットアップします。
環境構築の詳細については、Ultralyticsインストールガイドをご覧ください。