YOLO Vision Shenzhen
深セン
今すぐ参加

インスタンスsegmentation向けにUltralytics YOLO26をカスタム学習する方法

Ultralytics YOLO26をインスタンスsegmentation向けにカスタムトレーニングする方法を学びましょう。このモデルは、ピクセルレベルのマスクを使用して個々のオブジェクトを識別し、分離します。

Ultralyticsでコンピュータービジョンプロジェクトをスケールアップ

始める

最近の技術進歩のおかげで、私たちの生活の中で静かでありながら影響力のある役割を果たす多くのスマートシステムがAIによって動かされています。例えば、車が赤信号を無視してカメラが自動的に違反を記録する場合や、自動品質検査システムが生産ラインで製造上の欠陥を発見する場合など、AIが舞台裏でその役割を担っています。

特に、コンピュータビジョンとして知られるAIの一分野は、機械が画像やビデオを解釈し理解することを可能にします。コンピュータビジョンは、システムがオブジェクトを認識し、動きをtrackし、視覚的詳細をリアルタイムで分析することを可能にし、交通監視、産業検査、ロボティクスなどのアプリケーションに不可欠なものとなっています。

これらの機能は、object detectionやinstance segmentationを含む様々なビジョンタスクをサポートするUltralytics YOLO26のようなコンピュータービジョンモデルによって実現されます。object detectionがシンプルなバウンディングボックスを使用してオブジェクトを識別するのに対し、instance segmentationはピクセルレベルで各オブジェクトの輪郭を抽出することでさらに踏み込み、実世界のシナリオでより正確で信頼性の高い結果を可能にします。

図1. YOLO26を用いて画像内の物体をsegment

YOLO26のようなモデルは事前学習済みであり、人、車、動物などの日常の物体をすぐにsegmentできます。しかし、より特定のアプリケーション向けには、カスタムトレーニングも可能です。つまり、モデルは物体がどのように見えるか、そしてそれらを正確に輪郭検出する方法を学習できます。

本記事では、インスタンスsegmentationのためにUltralytics YOLO26をカスタムトレーニングする方法を詳しく見ていきます。早速始めましょう!

インスタンスセグメンテーションとは?

モデルのトレーニングについて深く掘り下げる前に、一歩引いて、インスタンスセグメンテーションが実際に何を意味するのかを理解しましょう。

インスタンスセグメンテーションは、モデルが画像内の個々のオブジェクトを検出し、その正確な形状を輪郭で示すことを可能にするコンピュータービジョンのタスクです。オブジェクトが存在することだけを識別するのではなく、モデルは画像内のすべてのピクセルを調べ、それが特定のオブジェクトに属するかどうかを判断します。 

これは、物体が重なり合っている場合や非常に接近している場合でも、それらを分離できることを意味します。インスタンスセグメンテーションを視覚化しやすくする重要な概念はマスクです。 

マスクは、オブジェクトの領域のみを覆うピクセルレベルの輪郭です。それは、オブジェクトを蛍光ペンで塗りつぶし、他のすべてはそのままにしておくようなものだと考えることができます。 

各オブジェクトは独自のマスクを持ち、これによりモデルは、たとえ2台の車や隣り合って立つ2人の人物のように同じタイプであっても、オブジェクトを互いに区別できます。 

図2. インスタンスsegmentationの様子

インスタンスsegmentが何であるかをよりよく理解するために、他の一般的なコンピュータービジョンタスクと比較することができます。オブジェクトdetectはバウンディングボックスを使用します。これはオブジェクトの周りに描かれた単純な長方形です。バウンディングボックスは高速で有用ですが、オブジェクトの正確な形状を捉えることはできません。 

一方、セマンティックsegmentationは画像内のすべてのピクセルをカテゴリ別にラベル付けしますが、同じクラスの個別のオブジェクトを区別しません。インスタンスsegmentationは、オブジェクトカテゴリを識別し、各個別のオブジェクトに個別のマスクを割り当てることで、両方のアプローチの利点を組み合わせています。

