この記事では、独自の AI モデルを使用する Azure AI Video Indexer の概要について説明します。
はじめに
サードパーティ、分類、検出モデルなど、他のソースからの分析情報を組み合わせて、メディア データの詳細な分析を生成できます。 Microsoft が提供する 1 つ以上のモデル、外部カスタム モデル、または Azure Video Indexer によって提供されるカスタマイズされた人物、ブランド、音声、または言語モデルを使用できます。
この機能は、Arc で有効になっているVI でも使用できます。
注
免責事項: Microsoft の Azure OpenAI サービスの行動規範 は、お客様による Bring Your Own Model 機能の使用に適用されます。これには、コンプライアンス違反のためにこの機能へのアクセスと使用を中止する Microsoft の権利が含まれます。
価格
Video Indexer BYO モデルを使用すると、インデックス作成プロセスの一覧に記載されているコストを超える追加コストを発生させることなく、ビデオ分析情報オブジェクトにカスタム分析情報を追加できます。 ただし、外部環境とモデルに関連するコストは、Video Indexer の課金価格の一部と見なすべきではありません。 外部ロジックを最適化し、コストを削減するために、ベスト プラクティスセクションを確認することを強くお勧めします。
一般的なワークフロー
- Azure AI Video Indexer を使用してビデオがアップロードされ、インデックスが作成されます。
- インデックス作成プロセスが完了すると、イベントが作成されます。
- カスタム コードがイベントをリッスンし、ビデオの後処理プロセスを開始します。
前提条件
Azure AI Video Indexer で BYO モデル機能の使用を開始する前に、次の作業を行う必要があります。
- ビデオ資産を受け取り、分析情報を返す外部 AI モデルをトレーニングまたは持ち込みます。
- 次のカスタム コードを作成します。
- Event Hubs イベントを監視します。
- イベントから
video idを抽出します。 - VI API を呼び出して、関連する資産を取得します。 このシナリオでは、 Get Video Index と Get フレーム SAS URL を要求します。
- 外部 AI モデルに資産を送信します。
- カスタム AI モデルから取得した分析情報に基づいて JSON オブジェクトを作成します。
- Patch Update Video Index を要求します。
スキーマ
カスタム データを設定する値は次のとおりです。
| 名前 | 説明 | 必須 |
|---|---|---|
| 名前 | 外部 AI モデル名 | 本当 |
| displayName | Video Indexer に表示される分析情報グループ名 | 本当 |
| 表示タイプ | この特定の分析情報グループの UI 表現の種類を定義します。
既定値: カプセル 使用できる型: カプセル – 1 レベルのテキストのみ CapsuleAndTags - 2 レベルのテキストのみ。今後さらに追加される予定です。 |
偽り |
| 業績 | 外部 AI モデルによって検出された分析情報を表すオブジェクトの配列 | 本当 |
| results.id | 結果オブジェクトのユーザー指定 ID は、結果スコープ内で一意である必要があります | 本当 |
| 結果タイプ | このフィールドは、外部 AI モデルによって分類された分析情報の種類を表します。 これは、一般的な分析情報カテゴリを表すために使用されます。つまり、特定のフレームで識別されるこの種類の分析情報が複数存在する可能性があります。 分析情報の種類の例としては、 basketball、 crowd clapping、 white shirtなどがあります。 |
本当 |
| results.subType | このフィールドは、外部 AI モデルによって分類された分析情報の種類を表します。 特定の分析情報カテゴリを表すために使用されます。つまり、特定のフレームで識別されるこの種類の分析情報は 1 つだけです。 分析情報の種類の例としては、 basketball #23、 John clapping、 Dana’s white shirtなどがあります。 |
偽り |
| results.metaData | 分析情報に関するその他のデータ | 偽り |
| results.instances | 分析情報が検出された時間枠を表す配列。 | 本当 |
| 結果.インスタンス.信頼度 | 外部モデルから返される信頼度スコアを使用して設定します | 偽り |
| results.instances.start | ビデオ内のインスタンスの開始時刻。 形式: hh.mm.ss.ff |
偽り |
| 結果.インスタンス.終了 | ビデオ内のインスタンスの終了時刻。 形式: hh.mm.ss.ff |
偽り |
| 結果.インスタンス.調整開始 | UI に表示されるときに使用され、スタート画面の値で設定されます | 偽り |
| results.instances.adjustedEnd | UI に表示されるときに使用され、End の値で設定されます | 偽り |
framerate
Azure AI Video Indexer では、Basic/Standard ビデオ レベルでは 1 FPS、高度なレベルでは 4 FPS がサポートされます。 これより高いフレームレートはサポートされていません。 インデックス作成は次の方法で最適化できます。
- 検出されたサウンド、オブジェクト、または人物を含むフレームなど、関心のある特定のセグメントのみを処理する
- たとえば、5 秒ごとに低い FPS をサンプリングします。
フレームの選択
時間の選択には、スキップ フレームとページ サイズ パラメーターを使用できます。 数式は、フレームのスキップ値に FPS を乗算し、ページ サイズの値に FPS を乗算した値を使用して、時間範囲を決定します。
URL: https://api.videoindexer.ai/{location}/Accounts/{accountId}/Videos/{videoId}/FramesFilePaths[?urlsLifetimeSeconds][&pageSize][&skip][&accessToken]
パラメーター:
| 名前 | 説明 | 必須 |
|---|---|---|
| videoId | ビデオの ID | 本当 |
| urlsLifetimeSeconds | URL の有効期間 (秒単位) | 本当 |
| pageSize | 呼び出しごとに返されるフレームの最大数 | 偽り |
| スキップ | スキップするフレームの数 | 偽り |
| accessToken | URL クエリ文字列または Authorization ヘッダーでベアラー トークンとしてパラメーターとして指定する必要があります。 アクセス トークンのスコープはアカウント、アクセス許可は閲覧者にする必要があります。 | 本当 |
応答:FrameFilePathsResult
| 名前 | 説明 | 必須 |
|---|---|---|
| 業績 | FrameUriData の一覧 | いいえ |
| NextPage | ページング データ (skip、pageSize、isDone) | いいえ |
FrameFilePathData
| 名前 | 説明 |
|---|---|
| 名前 | フレーム ファイルの名前 |
| フレームインデックス | フレームのインデックス |
| StartTime | ビデオ内のフレームの開始時刻 |
| EndTime | ビデオ内のフレームの終了時刻 |
| filePath | クラウド環境のフレームの SAS URI またはエッジ環境のファイル パス |
スキーマ形式でカスタム アプリケーションから送信されるサンプル データ
"customInsights": [
{
"Name": "tattoo",
"displayName": "Tattoo’s model",
"displayType": "CapsuleAndTag",
"Results": [
{
"id": 1,
"Type": "Dragon",
"WikiDataId": "57F",
"SubType": "Leg tattoo",
"Metadata": "",
"Instances": [
{
"Confidence": 0.49,
"AdjustedStart": "0:00:32.72",
"AdjustedEnd": "0:00:42.72",
‾ "start": "0:00:32.72",
‾ "end": "0:00:42.72",
‾ }
‾ ]
‾ }
]
}...