Ultralytics YOLO27:
Get Started

コンピュータービジョンプロジェクトの主な手順を理解する#

コンピュータービジョンプロジェクトの構築では、目標の定義、データの収集とアノテーション、モデルのトレーニングと評価、本番環境へのデプロイと保守という明確な段階を順に進めます。このガイドでは、各手順を順に説明し、その重要性を解説します。これにより、自信を持ってプロジェクトを計画し、実行できるようになります。

コンピュータービジョンは、コンピューターが人間のように世界を見て理解するための人工知能(AI)の一分野です。画像や動画を処理・分析し、情報の抽出、パターンの認識、データに基づく意思決定を行います。



視聴: コンピュータービジョンプロジェクトの進め方 | ステップごとのガイド

物体検出、画像分類、インスタンスセグメンテーションなどのコンピュータービジョン技術は、自動運転から医用画像まで、さまざまな業界で貴重な知見を得るために活用できます。

コンピュータービジョンプロジェクトの概要#

コンピュータービジョンプロジェクトの各手順の詳細を説明する前に、まず全体の流れを見てみましょう。今日コンピュータービジョンプロジェクトを始めるとしたら、次の手順を踏みます。

Computer Vision Project Steps Overview

必要な手順がわかったところで、さっそく各手順を詳しく見て、プロジェクトを前に進めましょう。

ステップ1:プロジェクトの目標を定義する#

あらゆるコンピュータービジョンプロジェクトの最初のステップは、解決しようとしている問題を明確に定義することです。最終目標を把握すれば、ソリューションの構築を始めやすくなります。これは、プロジェクトの目標が重点的に取り組むべきコンピュータービジョンタスクに直接影響するため、特に重要です。

プロジェクトの目標と、その達成に活用できるコンピュータービジョンタスクの例をいくつか紹介します。

  • 目標: 高速道路を走行するさまざまな種類の車両の流れを監視・管理し、交通管理と安全性を向上させるシステムを開発します。

    • コンピュータービジョンタスク: 物体検出は、複数の車両の位置を効率的に特定し、識別できるため、交通監視に最適です。このタスクでは不要な詳細まで提供する画像セグメンテーションより計算負荷が低く、高速なリアルタイム分析が可能です。
  • 目標: 医用画像スキャンで腫瘍の輪郭をピクセル単位で正確に示し、放射線科医を支援するツールを開発します。

    • コンピュータービジョンタスク: 画像セグメンテーションは、腫瘍のサイズ、形状、治療計画の評価に不可欠な、正確で詳細な腫瘍の境界を提供するため、医療画像に適しています。
  • 目的: さまざまな書類(請求書、領収書、法的書類など)を分類するデジタルシステムを構築し、組織の業務効率と書類検索を改善します。

    • コンピュータービジョンタスク: 画像分類は、画像内での書類の位置を考慮する必要がなく、一度に1つの書類を処理するため、この用途に最適です。この方法により、仕分けのプロセスを簡素化し、迅速化できます。

適切なモデルとトレーニング方法の選択#

プロジェクトの目的と適切なコンピュータービジョンタスクを理解したら、プロジェクトの目標を定義するうえで重要なのが、適切なモデルとトレーニング方法を選択することです。

目的に応じて、モデルを先に選択することも、ステップ2で収集できるデータを確認してから選択することもできます。たとえば、プロジェクトが特定の種類のデータの入手可能性に大きく左右される場合は、モデルを選ぶ前にデータを収集して分析するほうが実用的です。一方、モデルの要件が明確であれば、先にモデルを選択してから、その仕様に合ったデータを収集できます。

スクラッチからトレーニングするか、転移学習を利用するかによって、データの準備方法が変わります。スクラッチからトレーニングするには、モデルが基礎から知識を構築できるよう、多様なデータセットが必要です。一方、転移学習では、事前学習済みモデルを利用し、より小規模で特定の用途に特化したデータセットで適応させることができます。また、特定のモデルを選択してトレーニングすると、そのモデル固有の要件に応じて、画像のリサイズやアノテーションの追加など、データの準備方法が決まります。

Training From Scratch Vs. Using Transfer Learning

モデルを選択する際はデプロイも考慮してください

互換性とパフォーマンスを確保するために、モデルのデプロイ先を考慮してください。たとえば、軽量モデルはリソースに制約のあるデバイスでも効率的に動作するため、エッジコンピューティングに最適です。

詳しくは、プロジェクトの目標を定義し、適切なモデルを選択する方法に関するガイドをご覧ください。