インスタンスsegmentationは非常に詳細な情報を提供するため、自動品質検査、医療画像処理、ロボティクスなどの現実世界のアプリケーションで特に有用です。正確な測定、正確な境界、またはオブジェクトの分離を必要とするタスクは、このピクセルレベルの理解から恩恵を受けることができます。

Ultralytics YOLO26はインスタンスsegmentationをサポートします 

Ultralytics YOLO26は、エンドツーエンドでNMSフリーの最先端コンピュータービジョンモデルであり、実世界のビジョンタスクを迅速かつ効率的に処理するように設計されています。これはUltralytics YOLO detectモデルファミリーに属し、画像やビデオをリアルタイムで処理しながら、正確な結果を提供できます。 

YOLO26は、object detect、姿勢推定、画像分類、oriented bounding box detect (obb detect)、およびinstance segmentを含む、単一のフレームワーク内で複数のビジョンタスクをサポートしています。 

YOLO26は、すぐに使える状態で事前学習済みであり、COCO datasetやImageNet datasetのような大規模で広く使用されているデータセットから、人物、車両、日用品などの一般的なオブジェクトをすでに認識するように学習しています。追加のトレーニングなしで、すぐにモデルの使用を開始できます。

しかし、アプリケーションが独自のオブジェクト、特定の環境、または特殊な照明条件を含む場合、カスタムモデルのトレーニングによって結果を大幅に改善できます。YOLO26を独自のラベル付けされた画像でトレーニングすることで、特定のユースケースに合わせて、モデルに何をdetectすべきか、オブジェクトをより正確に輪郭抽出する方法を教えることができます。

このプロセスはファインチューニングとも呼ばれます。モデルをゼロからトレーニングする代わりに、ファインチューニングは事前学習済みのYOLO26モデルから開始し、独自のデータを使用して慎重に適合させます。モデルはすでにエッジ、形状、テクスチャなどの一般的な視覚パターンを理解しているため、特定のオブジェクトを学習するために必要なラベル付き画像ははるかに少なく、時間も大幅に短縮されます。

簡単に言えば、ファインチューニングは、モデルを一からトレーニングするよりも高速で、効率的で、より利用しやすい方法です。YOLO26のカスタムトレーニングは、初心者や限られたデータおよび計算リソースで作業するチームにとっても実用的な選択肢となります。

YOLO26インスタンスセグメンテーション応用例の検討

では、インスタンスセグメンテーションはどのような状況で効果を発揮するのでしょうか?特に物が混雑したり重なったりする場合に、物体を区別し、その正確な形状を理解することが重要な状況です。

インスタンスsegmentationが真の違いを生み出す一般的なワークフローをいくつかご紹介します。

  • 航空・ドローン画像処理: このタスクにより、ドローンは航空画像から建物、車両、植生などのオブジェクトを分離し、マッピング、検査、測量に活用できます。
  • スポーツ分析: インスタンスセグメンテーションは、試合中やトレーニングセッション中に個々のアスリートを背景から分離することで、選手の動きと相互作用の分析に役立ちます。
  • 建設・インフラ監視: 建物、橋梁、道路における構造要素、ひび割れ、損傷箇所を特定し、メンテナンス計画に役立てます。
  • ヘルスケアと医用画像: インスタンスセグメンテーションにより、細胞、組織、または医療ツールを正確に輪郭抽出することが可能になり、より正確な解析と診断をサポートします。
  • 農業および環境モニタリング: 作物、果物、または植物の病気を識別し分離できるため、収穫量の推定や標的型治療の適用が容易になります。
図3. YOLO26を用いた雑草のsegmentingの例 (出典)

インスタンスsegmentationのためのYOLO26カスタムトレーニングの仕組み

次に、カスタムトレーニングの仕組みについて説明します。モデルのトレーニングは技術的に聞こえるかもしれませんが、全体的なプロセスは簡単です。

