おすすめの方法

このページでは、データの準備、モデルの評価、モデルの性能向上に関するベスト プラクティスについて説明します。

データの準備

  • トレーニングに使用するデータは、予測を行うデータにできる限り近いものにします。たとえば、低解像度のぼやけた動画(防犯カメラの映像など)で予測を行う場合は、トレーニング用のデータも低解像度のぼやけた動画にする必要があります。一般に、視点、解像度、背景が異なる動画をトレーニング用に準備することも検討する必要があります。
  • トレーニング データは、以下のような特定の最小要件を満たしている必要があります。

    • ラベルあたりの境界ボックスの最小数は 10 です。
    • ラベルは有効な文字列(カンマなし)である。
    • すべての動画フレームに有効なタイムスタンプが付いている。
    • CSV 内のすべての動画 URI が、アクセス可能な Cloud Storage バケットに保存されている。
  • トレーニング データとテストデータが多いほど、予測結果は向上し、モデルが強力であるほど、そのデータ消費量は増加します。

  • 良好なモデルのトレーニングに必要なデータ量は、以下のようなさまざまな要因によって異なります。

    • クラスの数。クラスの種類が多いほど、クラスあたりに必要なサンプル数も多くなります。

    • ラベルごとに約 100 個のトレーニング用動画のフレームが必要です。各フレームには、対象となるラベルのすべてのオブジェクトにラベルを付ける必要があります。

    • クラスの複雑さ、または多様性。ニューラル ネットワークでは、ネコと鳥をすばやく区別できますが、30 種類の鳥を正しく分類するには、さらに多くのサンプルが必要です。

    • 1,024 × 1,024 ピクセルを超える動画フレームの解像度の場合、フレームの正規化処理中に画質が低下する可能性があります。

  • 不均衡なデータでモデルをトレーニングすることは避けてください。 クラスあたりのサンプル数が同じになるとは限りませんが、 差が大きくなければそれほど問題ではありません。しかし、たとえば一部のクラスに属するサンプル数が他のクラスより 10 倍以上多いというような大きな不均衡がある場合、これは問題になります。

詳細については、データの準備をご覧ください。

データの分割

機械学習では通常、データセットを 3 つのサブセット(トレーニング データセット、検証データセット、テスト データセット)に分割します。モデルの構築にはトレーニング データセットが使用されます。モデルは複数のアルゴリズムとパラメータを試行してトレーニング データのパターンを探します。パターンを識別すると、検証データセットを使用してアルゴリズムとパターンをテストします。その後、トレーニング ステージで特定されたアルゴリズムとパターンの中から最も優良なものを選択します。

最適なアルゴリズムとパターンは、テスト データセットを使用してエラー率、品質、精度がテストされます。この際に、モデルの独立したテストに使用できるテスト データセットを別途用意する必要があります。

モデルのバイアスを避けるために、検証データセットとテスト データセットの両方が使用されます。検証ステージでは最適なモデル パラメータが使用されますが、その結果、指標に偏りが生じる可能性があります。検証ステージの後にテスト データセットを使用してモデルの品質を評価することにより、モデル品質を偏りなく評価できます。

