ホームへ戻る

GitHub Repo

Transformersコミュニティが動画のフレーム抽出の不具合を報告、均等サンプリング関数が範囲外のインデックスを返す可能性

10月8日のTransformers開発版での再現により、均等フレーム抽出関数が指定数を超えるインデックスを返し、存在しないフレーム位置を含む可能性が示されました。モデルをダウンロードせずに事例を確認できますが、正式リリースや各モデルプロセッサへの影響範囲はまだ不明です。

Andrew Wippler from Lancaster, USA · CC BY 2.0 · Image source
zh-Hant

Hugging Face Transformersコミュニティは10月8日、動画の前処理に関する問題を報告しました。get_uniform_frame_indicesは、総フレーム数とサンプリング数を指定すると、返すインデックスの数が合わず、範囲外の値を含む場合があります。報告では、Linux、Python 3.12.3、NumPy 2.5.3、およびメインブランチのコミットcb33194にあるTransformers 5.19.0.dev0を使用し、モデルの重みや実際の動画を必要としない最小限の再現例を示しています。問題報告

具体例では、total_num_framesを17、num_framesを7に設定していますが、関数は8個の位置[0, 2, 4, 7, 9, 12, 14, 17]を返します。インデックスが0から始まる17フレームの動画では、有効な範囲は0から16までで、最後の17は範囲外です。この例はサンプリング結果の不整合を直接示していますが、動画のデコードからモデル推論までを通したエンドツーエンドの失敗は実証していません。再現コードと出力

フレーム抽出によって、動画モデルが実際に処理する画面が決まります。公式ドキュメントでは、num_framesやfpsなどのサンプリングパラメーターを指定でき、return_metadata=Trueを使うと、サンプリングされたインデックス、元のサイズ、動画の長さ、フレームレートを取得できます。そのため、モデルに入力する前にインデックスの範囲を確認し、前処理と推論結果の違いを調べられるよう、サンプリング情報を保存しておくことが実務上有用です。動画プロセッサーのドキュメント

この報告を評価する際は、低レベル関数の動作とモデル固有のサンプリング規則を区別する必要があります。公式ドキュメントは、プロセッサーが最小または最大フレーム数の制限を適用する場合があるため、num_framesを指定しても、最終的なテンソルに同じ数の画面が含まれるとは限らないと明記しています。数が増えたというだけで、すべてのモデルに不具合があるとはいえません。本件でより具体的な異常なのは、低レベル関数が元の動画の範囲外の位置を返すことです。サンプリング動作の説明

下流の処理がこれらの位置でフレーム配列に直接アクセスする場合、範囲外の値によってアクセスに失敗する可能性があります。これは再現結果に基づく技術的な推測であり、報告で実運用上の事故が確認されたわけではありません。確認時点で、Issueはオープンのままで、メンテナーによる確認や関連する修正は示されていません。今後は、正式リリースでも再現するか、どのプロセッサーがこの関数を呼び出すか、そして動画の長さやサンプリング数の境界値を変えたテストが修正に含まれるかを追う必要があります。現在の対応状況

出典

  1. get_uniform_frame_indices can return too many or out-of-range frame indices — Issue #49410
  2. Transformers Video processor documentation