コンテンツぞスキップ

IBM Watsonxを䜿ったYOLOv8 モデルのトレヌニングのステップ・バむ・ステップ・ガむド

今日、スケヌラブルなコンピュヌタヌ・ビゞョン・゜リュヌションは䞀般的になり぀぀あり、ビゞュアル・デヌタの扱い方を倉革しおいる。その奜䟋がIBM Watsonxで、AIモデルの開発、展開、管理を簡玠化する先進的なAIおよびデヌタ・プラットフォヌムだ。IBM Watsonxは、AIラむフサむクル党䜓のための完党なスむヌトず、IBMクラりド・サヌビスずのシヌムレスな統合を提䟛したす。

IBM Watsonx を䜿甚しおUltralytics YOLOv8 モデルをトレヌニングするこずができたす。IBM Watsonx は、効率的なモデル・トレヌニング、特定のタスクのための埮調敎、および堅牢なツヌルずナヌザヌ・フレンドリヌなセットアップによるモデル・パフォヌマンスの向䞊に関心のある䌁業にずっお、良い遞択肢です。このガむドでは、IBM Watsonx を䜿っおYOLOv8 をトレヌニングするプロセスを説明したす。環境のセットアップからトレヌニングしたモデルの評䟡たで、すべおを網矅したす。さっそく始めたしょう

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デヌタを簡単に共有できるオヌプン・デヌタ・フォヌマットをサポヌトする。

ワト゜ン゚ックス・ガバナンス

Watsonx.governanceは、芏制の倉曎を自動的に特定し、ポリシヌを実斜するこずで、コンプラむアンスを容易にしたす。芁件を瀟内のリスクデヌタにリンクし、最新のAIファクトシヌトを提䟛したす。このプラットフォヌムは、バむアスやドリフトなどの問題を怜出するためのアラヌトずツヌルでリスク管理を支揎したす。たた、AIラむフサむクルのモニタリングず文曞化を自動化し、モデルむンベントリでAI開発を敎理し、䜿いやすいダッシュボヌドずレポヌトツヌルでコラボレヌションを匷化したす。

IBM Watsonxを䜿ったYOLOv8 のトレヌニング方法

IBM Watsonx を䜿甚しお、YOLOv8 モデル・トレヌニングのワヌクフロヌを加速するこずができたす。

前提条件

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 むンストヌルガむドをご芧ください。YOLOv8 に必芁なパッケヌゞをむンストヌルする際に、䜕らかの問題が発生した堎合は、解決策やヒントに぀いお、よくある問題ガむドを参照しおください。

その埌、必芁なパッケヌゞをむンポヌトするこずができる。

関連ラむブラリのむンポヌト

# Import ultralytics
import ultralytics

ultralytics.checks()

# Import packages to retrieve and display image files

ステップ3デヌタのロヌド

このチュヌトリアルでは、Kaggle で公開されおいる海掋ごみのデヌタセットを䜿甚したす。このデヌタセットを䜿っお、YOLOv8 モデルをカスタムトレヌニングし、氎䞭画像内のゎミず生物孊的物䜓を怜出・分類したす。

デヌタセットを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YOLOv8 モデルの蚓緎

以䞋のコマンドラむン・コヌドを実行しお、事前に蚓緎されたデフォルトのYOLOv8 モデルを埮調敎する。

YOLOv8 モデルのトレヌニング

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

モデルトレヌニングコマンドのパラメヌタヌを詳しく芋おみよう

  • task: 指定されたYOLO モデルずデヌタセットを䜿甚するコンピュヌタビゞョンタスクを指定したす。
  • モヌド指定したモデルずデヌタをロヌドする目的を瀺す。我々はモデルをトレヌニングしおいるので、"train "に蚭定されおいる。埌でモデルの性胜をテストするずきは、"predict "に蚭定したす。
  • epochs:YOLOv8 がデヌタセット党䜓を通過する回数を区切りたす。
  • バッチ数倀はトレヌニングバッチサむズを芏定する。バッチずは、モデルがパラメヌタを曎新するたでに凊理する画像の数である。
  • lr0: モデルの初期孊習率を指定する。
  • プロットモデルのトレヌニングず評䟡のメトリクスのプロットを生成しお保存するよう、YOLO 。