データを分割するときは、以下のベスト プラクティスに従ってください。

  • すべてのデータセット(「データセット分割」とも呼ばれます)が同じ母集団を表し、ラベルが同じように分布した類似する動画を含むようにします。

    AutoML Video Object Tracking にデータを提供すると、それがトレーニング、検証、テスト用のデータセットに自動的に分割されます。トレーニング分割ラベルを自分で割り当てることもできます。 AutoML Video Object Tracking は、CSV ファイルからトレーニング、検証、テスト分割を生成する際に、動画レベルで動作します。1 つの動画のすべてのラベルは、3 つのうち 1 つのデータセットにのみ分類されます。多様な動画が存在する場合や、動画間でラベル分布が異なる場合、動画数を少なくすることは推奨されません。

    たとえば、アノテーション付きの動画セグメントを内部に数千個含む動画が 3 つだけあり、一部のクラスが特定の動画にのみ存在する場合は、そのラベルがトレーニングから除外される可能性があります。そうなると、予測時にそのラベルが考慮されないこともあります。

  • データ漏洩を避けます。データ漏洩は、モデルのトレーニング中にアルゴリズムが使用すべきでない情報を使用でき、かつその情報が後で予測を行うときには使用できない場合に起こります。この場合、トレーニング データセット、検証データセット、テスト データセットでは過度に楽観的な結果が生成される可能性があるため、将来の見えないデータの予測時には同様の結果は見込めないでしょう。

    漏洩の例としては、カメラの視野角や光条件(朝 / 夕方)に基づくバイアス、解説者がいる動画とそうでない動画に関するバイアス、ある種のラベルが特定の地域、言語集団、解説者の動画に関連付けられるバイアス、同じロゴを含む動画が選ばれるバイアスなどが挙げられます。

    データ漏洩を防ぐため、以下のことに留意してください。

    • 多様な動画と動画フレーム サンプルを用意します。
    • 動画をチェックし、隠れたヒントがないことを確認します(たとえば、陽性サンプルを含む動画は午後に撮影されたもので、陰性サンプルを含む動画は午前中に撮影されたものであった、など)。

詳細については、データの準備をご覧ください。

データソースの例

データソースの例については、以下の一般公開されている動画検出データセットをご覧ください。

  • YouTube-BB: Video Object Detection Data Set(560 万の境界ボックス、24 万本の動画、23 種類のオブジェクト)
  • ImageNet-VID: Imagenet Video Object Detection Challenge(30 の基本レベルカテゴリ)

モデルのトレーニング

必要に応じて、同じデータを使用して異なるモデルのトレーニングや異なる予測タイプの生成を行うことができます。 同様に、同じデータで同じモデルをトレーニングしても多少異なる結果になる場合もあります。 さらに、ニューラル ネットワーク モデルのトレーニングにはランダム化されたオペレーションが伴うため、同じ入力を用いてまったく同じモデルをトレーニングできるとは限らず、予測結果が若干異なるものになる可能性があります。

詳細については、モデルの管理をご覧ください。

モデルの評価

モデルのトレーニングが終了したら、検証データセットとテスト データセット、または独自の新しいデータセットを使用して性能を評価できます。

一般的なオブジェクト トラッキング評価のコンセプトと指標は、次のとおりです。

  • Intersection over union(IoU)は、通常はグラウンド トゥルースと予測の間にある 2 つの境界ボックス間の重複を測定します。これを使用すると、予測された境界ボックスがグラウンド トゥルースとどの程度重複しているかを測定できます。
  • 適合率 / 再現率曲線下面積(AuPRC)。「平均適合率」(AP)とも呼ばれます。これは再現率値の範囲にわたる適合率値の積分です。バイナリ問題に最も適した指標です。
  • 平均適合率の平均(mAP または MAP)は、複数のクラスまたはラベルにわたる平均適合率(AP)指標の平均とみなすことができます。 mAP と AP は同義で使用されることがあります。
  • バイナリ問題やマルチクラス問題の場合は、適合率と再現率をさまざまな信頼スコアしきい値で別々に調べることもできます。
  • マルチクラス ラベルがそれほど多くない場合は、どのラベルが欠けているかを示す混同行列を調べることができます。

動画オブジェクト トラッキングに関する問題によっては、すべての指標が使用できるとは限りません。たとえば、適合率と再現率は、オブジェクト トラッキングの問題においては直感的に把握できても、複数のクラスを対象とするケース(マルチクラス問題)や、サンプルごとに複数の有効なラベルを考慮するケース(マルチラベル問題)ではわかりにくくなります。特に後者の場合、広く受け入れられている単一の指標はありません。ただし、平均適合率を評価に使用できる場合があります。

ただし、モデルの性能を単一の数値または指標に基づいて評価することは、過度に単純化した処理であるといえます。各種指標に加えて、プロジェクトごとの適合率-再現率曲線のプロットを調べることを検討してください。

