Azure AI Vision Video Retrieval でサッカーの試合のお気に入りシーンを取得する

2023/12/05に公開

Microsoft Top Partner Engineer's Advent Calender 2023ということで、非エンジニアながら記事掲載の機会を頂きました!他の Calender 記事はここ

OpenAI DevDay, Microsoft Ignite と11月はすごい発表が立て続けにあり、書きたい内容は沢山ありますが、個人的な注目である Azure AI Vision Video Retrieval を試し、マルチモーダルの世界を体感したいと思います。今回の内容はビジネスの方でも試せる内容なので、(筆者は営業です)マルチモーダルを体験したい方・サッカー好きな方はぜひ最後までご覧ください!

ついにきた、ビデオ検索の世界:Azure AI Vision Video Retrieval

Azure AI Vision Video Retrievalを使うと、指定したビデオコンテンツを基にAIが回答を生成することができるようになります。大規模言語モデル(LLM)に外部データを参照させることで、より正確な回答を生成するRAG(Retrieval-Augmented Generation)という手法が昨今メジャーですが、新たに動画・ビデオコンテンツを Retrieval として渡せるようになったイメージです。
公式ブログ:Video Retrieval: GPT-4 Turbo with Vision Integrates with Azure to Redefine Video Understanding

RAGに必要な面倒な処理も行ってくれるのが、Video Retrieval の素晴らしいところで、前処理ほぼなし・動画アップロードのみで、エンジニアスキルがなくてもビデオ参照AIが完成できてしまいます!AIの民主化ですね。

数千時間のビデオコンテンツを容易に検索できる世界がきたとしたら...例えばテレビ番組のシーン検索やCM検索、監視カメラへの応用など色々と使い道がありそうです。
僕はサッカーが好きなので、【いつの試合か忘れたけど印象的だったゴール】を検索できるといいなー思ったので、試してみました。

サンプルやってみた

Azure AI Vision は Vision Studio というGUI上で(Azure OpenAI Service の Chat Playgroundに近い)プレビューとなっており、Azure 環境を手に入れさえすれば、ここから誰でも試すことができます。下記はサンプルデータとして用意されているスーパーの店内映像です。


サンプル動画が既に入っているので、すぐに試せる

スーパーのサンプル動画は全部で13分あるのですが、コーヒーがこぼれている時間が1分ほどあります。"Coffee on the floor"と検索プロンプトを入力すると、何分何秒のフレーム単位でコーヒーがこぼれているかをAIが教えてくれます。


明らかに確信犯でうける

また、動画の中で起きたことを要約する機能もあります。左下に、スーパー内で起きたイベントをAIがまとめてくれているのがお分かりかと思います。

これだけでも監視カメラを見ている店員さんとかが喜びそう。

サッカーの試合をアップロードしてみた

今度はもう少し長いかつ複雑なサッカーの試合のデータを読み込ませてみましょう。Vision Studio のGUI上では、300KBの動画までしかアップロードできないようなので、サッカーの試合動画はAzureストレージに格納して、AI Vision に読み込ませます。行った操作は以下。

  1. Azure ストレージアカウントを作って、サッカーの試合動画をアップロードする
  2. Vision Studio に戻ってアップロードしたコンテナを指定する
  3. Vision Studio がインデクシングしてくれるのを待つ
  4. 検索!

今回アップロードしたのは FIFA公式Youtube チャンネルに挙がっている過去のワールドカップの90分のフルの試合動画です。この中から5つの名試合を選択してアップロードします。

2010 ドイツ vs スペイン
2014 スペイン vs オランダ
2014 ブラジル vs ドイツ
2018 ポルトガル vs スペイン
2018 ベルギー vs 日本
FIFAの利用規約に基づき、コンテンツの利用を行っております。商用利用や配信等は一切行っておりません。

1を完了した後、Vision Studio でサブスクリプションアカウント・ストレージアカウントなどを指定します。

すると、このような形でインデクシングがはじまります。

90分×5 のファイルサイズの大きい素材にも関わらず、驚くことに 10分前後でインデクシングが完了しました。本来ビデオを格納するインデックス作成を行う前には、デコード・事前処理・フレーム選択などとても複雑な処理をする必要があります。これをほぼワンクリックで行えるようになったことに、Video Retrieval の革新性がある気がします!