モデルトレヌニングプロセスずベストプラクティスの詳现に぀いおは、YOLOv8 モデルトレヌニングガむドを参照しおください。このガむドは、実隓を最倧限に掻甚し、YOLOv8 を効果的に䜿甚するのに圹立ちたす。

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

これで掚論を実行し、埮調敎したモデルの性胜をテストするこずができる

YOLOv8 モデルのテスト

!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を蚈算するこずで、予枬粟床を枬定するこずができたす。詳しくはIBMのチュヌトリアル「trainingYOLOv8」をご芧ください。

抂芁

IBM Watsonx の䞻な機胜ず、IBM Watsonx を䜿甚しおYOLOv8 モデルをトレヌニングする方法に぀いお説明したした。たた、IBM Watsonxがモデル構築、デヌタ管理、およびコンプラむアンスのための高床なツヌルを䜿甚しお、AIワヌクフロヌをどのように匷化できるかを確認したした。

䜿甚方法の詳现に぀いおは、IBM Watsonx 公匏ドキュメントをご芧ください。

たた、Ultralytics の統合ガむドペヌゞで、さたざたな゚キサむティングな統合に぀いお詳しくご芧ください。

よくあるご質問

IBM Watsonx を䜿っおYOLOv8 モデルをトレヌニングするには

IBM Watsonx を䜿っおYOLOv8 モデルを蚓緎するには、以䞋の手順に埓う

  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のようなメトリクスを䜿っおそのパフォヌマンスを評䟡する。

詳しい手順に぀いおは、YOLOv8 モデル・トレヌニング・ガむドをご参照ください。

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 YOLOv8 モデルのトレヌニングに IBM Watsonx を䜿うべき理由は

IBM Watsonxは、AIのラむフサむクルを合理化する包括的なツヌル矀により、Ultralytics YOLOv8 モデルのトレヌニングに最適です。䞻な利点は以䞋の通り

  • スケヌラビリティIBM Cloud サヌビスでモデル・トレヌニングを簡単に拡匵できたす。
  • 統合様々なデヌタ゜ヌスやAPIずシヌムレスに統合。
  • ナヌザヌフレンドリヌなむンタヌフェヌス協調的で盎感的なむンタヌフェむスにより、開発プロセスを簡玠化したす。
  • 高床なツヌルPrompt Lab、Tuning Studio、Flows Engineなど、モデルのパフォヌマンスを向䞊させる匷力なツヌルを利甚できたす。

IBM Watsonx Ultralytics YOLOv8および IBM Watsonx を䜿甚しおモデルをトレヌニングする方法に぀いおは、むンテグレヌション・ガむドをご芧ください。

IBM Watsonx のYOLOv8 トレヌニング甚にデヌタセットを前凊理するには

IBM Watsonx のYOLOv8 トレヌニング甚にデヌタセットを前凊理する

  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 でYOLOv8 モデルをトレヌニングするための前提条件は䜕ですか

IBM Watsonx でYOLOv8 モデルのトレヌニングを開始する前に、以䞋の前提条件が揃っおいるこずを確認しおください

  • IBM Cloud アカりントWatsonx.ai にアクセスするには、IBM Cloud でアカりントを䜜成したす。
  • Kaggleアカりントデヌタセットを読み蟌むには、KaggleアカりントずAPIキヌが必芁です。
  • Jupyter NotebookWatsonx.ai 内に Jupyter Notebook 環境をセットアップし、コヌディングずモデル孊習を行う。

環境蚭定の詳现に぀いおは、Ultralytics むンストヌルガむドをご芧ください。


📅 Created 1 month ago ✏ Updated 10 days ago

コメント