画像を準備し、モデルに学習させたいオブジェクトにラベルを付け、小さな設定ファイルを構成し、その後、Ultralytics Pythonパッケージを使用してYOLO26をトレーニングできます。Ultralytics Pythonパッケージは、YOLOモデルのトレーニング、テスト、デプロイのためのすぐに使えるツールを提供するソフトウェアライブラリであり、すべてをゼロから構築する必要はありません。

ステップ1: カスタムデータセットを準備する

最初のステップは、カスタムのsegmentationデータセットを準備することです。データセットとは、モデルに学習させたいオブジェクトを示す画像の単なるコレクションです。 

異なる角度、照明、背景、物体サイズなど、実世界の条件を反映する画像を組み込むようにしてください。画像が多様であればあるほど、モデルのパフォーマンスは向上します。

インスタンスsegmentationの場合、画像にもアノテーションが必要です。アノテーションとは、モデルが何を学習すべきかを知るために、各画像内の物体にラベルを付けることです。単純なボックスを描く代わりに、各物体の正確な形状を示すために、詳細な輪郭(ポリゴン)を描きます。これらの輪郭が、モデルが予測することを学習するマスクになります。

これらのラベルを作成するために使用できるオープンソースのアノテーションツールがいくつかあります。これらのツールの多くは、画像をアップロードしてオブジェクトの輪郭を直接描画できる、ユーザーフレンドリーなインターフェースを提供しています。 

画像とアノテーションの準備が整ったら、それらをトレーニングフォルダと検証フォルダに整理できます。一般的な分割は、トレーニング用に画像の80%、検証用に20%ですが、データセットのサイズによっては、トレーニング用に70%、検証用に30%も一般的です。トレーニングセットはモデルを学習させ、検証セットはモデルがこれまで見たことのない画像に対してどれだけうまく機能するかを測定するために使用されます。

この分割をバランスよく保ち、両方のフォルダーに多様な例が含まれるようにすることが重要です。適切に分割されたトレーニングセットと検証セットを持つ、クリーンで適切にラベル付けされたデータセットは、強力なインスタmentationモデルの基盤を形成します。

ステップ2: データセットyamlファイルを作成する

画像とアノテーションを準備した後、次のステップはデータセットのyamlファイルを作成することです。このファイルは、データセットの場所と、トレーニング中にモデルが学習すべきオブジェクトクラスを示します。

このファイルでは、データセットのルートディレクトリ、トレーニング用および検証用画像フォルダへのパス、そしてクラス名リストを定義できます。クラス名は、アノテーションファイルで使用されているクラス番号と同じ順序でリストされている必要があり、これによりすべてが正しく一致します。

正確なフォーマットについてご不明な点がある場合は、詳細について公式のUltralyticsドキュメントを参照してください。 

ステップ3: Ultralytics pythonパッケージをインストールする

データセットとyamlファイルが準備できたところで、次のステップはUltralytics pythonパッケージをインストールすることです。 

このパッケージには、YOLO26モデルのトレーニング、検証、推論実行、エクスポートに必要なツールが含まれています。これにより、複雑なトレーニングパイプラインをゼロから構築することなく、YOLOモデルを効率的に操作できます。

Ultralytics pythonパッケージをインストールする前に、コードを実行する場所を選択することも重要です。Ultralyticsパッケージは、以下のようなさまざまな開発環境で利用できます。

  • コマンドラインインターフェース (CLI): これは、コマンドを入力してコンピューターと対話するテキストベースの環境です。グラフィカルインターフェースのようにボタンをクリックしたりメニューを操作したりする代わりに、書かれた指示を入力してプログラムを実行し、タスクを直接実行します。
  • Jupyter Notebooks: コードを小さなセクションで記述および実行し、すぐにその出力を確認できる対話型環境です。これは実験や学習に役立ちます。
  • Google Colab: ローカルインストールが不要で、オプションでGPUへのアクセスを提供するクラウドベースのノートブックプラットフォームです。これは初心者にとって最も簡単な選択肢となることがよくあります。

