Amazon Web Services ブログ

AWS Elemental MediaLiveとAmazon Rekognitionでリプレイ映像をリアルタイムで作成する~ テニスでの活用例 ~

放送局では自動化による運用コスト削減のために、クラウドを利用するケースが増えています。例えば、スポーツのライブ中継では、リプレイ映像が利用されます。この作業は従来、編集者が手作業で行っていました。編集者はイベント全体を見て、注目すべきセグメントの開始(マークイン)と終了(マークアウト)のタイムスタンプにフラグを立てます。そして、これらのセグメントをつなぎ合わせて、様々な長さのリプレイを作成します。最新の機械学習(ML)技術を使えば、このような手間のかかる作業を人手を介さずに自動的に行うことができます。この記事ではテニスの試合を例に、AWS Elemental MediaLiveによるビデオストリーミングと、Amazon Rekognitionによるリアルタイムのリプレイ生成を紹介します。

AWS Elemental MediaLiveでのビデオインジェスト

AWS Elemental MediaLiveは様々なソースからブロードキャストやストリーミング配信用のライブ出力を作成できる、リアルタイムビデオサービスです。MediaLiveは、ライブとオンデマンドの両方のソースからのビデオコンテンツのインジェストとトランスコードをサポートしています。ライブビデオソースには、ストリーミングカメラやインターネットに直接接続されたオンプレミスのエンコーダーなどがあります。ビデオ・オン・デマンド(VOD)ソースの場合、コンテンツはAmazon Simple Storage Service(Amazon S3)のようなファイル/オブジェクトストレージに保存されているか、HTTP/HTTPS/RTMPエンドポイントを介してアクセス可能になります。この例では試合のビデオ(Amazon S3バケットに保存されたMP4ファイル)をAWS Elemental MediaLiveの入力ソースとして使用し開発とテストのためにライブストリームのソースを複製しています。

Architecture view for video ingestion.

MediaLiveはたくさんのアウトプットフォーマットをサポートしていますが、今回は、HTTP Live Streaming (HLS)をAmazon S3へのアウトプットとして利用します。

Set up for HLS files in MediaLive console

このHLS Amazon S3出力オプションを有効にすると、MediaLiveは入力ビデオを指定したサイズの複数のチャンク(今回は20秒を使用)に分割し、そのチャンクをTransport Streamファイル形式(.tsファイル)でAmazon S3に保存します。新しい.tsチャンクファイルが生成され、Amazon S3にアップロードされると、MediaLiveは新しいバージョンのマルチメディアプレイリストファイル(.m3u8ファイル)を作成します。これらのAmazon S3アップロードイベントは、新しいHLSビデオチャンクごとに非同期の独立した処理パイプラインを開始するために使用できます。処理パイプラインには、提供されたロジックに基づいて、セグメントが開始されたが完了しなかった場合に、連続するチャンクを評価する必要性を識別するアルゴリズムが適用されます。

Video chunks and manifest files stored in Amazon S3

.m3u8マニフェストファイルは、MediaLiveによりAmazon S3に保存された最新のメディアセグメント・チャンクに関する重要なメタデータが含まれます。例えば、チャンクのファイル名(Doubles_Match_1080p_1_00001.ts)とタイミング情報(EXT-X-PROGRAM-DATE-TIME:2021-03-18T00:00:21.600Z)などがあります。以下はマニフェストファイルのサンプルとなります。

Manifest file sample content, headers, and list of ts files

処理パイプラインでは、ビデオチャンクを特定するためにメタデータを利用します。特に重要なのは、ビデオチャンクのタイムコードを入力ビデオから取得することです。MediaLiveからはチャンクはゼロ基準のタイムスタンプ(00:00)で出力されるため、タイムコードメタデータは入力ビデオを正確に編集するために必須の情報です。

