

# 視覚理解のプロンプトのベストプラクティス
<a name="prompting-video-understanding"></a>

**注記**  
このドキュメントは Amazon Nova バージョン 1 を対象としています。Amazon Nova 2 でマルチモーダルの理解のプロンプトを行う方法については、「[マルチモーダル入力のプロンプト（Prompting multimodal inputs）](https://docs.aws.amazon.com/nova/latest/nova2-userguide/prompting-multimodal.html)」を参照してください。

Amazon Nova モデルファミリーには、モデルが画像や動画を理解して分析できるようにする新しい視覚機能が搭載されているため、マルチモーダルインタラクションのエキサイティングな機会を実現することができます。次のセクションでは、Amazon Nova で画像および動画を操作するためのガイドラインの概要について説明します。検討をお勧めするベストプラクティス、コード例、関連する制限事項が含まれます。

提供する画像や動画の品質が高くなればなるほど、モデルがメディアファイル内の情報を正確に理解する可能性が高くなります。確実に正確な結果を得るには、画像や動画が明確で余分なぼやけやピクセル化がないことを確認してください。画像や動画フレームに重要なテキスト情報が含まれている場合、テキストが読みやすくて小さすぎないことを確認してください。テキスト拡大のみのために、主要なビジュアルコンテキストをトリミングすることは避けてください。

Amazon Nova モデルでは、ペイロードに 1 つの動画を含めることができます。base64 形式または Amazon S3 URI を介して提供できます。base64 メソッドを使用する際、全体的なペイロードサイズは 25 MB 未満である必要があります。ただし、画像、動画、文書の理解には Amazon S3 URI を指定できます。Amazon S3 を使用すると、ペイロード全体のサイズ制限に制約されることなく、より大きなファイルや複数のメディアファイルに対してモデルを活用できます。Amazon Nova は、指定された指示に基づいて入力動画を分析して質問に回答、動画の分類、動画の情報の要約ができます。

Amazon Nova モデルを使用すると、ペイロードに複数の画像を含めることができます。ペイロードサイズの合計は 25 MB を超えることはできません。Amazon Nova モデルは、指定された指示に基づいて渡された画像を分析して質問に回答、画像の分類、画像の要約ができます。


**画像情報**  

| メディアファイルタイプ | サポートされるファイル形式 | 入力方法 | 
| --- |--- |--- |
| Image | PNG、JPG、JPEG、GIF、WebP | Base64 および Amazon S3 URI | 


**動画情報**  

| 形式 | MIME タイプ | 動画エンコーディング | 
| --- |--- |--- |
| MKV | video/x-matroska | H.264 | 
| MOV | video/quicktime |  H.264 H.265 ProRES  | 
| MP4 | video/mp4 |  DIVX/XVID H.264 H.265 J2K (JPEG 2000) MPEG-2 MPEG-4 Part 2 VP9  | 
| WEBM | video/webm |  VP8 VP9  | 
| FLV | video/x-flv | FLV1 | 
| MPEG | video/mpeg | MPEG-1 | 
| MPG | video/mpg | MPEG-1 | 
| WMV | video/wmv | MSMPEG4v3 (MP43) | 
| 3GPP | video/3gpp | H.264 | 

動画が base-64 (サイズ制約に適合する限り) として渡されるか、Amazon S3 ロケーションを介して渡されるかを問わず、動画入力トークン数に違いはありません。

3gp ファイル形式の場合、API リクエストで渡される「format」フィールドは「three\$1gp」の形式である必要があることに注意してください。

Amazon S3 を使用する際、「コンテンツタイプ」メタデータが動画の正しい MIME タイプに設定されていることを確認してください。

**Topics**
+ [ロングモーション動画とハイモーション動画](#prompting-video-motion)
+ [レイテンシー](#prompting-video-latency)
+ [視覚理解のプロンプト手法](prompting-vision-prompting.md)

## ロングモーション動画とハイモーション動画
<a name="prompting-video-motion"></a>

このモデルは、1 秒あたり 1 フレーム (FPS) のベースで動画フレームをサンプリングすることで動画理解を行います。動画の詳細のキャプチャと、使用する入力トークンの消費のバランスであり、コスト、レイテンシー、動画の最大長に影響します。一般的なユースケースでは 1 秒ごとに 1 つのイベントをサンプリングするだけで十分ですが、スポーツ動画などのハイモーション動画を伴う一部のユースケースでは、うまく機能しない場合があります。

長い動画を処理するため、16 分を超える動画に対してはサンプリングレートが固定 960 フレームに落とされ、Amazon Nova Lite と Amazon Nova Pro 用に動画全体の長さに対し均等に割り振られます。つまり、動画が 16 分を超えると、FPS が低くなってキャプチャされる詳細が少なくなります。これにより、長い動画の要約などのユースケースが可能になりますが、詳細が重要なハイモーション動画では問題が悪化します。Amazon Nova Premier では、1 FPS サンプリングレートが最大 3,200 フレームまで適用されます。

多くの場合、長い動画では前処理ステップおよび複数の呼び出しを使用して、1 FPS のサンプリングを取得できます。動画は小さなセグメントに分割でき、各セグメントはモデルのマルチモデル機能を使用して分析されます。レスポンスは集計され、Text-to-text を使用する最終ステップで最終的な回答が生成されます。この方法で動画をセグメント化すると、コンテキストが失われる可能性があることに注意してください。RAG ユースケースのチャンキングのトレードオフに似ており、同じ緩和手法 (スライディングウィンドウなど) の多くはそのまま使えます。

動画をセグメント化すると、分析が並行して行われるためレイテンシーも減少する可能性がありますが、コストに影響する入力トークンが大幅に増加する可能性があることに注意してください。

## レイテンシー
<a name="prompting-video-latency"></a>

動画のサイズを大きくすることができます。Amazon S3 にアップロードして呼び出しペイロードを非常に効果的にすることで、最大 1 GB のファイルを処理する手段を用意していますが、モデルは引き続き大量のトークンを処理する必要があります。Invoke や Converse などの同期 Amazon Bedrock 呼び出しを使用している場合、SDK に適切なタイムアウトが設定されていることを確認してください。

いずれにせよ、レイテンシーが要因である場合は Amazon S3 URI が推奨されます。前のセクションで説明された動画のセグメント化は、別の戦略です。高解像度の動画や高フレームレートの動画を前処理してサイズダウンすると、サービスサイズの帯域幅および処理も節約でき、レイテンシーが減少されます。

# 視覚理解のプロンプト手法
<a name="prompting-vision-prompting"></a>

**注記**  
このドキュメントは Amazon Nova バージョン 1 を対象としています。Amazon Nova 2 でマルチモーダルの理解のプロンプトを行う方法については、「[マルチモーダル入力のプロンプト（Prompting multimodal inputs）](https://docs.aws.amazon.com/nova/latest/nova2-userguide/prompting-multimodal.html)」を参照してください。

次の視覚プロンプト手法は、Amazon Nova のより良いプロンプトを作成するのに役立ちます。

**Topics**
+ [配置が重要](#prompting-video-placement)
+ [視覚コンポーネントを含む複数のメディアファイル](#prompting-video-vision-components)
+ [ビジョン理解タスクに従った指示を改善するためのユーザー指示を使用する](#prompting-video-instructions)
+ [Few-Shot サンプル](#prompting-video-exemplars)
+ [境界ボックスの検出](#prompting-video-bounding)
+ [充実した出力またはスタイル](#prompting-video-richer-output)
+ [ドキュメントコンテンツを Markdown に抽出する](#prompting-video-markdown)
+ [視覚理解の推論パラメータ設定](#prompting-video-parameters)
+ [動画分類](#prompting-video-classification)

## 配置が重要
<a name="prompting-video-placement"></a>

ドキュメントを追加する前にメディアファイル (イメージや動画など) を配置し、その後に指示テキストやプロンプトを付けてモデルをガイドすることをお勧めします。テキストの後に配置されたイメージやテキストが散在したイメージは引き続き適切に動作しますが、ユースケースで許可されている場合は、*\$1media\$1file\$1の後に\$1text\$1* 構造が推奨されます。

次のテンプレートを使用して、視覚理解を実行するときに、テキストの前にメディアファイルを配置できます。

```
{
      "role": "user",
      "content": [
        {
          "image": "..."
        },
        {
          "video": "..."
        },
        {
          "document": "..."
        },
        {
          "text": "..."
        }
      ]
}
```

### 例: テキスト前のメディア
<a name="vision-collapsible"></a>


|  | **構造化されていない** | 最適化されたプロンプト | 
| --- |--- |--- |
| ユーザー | イメージ [Image1.png] で何が起こっているか説明してください |  [Image1.png] イメージで何が起こっているかを説明してください。  | 

## 視覚コンポーネントを含む複数のメディアファイル
<a name="prompting-video-vision-components"></a>

ターン間で複数のメディアファイルを提供する場合は、各イメージに番号付きのラベルを付けます。たとえば、2 つのイメージを使用する場合は、`Image 1:` と `Image 2:` のラベルを付けます。3 つの動画を使用する場合は、`Video 1:`、` Video 2:`、`Video 3:` のラベルを付けます。イメージ間、またはイメージとプロンプト間の改行は必要ありません。

次のテンプレートを使用して、複数のメディアファイルを配置できます。

```
messages = [
        {
            "role": "user",
            "content": [
                {"text":"Image 1:"},
                {"image": {"format": "jpeg", "source": {"bytes": img_1_base64}}},
                {"text":"Image 2:"},
                {"image": {"format": "jpeg", "source": {"bytes": img_2_base64}}},
                {"text":"Image 3:"},
                {"image": {"format": "jpeg", "source": {"bytes": img_3_base64}}},
                {"text":"Image 4:"},
                {"image": {"format": "jpeg", "source": {"bytes": img_4_base64}}},
                {"text":"Image 5:"},
                {"image": {"format": "jpeg", "source": {"bytes": img_5_base64}}},
                {"text":user_prompt},
            ],
        }
    ]
```


| 最適化されていないプロンプト | 最適化されたプロンプト | 
| --- |--- |
|  2 番目のイメージに写っているものを説明してください。 [Image1.png] [Image2.png]  |  [Image1.png] [Image2.png] 2 番目のイメージに写っているものを説明してください。  | 
|  2 番目のイメージは、含まれているドキュメントに記載されていますか。 [Image1.png] [Image2.png] [Document1.pdf]  |  [Image1.png] [Image2.png] [Document1.pdf] 2 番目のイメージは、含まれているドキュメントに記載されていますか。  | 

メディアファイルタイプのコンテキストトークンが長いため、プロンプトの先頭に示されているシステムプロンプトは、場合によっては反映されないことがあります。今回は、システム指示をユーザーターンに移動し、*\$1media\$1file\$1の後に\$1text\$1* の一般的なガイダンスに従うことをお勧めします。これは、RAG、エージェント、またはツールの使用に関するシステムプロンプトには影響しません。

## ビジョン理解タスクに従った指示を改善するためのユーザー指示を使用する
<a name="prompting-video-instructions"></a>

動画理解においては、コンテキスト内のトークンの数により、[配置が重要](#prompting-video-placement) の推奨事項が非常に重要になります。トーンやスタイルなど、より一般的な場合は、システムプロンプトを使用します。パフォーマンスを向上させるために、ユーザープロンプトの一部として動画関連の指示を維持することをお勧めします。

次のテンプレートを使用して指示を改善できます。

```
{
    "role": "user",
    "content": [
       {
           "video": {
                "format": "mp4",
                "source": { ... }
           }
       },
       {
           "text": "You are an expert in recipe videos. Describe this video in less than 200 words following these guidelines: ..."
       }
    ]
}
```

テキストと同様に、画像や動画に思考連鎖を適用してパフォーマンスを向上させることをお勧めします。また、システムプロンプトには思考連鎖ディレクティブを配置し、ユーザープロンプトには他の指示を保持することをお勧めします。

**重要**  
Amazon Nova Premier モデルは、Amazon Nova ファミリーの高度なインテリジェンスモデルであり、より複雑なタスクを処理できます。タスクで高度な思考連鎖の思考が必要な場合は、「[Amazon Nova に思考時間を与える (思考連鎖)](https://docs.aws.amazon.com/nova/latest/userguide/prompting-chain-of-thought.html)」で提供されているプロンプトテンプレートを使用することをお勧めします。このアプローチは、モデルの分析能力と問題解決能力を強化するのに役立ちます。

## Few-Shot サンプル
<a name="prompting-video-exemplars"></a>

テキストモデルと同様に、イメージの理解パフォーマンスを向上させるためにイメージの例を提供することをお勧めします (single-video-per-inference の制限のため、動画の例は提供できません）。システムプロンプトで提供するのではなく、メディアファイルの後に例をユーザープロンプトに配置することをお勧めします。


|  | 0-Shot | 2-Shot | 
| --- |--- |--- |
| User |  | [Image 1] | 
| Assistant |  | The image 1 description | 
| User |  | [Image 2] | 
| Assistant |  | The image 2 description | 
| User | [イメージ 3] イメージで何が起こっているかを説明する | [イメージ 3] イメージで何が起こっているかを説明する | 

## 境界ボックスの検出
<a name="prompting-video-bounding"></a>

オブジェクトの境界ボックス座標を識別する必要がある場合は、Amazon Nova モデルを使用して、[0, 1000] のスケールで境界ボックスを出力できます。これらの座標を取得したら、後処理ステップとしてイメージサイズに基づいてサイズを変更できます。この後処理ステップを実行する方法の詳細については、「[Amazon Nova Image Grounding notebook](https://github.com/aws-samples/amazon-nova-samples/blob/main/multimodal-understanding/repeatable-patterns/13-image-grounding/image_grounding.ipynb)」を参照してください。

境界ボックス検出のサンプルプロンプトを次に示します。

```
Detect bounding box of objects in the image, only detect {item_name} category objects with high confidence, output in a list of bounding box format.
Output example:
[
    {"{item_name}": [x1, y1, x2, y2]},
    ...
]

Result:
```

## 充実した出力またはスタイル
<a name="prompting-video-richer-output"></a>

動画理解の出力は非常に短い場合があります。より長い出力が必要な場合は、モデルのペルソナを作成することをお勧めします。このペルソナは、システムロールの使用と同様に、希望する方法で応答するように指示できます。

レスポンスをさらに変更するには、[ワンショットと数ショットの手法](prompting-examples.md)を使用します。良いレスポンスとは何かの例を示し、モデルはその形式を模倣しながら回答を生成できます。

## ドキュメントコンテンツを Markdown に抽出する
<a name="prompting-video-markdown"></a>

Amazon Nova Premier は、ドキュメントに埋め込まれたグラフを理解する拡張機能と、科学論文などの複雑なドメインからコンテンツを読み取って理解する機能を示しています。さらに、Amazon Nova Premier はドキュメントコンテンツを抽出する際のパフォーマンスが向上し、この情報を Markdown Table 形式と Latex 形式で出力できます。

次の例は、イメージ内のテーブルと、Amazon Nova Premier がイメージの内容を Markdown テーブルに変換するためのプロンプトを示しています。Markdown (または Latex Representation) を作成したら、ツールを使用してコンテンツを JSON またはその他の構造化出力に変換できます。

```
Make a table representation in Markdown of the image provided.
```

![\[ドキュメントとしてではなくイメージとして提供されるデータテーブル\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/tableInImage.png)


モデルによって提供される出力は次のとおりです。

```
| No. | DATE       | DESCRIPTION | AMOUNT |
|-----|------------|-------------|--------|
| 1   | 2021-04-19 | Guest room  | $180   |
| 2   | 2021-04-19 | Breakfast   | $30    |
| 3   | 2021-04-20 | Guest room  | $180   |
| 4   | 2021-04-20 | Laundry     | $15    |
| 5   | 2021-04-20 | Dinner      | $70    |
| 6   | 2021-04-20 | Breakfast   | $30    |
| 7   | 2021-04-21 | Guest room  | $180   |
| 8   | 2021-04-21 | Breakfast   | $30    |
| 9   | 2021-04-21 | Dinner      | $70    |
| 10  | 2021-04-21 | Laundry     | $15    |
|     |            | Subtotal    | $800   |
|     |            | Discounts   | $24    |
|     |            | Taxes       | $68.9  |
|     |            | Total       | $844.9 |
```

この出力では、`||` が列区切り文字として、`&&` が行区切り文字として使用されるカスタムテーブル表記を使用します。

## 視覚理解の推論パラメータ設定
<a name="prompting-video-parameters"></a>

視覚理解のユースケースについては、推論パラメータ `temperature` を **0** に、`topK` を **1** に設定して開始することをお勧めします。モデルの出力を確認したら、ユースケースに基づいて推論パラメータを調整できます。これらの値は通常、必要なタスクと分散により異なり、回答のバリエーションを誘導するために温度設定を増やします。

## 動画分類
<a name="prompting-video-classification"></a>

動画コンテンツを適切なカテゴリに効果的にソートするには、モデルが分類に使用できるカテゴリを指定します。次のサンプルプロンプトを検討してください。

```
[Video]

Which category would best fit this video? Choose an option from the list below:
\Education\Film & Animation\Sports\Comedy\News & Politics\Travel & Events\Entertainment\Trailers\How-to & Style\Pets & Animals\Gaming\Nonprofits & Activism\People & Blogs\Music\Science & Technology\Autos & Vehicles
```

**動画のタグ付け**  
Amazon Nova Premier では、動画タグを作成するための改善された機能を紹介しています。最良の結果を得るには、カンマ区切りタグを要求する以下の手順 [カンマを使用して各タグを区切る] を使用します。プロンプトの例を次に示します。

```
[video]

"Can you list the relevant tags for this video? Use commas to separate each tag."
```

**動画の高密度キャプション**  
Amazon Nova Premier は、高密度キャプションを提供する拡張機能をデモンストレーションします。これは、動画内の複数のセグメントに対して生成された詳細なテキスト説明です。プロンプトの例を次に示します。

```
[Video]

Generate a comprehensive caption that covers all major events and visual elements in the video.
```