この記事は CyberAgent Developers Advent Calendar 2024 11日目の記事です。

こんにちは、ABEMAの上岡 将也(@kenkman621)です

はじめに

近年、生成AIの台頭により、映像をはじめとしたメディアデータを活用した機械学習アルゴリズムの開発・提供が急速に求められています。ABEMAにおいても、コンピュータビジョンなどの高度なAI技術を駆使した新たなサービス機能の実装スピードを上げ、お客様に価値ある機能を迅速に届けたいと考えています。

この際、エンジニアやデータサイエンティストは以下のような多岐にわたる問題に直面します。

  • 並列処理の実行
  • タイムコードやフレーム番号の管理・変換
  • フレーム分割・音声抽出・文字起こしなどの汎用的な処理
  • CPU/GPUリソースの確保
  • 映像ファイルおよび映像ストリーミング(HLSなど)の参照
  • 結果を保存し、可視化・編集するためのクラウド編集ツールとの連携

これらの煩雑な要素を気にすることなく、機械学習アルゴリズムの開発に集中できる基盤が求められていました。本記事では、そのような要件を満たすために私たちが開発した「MediaAnalyzer」という基盤システムについて紹介します。

 

MediaAnalyzerとは

MediaAnalyzerとは動画や音声、画像などあらゆるメディアデータに対して、非同期に解析処理可能な基盤システムです。主にAWS上に構築されており、AWS LambdaやAmazon EC2、AWS Fargate、Amazon DynamoDBなどを利用しています。

次の図は、Amazon S3 バケットに保存されているソースに対してMediaAnalyzerの解析処理を実行するプロセスを示しています。

 

実行プロセス

MediaAnalyzerは映像ファイルだけでなく、HLS(HTTP Live Streaming)にも対応しており、その場合も基本的には同様です。マニフェストファイルを解析して差分の有無をポーリングし、新規セグメントがあれば解析を行う処理を組み込むことで非同期解析を実現しています。

映像に対する分散処理

MediaAnalyzerは、映像ファイルおよびHLSソースに対する分散処理をサポートしています。それぞれの入力形態に応じた最適なパイプラインを定義することで、大量のフレーム解析や長時間のストリーミング映像に対するスケーラブルな処理を可能としています。

映像ファイルの場合

映像ファイルに対しては、フレーム分割・音声抽出・メタデータ取得などの処理を並列的に行います。これにより、長尺映像であっても効率的に解析を行うことができます。開発者はmapの内のtaskと必要であればcollectのみを実装するだけでよいです。

 

映像ファイルの場合

HLS

HLSでは、マニフェストファイルを定期的にチェックし、更新があれば対象セグメントのみを新たに解析するなど、ストリーミング特有の動的なコンテンツに適した処理フローを実現しています。またセグメントごとにフレームを分割するなどの処理も基盤システム側で行っています。

HLSの場合

開発プロセス

ここからは、MediaAnalyzer上で機械学習機能を開発する際のフローを紹介します。例として、顔検出機能を実装するプロセスを想定します。

タスクの実装

MediaAnalyzerではソースとなる映像データから音声ファイル、フレーム画像などに変換する処理を基盤側で行っています。タスクの実装者はそれらのソースファイルや変換されたデータを ArtifactStore というクラスを使って取得可能です。これにより、入力データや並列処理時のタスク入力の管理など、インフラ寄りのロジックを意識せず、純粋に機械学習アルゴリズムの実装に集中できます。また、モデルレジストリの概念が取り入れられており、モデルファイルの取得はS3パスなどを意識することなく、ModelStore経由で簡潔に行えます。

タスクの実行

イメージのビルド、プッシュ

MediaAnalyzerはPantsbuildをビルドシステムとして採用しています。pantsbuildのコマンドにより、依存ファイル込みでDockerイメージをビルド、プッシュ可能です。CIパイプラインと組み合わせることで、自動化・効率化も可能です。

イメージのビルド、プッシュ

ワークフローの定義、デプロイ

ワークフローはAWS Step Functionsを利用しています。基盤側で前処理・後処理を抽象化したテンプレート的なワークフローを用意しているため、利用者はそこに自身が実装したタスクを追加することで、容易に新たなワークフローを作成できます。

ワークフローの定義、デプロイ

ジョブの実行

最終的に、ワークフローを適用したいメディアデータを指定して解析ジョブを実行します。MediaAnalyzerは1つの入力に対して複数のワークフローを並行実行でき、様々な解析結果を得ることができます。

ジョブの実行

 

クラウド映像編集システム「VMC」とインテグレーション

私たちは、解析結果として得られたメタデータを確認・修正し、さらにクラウド上で動画編集が可能な「VMC」というシステムも開発・運用しています。
MediaAnalyzerで生成されたメタデータをVMC上ですぐに参照・編集できるため、機械学習モデルで得られた推論結果を現場のオペレーションに素早く組み込み、フィードバックを得ることが可能です。

下記は自動文字起こしとニュース記事生成を組み合わせたデモ動画の一例です。

おわりに

本記事では、MediaAnalyzerを活用して機械学習アルゴリズムを開発・提供する際の流れを紹介しました。より具体的な事例については先日のCyberAgent Developer Conference 2024でチームで登壇しているのでそちらをご覧ください。

ABEMA のコンテンツ制作を最適化!生成 AI x クラウド映像編集システム | CADC 2024

昨今の生成AIの進歩に伴い、メディアデータ解析とAI活用のニーズは爆発的に増加しています。私たちはこの需要を見据え、MediaAnalyzerやVMCを戦略的に開発してきました。

ABEMAでは、映像解析AI基盤や編集ツールの更なる発展を目指し、新卒・中途のメンバーを積極採用しています。興味をお持ちいただいた方は、ぜひカジュアル面談やTwitter(https://twitter.com/kenkman621)宛てにお気軽にご連絡ください。

また、インターンも募集しております。詳細は以下をご確認ください。
https://www.cyberagent.co.jp/careers/students/event/detail/id=28227

 

 

アバター画像
2019年新卒入社。ABEMAのコンテンツ制作、編集業務における課題に対し、コンピュータビジョン(主に動画解析)を活用したソリューションの責任者を務めたのち、クリエイティブ領域のデータ活用をPMとして推進。現在はDX・生成AI活用推進チームのマネージャーとして、デジタル技術とデータを活用し、ビジネス環境の変化へ俊敏に対応できるプロダクトを目指しています。