環境を選択したら、Ultralytics pythonパッケージをインストールできます。インストールするには、次のコマンドを実行してください。

pip install ultralytics

Google ColabやJupyter Notebookなどのノートブックベースの環境を使用している場合は、コマンドの先頭に感嘆符を追加してください。インストールに関する問題が発生した場合は、Ultralyticsドキュメントまたはトラブルシューティングガイドを参照して、一般的な修正方法や環境設定のヒントを確認できます。 

インストール後、事前学習済みのYOLO26セグメンテーションモデルをロードし、トレーニングを開始する準備が整います。

ステップ4: インスタンスsegmentのためにYOLO26をトレーニングする

トレーニングを開始する前に、モデルサイズを選択する必要があります。YOLO26モデルは、Nano (n)、Small (s)、Medium (m)、Large (l)、Extra Large (x) の異なるサイズで利用できます。 

小規模モデルは、中央処理装置 (CPU) やエッジデバイスでより速く学習し、より効率的に動作します。一方、大規模モデルは通常、より高い精度を提供しますが、より多くのメモリを必要とし、GPUアクセラレーションの恩恵を受けます。初めて利用する場合や、限られたハードウェアで作業している場合は、Nanoバージョン (YOLO26n) が実用的な選択肢となります。

モデルサイズを選択したら、次のステップは事前学習済みのsegmentationモデルをロードし、カスタムデータセットでトレーニングを開始することです。そのためには、以下に示すように、事前学習済みモデルファイル、データセットのyamlファイルへのパス、エポック数、および画像サイズを指定する必要があります。 

from ultralytics import YOLO