モデルを評価するときに役立つその他のヒントを以下に示します。

  • トレーニング データセットとテスト データセットのラベルの分布に注意してください。これらのデータセット間のバランスが取れていないと、指標の精度が高い場合に解釈を誤る可能性があります。デフォルトでは、評価中はすべてのサンプルが同じ重みを持つため、頻度の高いラベルの重みが高くなる可能性があります。たとえば、陽性ラベルが陰性よりも 10 倍多い場合は、ニューラル ネットワークがすべてのサンプルを陽性ラベルに割り当てただけでも 91% の精度を達成できますが、だからといってトレーニング済みモデルがそれだけ有効であるわけではありません。

  • たとえば scikit-learn を使用した Python スクリプトで、グラウンド トゥルース ラベルと予測ラベルの分析を試みることもできます。 そこでは、評価中にさまざまなラベル重み付け方法を調べることができます。一般的な方法には、マクロ平均化(クラスごとに指標を計算した後、平均化する)、加重(クラスごとに指標を計算した後、個々のクラスの頻度に応じた重みに基づいて平均化する)、ミクロ(潜在的な不均衡にかかわらず、各サンプルの重みを同じにする)などがあります。

  • モデルのデバッグは、モデル自体よりもデータを重点的にデバッグする作業です。本番環境への移行前や移行後の性能評価中にモデルが予期しない動作を見せ始めた場合は、いったん立ち戻ってデータを確認し、改善の余地がある箇所を探してください。

  • テスト用の動画には、シーンがいくつかカットされているケースがあり、その場合、コンテキストの関連付けがあまりない新しいシーンが表示されることがあります。たとえば、サッカーの試合のライブ配信では、カメラビューが真上からのビューからサイドビューに切り替わります。このようなシナリオでは、通常、モデルが変更に追いつくまでに 2~3 フレームかかります。

詳細については、モデルの評価をご覧ください。

モデルのテスト

AutoML Video Object Tracking では、データの 20%(データ分割を自分で行った場合は、選択したパーセンテージ)を自動的に使用して、モデルのテストを行います。

モデル性能の向上

モデルの初期性能が得られた後、引き続きモデルの性能を向上させる場合は、以下のようないくつかの方法を試すことができます。

  • ラベル付けされたサンプルの数を増やします(特に、比率の少ないクラスのサンプル)。
  • もっと意味のあるフレームにラベルを付けるようにします:
    • オブジェクトがない場所や単一のオブジェクトではなく、複数のオブジェクトが表示される場所にラベルを付けるフレームを選択します。
    • 移動するオブジェクトが多いフレームを選択します。これにより、トレーニング中にモデルが学習する時間に関する情報が増えます。
    • 選択したすべてのフレームに完全にラベルが付いていることを確認します。たとえば、車両検出モデルをトレーニングする場合は、フレーム内で視覚的に確認できるすべての車両にラベルを付ける必要があります。
    • 動画の冒頭でフレームを選択しないでください。このアルゴリズムでは、モーション コンテキストをキャプチャするトレーニングのために、早戻ししてフレームを取得できます。 選択したフレームの前にフレームがないまたは少ない場合、このような情報は失われる可能性があります。
  • モデルの性能が良くない箇所を詳しく調べます。

    • クラスの対象範囲が広すぎる可能性について考え、そのクラスを複数のクラスに分割すると有効か検討します。
    • クラスの対象範囲が狭すぎる場合は、プロジェクトの最終目標に影響を与えずに複数のクラスを統合できないか検討します。
    • 特に性能が悪いクラスについては、より多くのサンプルにラベルを付けることを検討します。
  • データの不均衡を減らします。特に、たとえば 1 対 100 を超えるような大きな不均衡がある場合は、サンプルの数を増やすか、頻度の高いクラスのサンプル数を減らします。

  • 潜在的なデータ漏洩がないか入念に確認し、その発生を回避します。

  • 少数の重要なクラスに集中するため、重要度の低いクラスを削除します。

  • その他の方法について確認するには、サポートページをご覧ください。