コンピュータービジョンプロジェクトの実作業に取りかかる前に、これらの詳細を明確に理解しておくことが重要です。ステップ2に進む前に、次の項目を検討したかどうか確認してください。

  • 解決しようとしている問題を明確に定義します。
  • プロジェクトの最終目標を決定します。
  • 必要なコンピュータービジョンタスク(物体検出、画像分類、画像セグメンテーションなど)を特定します。
  • モデルをスクラッチからトレーニングするか、転移学習を利用するかを決定します。
  • タスクとデプロイのニーズに適したモデルを選択します。

ステップ2: データ収集とデータアノテーション#

コンピュータービジョンモデルの品質は、データセットの品質に左右されます。インターネットから画像を収集する、自分で写真を撮る、または既存のデータセットを利用できます。高品質なデータセットをダウンロードできる優れたリソースをいくつか紹介します。Google Dataset Search Engine、UC Irvine Machine Learning Repository、Kaggle Datasetsです。

Ultralyticsなどのライブラリでは、さまざまなデータセットが組み込みでサポートされているため、高品質なデータを使って簡単に作業を始められます。こうしたライブラリには、人気のデータセットをスムーズに利用するためのユーティリティが含まれていることが多く、プロジェクトの初期段階で多くの時間と労力を節約できます。

ただし、画像を収集する、または自分で写真を撮る場合は、データにアノテーションを付ける必要があります。データアノテーションとは、モデルに知識を与えるためにデータにラベルを付けるプロセスです。使用するデータアノテーションの種類は、具体的なコンピュータービジョン手法によって異なります。例をいくつか紹介します。

  • 画像分類: 画像全体に単一のクラスラベルを付けます。
  • 物体検出: 画像内の各物体を囲むバウンディングボックスを描画し、それぞれのボックスにラベルを付けます。
  • 画像セグメンテーション: 画像内の各ピクセルに、そのピクセルが属する物体に応じたラベルを付け、物体の境界を詳細に作成します。

Bounding box, polygon, and keypoint annotations

データ収集とアノテーションは、時間のかかる手作業になることがあります。専用のアノテーションツールを使えば、作業を迅速化できます。Ultralytics Platformには、検出、セグメンテーション、OBBデータに対応したSAMを活用したスマートアノテーション機能を備えたアノテーションエディターが組み込まれており、ラベルをYOLO形式で直接保存できます。

ステップ3: データ拡張とデータセットの分割#

画像データの収集とアノテーションが完了したら、データ拡張を行う前に、データセットをトレーニング、検証、テスト用に分割することが重要です。データ拡張の前にデータセットを分割することで、変更を加えていない元のデータを使ってモデルをテストおよび検証できます。これにより、モデルが未知の新しいデータにどの程度汎化するかを正確に評価できます。

データの分割方法は次のとおりです。

  • トレーニングセット: データのうち最も大きな部分で、通常は全体の70~80%を占め、モデルのトレーニングに使用します。
  • 検証セット: 通常はデータの約10~15%を占めます。トレーニング中のハイパーパラメーター調整とモデルの検証に使用し、過学習の防止に役立てます。
  • テストセット: 残りの10~15%のデータをテストセットとして確保します。トレーニング完了後、未知のデータに対するモデルのパフォーマンスを評価するために使用します。

データを分割した後、画像の回転、スケーリング、反転などの変換を適用して、データセットのサイズを人為的に増やすデータ拡張を実施できます。データ拡張によって、モデルはさまざまな変化に対してより堅牢になり、未知の画像に対するパフォーマンスが向上します。

Data augmentation examples

OpenCV、Albumentations、TensorFlowなどのライブラリには、柔軟な拡張関数が用意されています。また、Ultralyticsなどの一部のライブラリでは、モデルのトレーニング関数にデータ拡張の設定が組み込まれているため、プロセスを簡素化できます。

データをより深く理解するには、MatplotlibやSeabornなどのツールを使って画像を可視化し、その分布や特性を分析できます。データを可視化することで、パターンや異常、データ拡張手法の効果を特定しやすくなります。Ultralytics PlatformのChartsタブでは、アップロードされたすべてのデータセットについて、分割の分布、クラス数、画像サイズのヒストグラム、アノテーション位置のヒートマップを自動生成するため、コードを書かずにこれらのインサイトを数多く確認できます。

データを適切に理解、分割、拡張することで、実際のアプリケーションで優れた性能を発揮する、十分にトレーニング、検証、テストされたモデルを開発できます。

ステップ4: モデルのトレーニング#

データセットの準備が整ったら、必要な環境のセットアップ、データセットの管理、モデルのトレーニングに取り組みます。

まず、環境が正しく設定されていることを確認します。一般的には、次の作業が含まれます。

  • TensorFlow、PyTorch、Ultralyticsなどの必須ライブラリやフレームワークをインストールします。
  • GPUを使用する場合は、CUDAやcuDNNなどのライブラリをインストールすると、GPUアクセラレーションを有効にしてトレーニングを高速化できます。