早速試していきます。なお、サンプルにあった「ビデオの要約」機能はGUIから消えており、自分のアップロードしたデータについてはシーン検索のみが有効となっているようです。

まずは自分が一番印象に残っている "Cristiano Ronaldo Freekick Goal"と検索しました... すると 2018年のスペイン戦の本当にフリーキックのドンピシャのタイミングのフレームを出してくれました!

ゴールが決まってリプレイのタイミングのフレームが指定されました

ちなみに検索結果で表示された5つのシーンのうち、上2つが正しいフリーキックのシーン、後段の3つはロナウドが PK でゴールを決めたシーンが表示されました。AIが自信をもっている順に上からシーンが表示されているのかな? 下3つについては"Goal"で検索が引っかかったのだと予想しています。

データの前処理は全く行っていない状態にしてはとても良い結果だと思っています。

次は"Spain Goal" と検索したのですが、これは難しかったです。具体的には下記の様子です。

  • データセットに"スペインのゴール"が存在する試合は全部で3つあるが、1試合のみピックしている
  • スペインのゴール(得点)ではなく、スペインのゴール(物理的なゴールネットが登場しているシーン)を拾っている

    スペインのあわや失点シーンを拾ってきてしまいました。カシージャス懐かしい

ここで "Spain Scores" とプロンプトを変えると、精度が上がりました。ドイツ戦、ポルトガル戦のシーンを見事に拾ってきました。(オランダ戦は拾えずでした)

無敵艦隊時代のプジョルのヘディング!

その他気づき

これ以上は長くなってしまうので、検索プロンプトの具体例と共に発見をまとめると

  • "カウンターのシーン" "オフサイド" などサッカーの概念として抽象度が高く、フレーム単位では判断できない(静止画ではカウンターシーンか否かは人間の目でも判断がつかない)内容を切り取ることは難しかった。
  • 逆に"ファールシーン"や "イエローカード"は正確に取得できる。選手が倒れている・主審がイエローカードを持っている、など切り取ったフレーム単位で識別しやすい事象については精度が出やすいと予想しました。
  • "日本のストライカー" も同様に難しい。当たり前だが、予備知識ゼロの人間が選手の写真を見てもその選手が FWか、DFなのかは区別がつかない
  • 逆に"ゴールキーパー"はユニフォームに見た目上の特徴があるため、比較的高い精度で取得。


"Japan Striker"と検索して、出てきた長友氏。確かにストライカーっぽいけども

発展

手元でまだうまくいってないので、お見せできないのですが、公式ドキュメントには、データスキーマやインデックスを指定できるサンプルコードがあります。今回のケースで言うと例えば'Year'(何年のワールドカップか)などの要素やメタデータを加えると精度を更にあげることができそうです。

公式サンプルでは、カメラ映像のシナリオで、メタデータにカメラの識別子を振っています。下記はインデックス作成のコマンド例。

POST -v -X "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index:queryByText?api-version=2023-05-01-preview" -H "Ocp-Apim-Subscription-Key: <YOUR_SUBSCRIPTION_KEY>" -H "Content-Type: application/json" --data-ascii "
{
  'queryText': 'a man with black hoodie',
  'filters': {
    'stringFilters': [
      {
        'fieldName': 'cameraId',
        'values': [
          'camera1'
        ]
      }
    ],
    'featureFilters': ['vision']
  }
}"

また、カスタムで行う際には、Speech と Vision のクエリを使い分けることもできるみたいです。サッカーの例でいうと実況の音声を基に検索の幅を広げられそうですね。
Do video retrieval using vectorization (version 4.0 preview)

結び

いかがでしたでしょうか?AIの世界はモデルの組み合わせでユースケースがどんどん広がりそうですね!しかも、便利なツールが毎日にように生まれており、非エンジニアであってもマルチモーダルを体感できるほど敷居の低いものになっています。

ぜひ皆様も試してみてください!ではまた!

PS
マルチモーダルな世界感を感じられるおススメの Ignite セッションを貼っておきます。
https://www.youtube.com/watch?v=NXXgXFtC0sk&t=395s

Discussion