model = YOLO(""yolo26n-seg.pt")

results = model.train(data="path/to/file.yaml", epochs=100, imgsz=640)

エポック数は、モデルがtraining dataset全体を何回通過するかを決定します。各エポックで、モデルは予測を行い、正しいannotationsと比較し、誤差を計算し、内部パラメータを更新してパフォーマンスを向上させます。

学習が正常に開始されると、モデル構成、データセットのスキャン、および学習の進行状況がターミナルまたはノートブックに表示されます。学習が継続するにつれて、各エポック後に損失値と評価指標が更新され、モデルが時間とともにどのように改善されているかが示されます。

ステップ5: カスタムトレーニング済みモデルのパフォーマンスを評価する

トレーニングプロセスが完了した後、モデルのパフォーマンス指標を確認し、検証できます。Google Colabでは、「runs」フォルダ、次に「segment」フォルダ、最後に「train」フォルダに移動すると、主要なパフォーマンス指標を表示するログが見つかります。

python環境で作業しているユーザーの場合、トレーニング結果はデフォルトで現在の作業ディレクトリ内の「runs/train/」ディレクトリに保存されます。各トレーニング実行は、runs/train/exp や runs/train/exp2 のような新しいサブディレクトリを作成し、そこにその実験に関連するログ、保存された重み、その他の出力を見つけることができます。

CLIを使用している場合、「yolo settings」コマンドを使用してこれらの結果にアクセスし、管理できます。このコマンドを使用すると、学習ログと実験の詳細に関連するパスと構成を表示または変更できます。

保存された出力の中には、トレーニング中に生成されたグラフも含まれています。これらのグラフは、モデルが時間の経過とともにどのように改善されたかを示します。例えば、モデルが学習するにつれて損失がどのように減少し、エポック全体で精度、再現率、mAPなどの評価指標がどのように増加したかを示します。

図4. モデルを評価するために分析できるグラフの種類 (出典)

これらの視覚的な傾向は、モデルが正常にトレーニングされたかどうか、およびトレーニングの開始から終了までにどれだけ改善されたかを理解するのに役立ちます。数値メトリクスとグラフの両方をレビューすることで、新しい画像でのテストに進む前に、インスタンスsegmentationモデルがどの程度良好に機能しているかをより明確に把握できます。

ステップ6: モデルをテストし、推論を実行する

モデルを検証した後、最終ステップは新しい画像でテストすることです。このプロセスは推論と呼ばれ、トレーニング済みのモデルを使用して未見のデータに対して予測を行うことを意味します。

Pythonで推論を次のように実行できます。

results = model.predict("path/to/image.jpg", save=True, conf=0.3)

この例では、「path/to/image.jpg」をテストしたい画像へのパスに置き換えることができます。 

「save=True」の設定は、モデルが元の画像の上に予測されたセグメンテーションマスクが描画された新しい画像を生成し、保存するように指示します。 

「conf=0.3」の設定は信頼度しきい値を制御し、モデルが少なくとも30%の確信度で正しいと判断した予測のみを表示することを意味します。この値を下げるとより多くの detect が表示される可能性がありますが、上げるとモデルはより選択的になります。

コマンドを実行した後、モデルはrunsディレクトリ内に新しいフォルダを作成し、そこに出力画像を保存します。その保存された画像を開いて、セグメンテーションマスクがオブジェクトの境界にどれだけうまく追従しているか、そして重なり合うオブジェクトが正しく分離されているかを視覚的に確認できます。

さまざまな画像、背景、照明条件でモデルをテストすることで、トレーニングデータセット外でのパフォーマンスをより明確に理解できます。結果が一貫性があり正確に見えるようになれば、モデルはエクスポートおよびデプロイの準備が整います。

ステップ7: モデルをエクスポートしてデプロイする

モデルをテストし、良好に機能することを確認した後、最終ステップはそれをエクスポートしてデプロイすることです。エクスポートにより、トレーニング済みのYOLO26モデルは、プロダクションサーバー、エッジデバイス、モバイルアプリケーションなど、さまざまな環境で実行できる形式に変換されます。

Ultralyticsは複数のエクスポート形式をサポートしており、展開設定に最適なものを選択できます。例えば、プラットフォーム間での幅広い互換性のためにONNXに、NVIDIAハードウェアでの最適化されたGPUパフォーマンスのためにTensorRTに、またはIntelデバイスでの効率的なCPUベースの展開のためにOpenVINOにエクスポートできます。これらの統合により、トレーニング環境外でモデルを実行し、強力なリアルタイムパフォーマンスを得ることが容易になります。

以下のコマンドを使用して、Pythonでモデルをエクスポートできます。

model.export(format="onnx")

このコマンドは、トレーニング済みのモデルをONNX形式に変換します。デプロイメントの要件に応じて、「onnx」を他のサポートされている形式に置き換えることができます。

エクスポート後、モデルはウェブサービス、組み込みビジョンシステム、ロボットプラットフォーム、産業用検査システムなどのアプリケーションに統合できます。この段階で、カスタムトレーニングされたYOLO26インスタンスsegmentationモデルは、実験段階から実世界でのデプロイメントへと移行できます。

主なポイント

インスタンスsegmentationのためのUltralytics YOLO26のカスタムトレーニングにより、特定のユースケースに真に適合するモデルを柔軟に構築できます。明確なデータセットを準備し、yamlファイルをセットアップし、事前学習済みのsegmentation重みでトレーニングし、結果を確認することで、ピクセルレベルで各オブジェクトを正確に輪郭抽出するようにモデルを教えることができます。テストおよびエクスポートされた後、YOLO26モデルは開発からマルチスケールの実世界アプリケーションへと移行できます。

コミュニティに参加し、GitHubリポジトリをご覧になり、AIについてさらに深く探求してください。独自のビジョンAIプロジェクトを構築したい場合は、ライセンスオプションをご確認ください。ソリューションページにアクセスして、ヘルスケアにおけるAI小売業におけるビジョンAIなどのアプリケーションについて詳しくご覧ください。

共にAIの未来を築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。