次に、トレーニングデータセットと検証データセットを環境に読み込みます。リサイズ、形式変換、データ拡張を行って、データを正規化および前処理します。モデルを選択したら、レイヤーを設定し、ハイパーパラメーターを指定します。損失関数、オプティマイザー、パフォーマンス指標を設定してモデルをコンパイルします。

Ultralyticsなどのライブラリを使うと、トレーニングプロセスを簡素化できます。最小限のコードでデータをモデルに入力し、トレーニングを開始できます。これらのライブラリは、重みの調整、誤差逆伝播、検証を自動的に処理します。また、進捗を監視し、ハイパーパラメーターを簡単に調整するツールも用意されています。トレーニング後は、いくつかのコマンドでモデルと重みを保存できます。

効率的なトレーニングには、適切なデータセット管理が不可欠であることを覚えておいてください。データセットの変更を追跡し、再現性を確保するために、データセットにバージョン管理を使用します。DVC (Data Version Control)などのツールは、大規模なデータセットの管理に役立ちます。

ステップ5: モデルの評価とファインチューニング#

さまざまな指標を使ってモデルのパフォーマンスを評価し、精度を向上させるためにモデルを改善することが重要です。評価によって、モデルが優れている領域と改善が必要な領域を特定できます。ファインチューニングにより、最高のパフォーマンスが得られるようモデルを最適化できます。

  • パフォーマンス指標: 精度、適合率、再現率、F1スコアなどの指標を使って、モデルのパフォーマンスを評価します。これらの指標から、モデルの予測性能についてインサイトを得られます。
  • ハイパーパラメーターの調整: モデルのパフォーマンスを最適化するために、ハイパーパラメーターを調整します。グリッドサーチやランダムサーチなどの手法を使うと、最適なハイパーパラメーター値を見つけやすくなります。
  • ファインチューニング: モデルのパフォーマンスを高めるために、モデルアーキテクチャやトレーニングプロセスを少し調整します。学習率、バッチサイズ、その他のモデルパラメーターを微調整する場合があります。

モデルの評価とファインチューニング手法をさらに深く理解するには、モデル評価のインサイトガイドをご覧ください。

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

モデルのテストでは、まったく未知のデータに対するモデルの性能を確認し、デプロイの準備が整っていることを検証します。モデルのテストとモデルの評価の違いは、テストではモデルを繰り返し改善するのではなく、最終モデルの性能を確認することに重点を置く点です。

発生する可能性のある一般的な問題を十分にテストし、デバッグすることが重要です。トレーニングや検証で使用していない、独立したテストデータセットでモデルをテストします。このデータセットは、モデルの性能が一貫していて信頼できることを確認できるよう、実際のシナリオを反映したものにしてください。

また、過学習、未学習、データリークなどの一般的な問題にも対処します。交差検証や異常検知などの手法を使って、こうした問題を特定し、解決してください。包括的なテスト戦略については、モデルテストガイドをご覧ください。

ステップ7: モデルのデプロイ#

モデルを十分にテストしたら、デプロイに進みます。モデルのデプロイとは、本番環境でモデルを利用できるようにすることです。コンピュータービジョンモデルをデプロイする手順は次のとおりです。

  • 環境のセットアップ: クラウドベース(AWS、Google Cloud、Azure)またはエッジベース(ローカルデバイス、IoT)のいずれのデプロイ方法を選択する場合も、必要なインフラストラクチャを設定します。
  • モデルのエクスポート: デプロイプラットフォームとの互換性を確保するため、適切な形式(YOLO26の場合はONNX、TensorRT、CoreMLなど)にモデルをエクスポートします。
  • モデルのデプロイ: APIまたはエンドポイントを設定し、アプリケーションに統合してモデルをデプロイします。
  • スケーラビリティの確保: リソースを管理し、増加するデータやユーザーリクエストに対応するために、ロードバランサー、自動スケーリンググループ、監視ツールを導入します。

デプロイ戦略とベストプラクティスの詳細については、モデルデプロイのベストプラクティスガイドをご覧ください。Ultralytics Platformでは、世界42のリージョンで自動スケーリングに対応したマネージドデプロイエンドポイントも利用でき、インフラストラクチャのセットアップが自動的に処理されます。

ステップ8: 監視、メンテナンス、ドキュメント作成#

モデルをデプロイしたら、パフォーマンスを継続的に監視し、問題に対処できるようメンテナンスし、今後の参照や改善に備えてプロセス全体を文書化することが重要です。

監視ツールを使うと、主要業績評価指標(KPI)を追跡し、異常や精度の低下を検出できます。モデルを監視することで、入力データの変化によりモデルのパフォーマンスが時間とともに低下する、モデルドリフトを把握できます。精度と関連性を維持するために、更新されたデータを使ってモデルを定期的に再トレーニングしてください。