デフォルトでは、.m3u8 マニフェストファイルは、MediaLiveによりAmazon S3に保存されたメディアチャンクのタイミング情報(#EXT-X-PROGRAM-DATE-TIME)が含まれません。MediaLiveチャンネルを作成する際に、以下のように”Manifest and Segments”セクションのHLDアウトプットを設定する必要があります。

“Manifest and Segments” section in MediaLive console, showing segment length, num of segments, and other metadata.

リアルタイムリプレイセグメント生成

テニスの試合のテレビ中継では、通常ディレクターはサーブする選手をクローズアップし、サーブの後ラリーが終わるまでは広角の映像(ラリービュー)に切り替えます。また、スコアの後には選手の反応を示すために、別のクローズアップ映像が挿入されます。これらの観察結果に基づいて、私たちはMLベースのアルゴリズムを設計し、ビデオフレーム画像を異なるシーンに分類し、シーンの変化に基づいて、各テニスラリーの開始と終了の時間を見つけました。そして各ラリーの映像からセグメントを抽出します。

我々のリプレイ生成ソリューションの最初のステップは、フレーム画像に対して文脈的な分類を行うことができるMLモデルをトレーニングすることです。Amazon Rekognition Custom Labelsを利用すれば、MLの専門知識を必要とせずに、独自のシーンクラスを定義し深層学習技術を使って画像分類モデルを訓練することができます。ビデオからフレーム画像を抽出し、トレーニングデータセットのラベリングジョブを作成し、Amazon Rekognition Custom Labelsトレーニングプロジェクトをセットアップするまでのエンドツーエンドのパイプラインを作成する手順についてはこの記事を参照してください。

次がトレーニングデータセットの例です。75枚の画像を3つのクラスに分けて利用しています。

Examples of training dataset and annotation labels attached to the images

クローズアップビューとラリービュークラスに加え、ゲームプレイの間で良く使われるオーディエンススタジアムクラスを作成しました。

Examples of training dataset in Audience-Stadium class

モデルをトレーニング後、テニスのビデオのフレーム画像にモデルを定期用紙、各フレームのクラスを特定します。下のグラフは試合の中のフレームクラスの遷移の例です。次に、ルールベースのセグメンテーションアルゴリズムをデザインし、2つのクローズアップシーン間のラリーセグメントをを特定し、各セグメントの開始と終了の時間を取得しました。

An example of frame image classes along a game timeline, showing the beginning and ending of rally segments

最適なセグメント編集マーカーを特定するために、ワークフローにセグメント化のさらなる最適化を加えます。例えば、無音検出モジュールは、ビデオチャンク内の音声を分析し、音声の音量がユーザー設定可能なノイズ許容値よりも小さくなっているすべてのタイムスタンプを検出します。このタイムスタンプを利用して、アナウンサーが話している最中の突然のセグメント変更を防ぎます。シーンチェンジ検出モジュールは、ビデオチャンク内でシーンチェンジが起こるたびに検出します。例えば、ビデオのあるフレームが前のフレームと、ユーザーが設定可能な閾値以上の差がある場合などです。これにより、各セグメントの最初と最後のフレームフリッカーを避けることができます。スコア検出モジュールは、Amazon Rekognitionのテキスト検出機能を利用して、試合のスコアボードからスコアと選手の情報を抽出します。検出されたスコアは生成されたセグメントのラベルとして使用できます。

AWS Step Functionsによる非同期処理パイプライン

MediaLiveが入力ビデオを短時間のビデオピース(チャンク)としてAmazon S3に保存する際に、AWS Step Functionsを使ってイベントドリブンな非同期処理パイプラインを実装しています。MediaLiveによって新しいチャンクがAmazon S3に保存されるたびに、複数のAWS Lambda関数で構成される処理パイプラインが起動します。これらの関数は、AIベースのセグメント生成に関連する様々なタスクを実行するために、逐次または並行して実装されます。これにより、ユースケースに応じたカスタムコードの構築、テスト、共有、デプロイを容易に行うことができるプラグアンドプレイのアーキテクチャを実現しています。チャンクの処理は非同期的に行われ、複数のチャンクを並行して処理することができます。

処理の流れは、パイプライン内のすべてのLambda関数が入力ペイロードを取得し、必要な分析を行い、入力ペイロードを分析結果でエンリッチし、エンリッチされたペイロードをステップ関数に戻すように設計されています。このエンリッチされたペイロードは、パイプラインの次のLambda関数の入力として渡されます。複数のLambda関数で入力ペイロードと出力ペイロードを共有することで、各関数はパイプラインの各ステップでデータベース(Amazon DynamoDB)に問い合わせをする代わりに、入力ビデオに関するすべての必要なメタデータ(ビデオのフレームレート、コーデックなど)にローカルで素早くアクセスすることができます。

Architecture of the processing pipeline

MediaLiveが出力する新しいチャンクごとに、パイプラインは「コンテキスト解析/分類」「無音検出」「シーン検出」「スコア検出」を、それぞれ異なるLambda関数を使って並列に実行します。すべての関数が完了すると、前のすべての関数から収集された強化された出力で、セグメント生成関数が呼び出されます。Segment Generation Lambda関数は、Silence DetectionとScene Detectionの出力を使って、Contextual Analysis/Classificationプロセスで出力されたオリジナルの編集配置のタイムスタンプを最適化します。

オリジナルの編集配置タイムスタンプと最適化された編集配置タイムスタンプの両方が特定されると、それらはクリップ生成ラムダへの入力となり、AWS Elemental MediaConvertを使用してプレビュークリップを生成します。MediaConvertは、放送やマルチスクリーン配信のための、拡張性の高いビデオトランスコーディングサービスです。今回のユースケースでは、MediaLiveがAmazon S3に保存したオリジナルの高品質HLSビデオチャンクから、オリジナルと最適化された編集配置の両方のタイムスタンプの軽量プレビュークリップをMediaConvertで生成します。その後、トランスコードされたクリップをUIのセグメントのプレビューとして表示し、AIによって達成されたセグメンテーションを示します。以下は、23秒のラリーシーンから生成された最終クリップの一例です。

An example of final clip generated for a 23-seconds rally play

結論

このブログ記事ではAWS Elemental MediaLiveを介してビデオをインジェストし、機会学習(ML)を活用し自動リプレイ生成ソリューションを設計する方法を紹介しました。コンテキスト分類モデルは芝コートでトレーニングしましたが、他のコートサーフェスタイプ(クレーコートやハードコート)でのテストでも有望な結果が得られました。MLベースのシーン検出により、このソリューションは卓球、バドミントン、スヌーカーなどの他のスポーツにも適用できると考えます。現在、より一般的なAIセグメンテーションソリューションをモジュール式のプラグアンドプレイ・アーキテクチャで開発中であり今後紹介していく予定です。


参考リンク

AWS Media Services
AWS Media & Entertainment Blog (日本語)
AWS Media & Entertainment Blog (英語)

AWSのメディアチームの問い合わせ先: awsmedia@amazon.co.jp
※ 毎月のメルマガをはじめました。最新のニュースやイベント情報を発信していきます。購読希望は上記宛先にご連絡ください。

翻訳は BD山口が担当しました。原文はこちらをご覧ください。