Model monitoring and maintenance lifecycle

監視とメンテナンスに加えて、ドキュメント作成も重要です。モデルアーキテクチャ、トレーニング手順、ハイパーパラメーター、データの前処理手順、デプロイやメンテナンス中に行った変更など、プロセス全体を詳細に文書化します。適切なドキュメントがあれば、再現性を確保でき、今後の更新やトラブルシューティングも容易になります。モデルのライフサイクルを通じて、モデルが正確で信頼性が高く、管理しやすい状態を維持できるよう、モデルを効果的に監視、メンテナンス、文書化してください。

コミュニティへの参加#

コンピュータービジョン愛好家のコミュニティとつながることで、コンピュータービジョンプロジェクトに取り組む際に直面する問題に、自信を持って対処できます。学習、トラブルシューティング、ネットワーキングを効果的に行う方法をいくつか紹介します。

コミュニティのリソース#

  • GitHub Issues: YOLO26 GitHubリポジトリを確認し、Issuesタブから質問、バグの報告、新機能の提案を行ってください。活発なコミュニティとメンテナーが、具体的な問題の解決を支援します。
  • Ultralytics Discordサーバー: Ultralytics Discordサーバーに参加して、他のユーザーや開発者と交流し、サポートを受けたり、知見を共有したりできます。

公式ドキュメント#

  • Ultralytics YOLO26ドキュメント: 公式YOLO26ドキュメントで、さまざまなコンピュータービジョンタスクやプロジェクトに役立つヒントを含む、詳細なガイドをご覧ください。

これらのリソースを活用すると、課題を克服し、コンピュータービジョンコミュニティの最新動向やベストプラクティスを把握できます。

次のステップ#

目標の定義からデプロイ済みモデルの監視まで、コンピュータービジョンプロジェクトのあらゆる段階を網羅したロードマップが整いました。最初のYOLOモデルをトレーニングして実践するか、上記のガイドを使って各段階をさらに深く掘り下げてください。コードを書かずにパイプライン全体を実行するには、Ultralytics Platformをご覧ください。

よくある質問#

  • 適切なコンピュータービジョンタスクは、プロジェクトの最終目標に応じて選択します。たとえば、交通状況を監視したい場合は、複数の種類の車両をリアルタイムで位置特定して識別できるため、物体検出が適しています。医療画像には、腫瘍の境界を詳細に示し、診断や治療計画に役立つ画像セグメンテーションが最適です。物体検出、インスタンスセグメンテーション、セマンティックセグメンテーション、画像分類などのタスクについて詳しくご覧ください。

  • データアノテーションは、モデルにパターンを認識させるために不可欠です。アノテーションの種類はタスクによって異なります。

    • 画像分類: 画像全体に単一のクラスラベルを付けます。
    • 物体検出: 物体を囲むバウンディングボックスを描画します。
    • 画像セグメンテーション: 各ピクセルに、そのピクセルが属する物体に応じたラベルを付けます。

    Ultralytics Platformに組み込まれたアノテーションエディターをこのプロセスに活用できます。詳しくは、データ収集とアノテーションのガイドをご覧ください。

  • データ拡張の前にデータセットを分割すると、変更を加えていない元のデータを使ってモデルのパフォーマンスを検証できます。次の手順に従ってください。

    • トレーニングセット: データの70~80%。
    • 検証セット: ハイパーパラメーター調整に使用するデータの10~15%。
    • テストセット: 最終評価用に確保する残りの10~15%。

    分割後、回転、スケーリング、反転などのデータ拡張手法を適用して、データセットの多様性を高めます。AlbumentationsやOpenCVなどのライブラリが役立ちます。Ultralyticsにも、利便性を高めるデータ拡張の設定が組み込まれています。

  • トレーニング済みモデルをexportメソッドでエクスポートし、デプロイ先に合った形式を選択します。UltralyticsはONNX、TensorRT、CoreMLなど、複数の形式をサポートしています。YOLO26モデルをエクスポートするには、次の手順に従ってください。

    • 目的の形式パラメーターを指定して、exportメソッドを使用します。
    • エクスポートしたモデルが、デプロイ環境(エッジデバイス、クラウドなど)の仕様に適合していることを確認します。

    詳細については、モデルのエクスポートガイドをご覧ください。

  • 継続的な監視とメンテナンスは、モデルの長期的な成功に不可欠です。主要業績評価指標(KPI)を追跡し、異常を検出するツールを導入します。モデルドリフトに対処するため、更新されたデータを使ってモデルを定期的に再トレーニングします。再現性を確保し、今後の更新を容易にするために、モデルアーキテクチャ、ハイパーパラメーター、変更内容など、プロセス全体を文書化します。詳しくは、監視とメンテナンスのガイドをご覧ください。

コメント