

# Amazon Nova Canvas を使用した画像の生成
<a name="image-generation"></a>

Amazon Nova Canvas モデルを使用すると、テキストプロンプトを使用してリアルでスタジオ品質の画像を生成できます。Amazon Nova Canvas は、テキストから画像への変換や画像編集アプリケーションに使用できます。

Amazon Nova Canvas は次の機能をサポートしています。
+ テキストから画像 (T2I) 生成 – テキストプロンプトを入力し、出力として新しい画像を生成します。生成された画像には、テキストプロンプトで説明されている概念が取り込まれています。
+ 画像の条件付け – 入力リファレンス画像を使用して画像生成を導きます。モデルは、テキストプロンプトに従いながら、参照画像のレイアウトと構図と一致する出力画像を生成します。
+ カラーガイド付きコンテンツ – プロンプトとともに 16 進数カラーコードのリストを指定することができます。1～10 の 16 進数カラーコードを指定できます。返される画像には、ユーザーが指定したカラーパレットが組み込まれます。
+ 画像バリエーション – 1～5 個の画像とオプションのプロンプトを入力として使用します。スタイル、カラーパレット、被写体など、リファレンス画像の特性を取り入れた新しい画像を生成します。
+ インペインティング — 画像とセグメンテーションマスクを入力 (ユーザーからの入力またはモデルによって推定された入力) として使用し、マスクで定義された領域を再構成します。インペインティングは、マスクされたピクセルを新しく生成されたコンテンツに置き換えるために使用します。
+ アウトペインティング — 画像とセグメンテーションマスクを入力 (ユーザーからの入力またはモデルによって推定された入力) として使用し、マスクされた領域をシームレスに拡張する新しいコンテンツを生成します。また、画像の背景を効果的に置き換えます。
+ 背景の削除 – 入力画像内の複数オブジェクトを自動的に識別し、背景を削除します。出力画像の背景は透明です。
+ 被写体の一貫性 — 被写体の一貫性は、リファレンス画像を使用してモデルをファインチューニングし、生成された画像で選択した被写体 (ペット、靴、ハンドバッグなど) を保持することによって実現されます。
+ コンテンツの出典 —「[Content Credentials Verify](https://contentcredentials.org/verify)」などの一般的に利用可能なツールを使用して、画像が Amazon Nova Canvas によって生成されたかどうかを確認します。これは、メタデータが削除されていない限り、画像が生成されたことを示します。
+ ウォーターマーキング — 生成されたすべての画像に目に見えないウォーターマークを追加して、誤った情報の拡散を防ぎ、著作権保護を支援し、コンテンツの使用状況を追跡します。Amazon Nova モデルで生成された画像かどうかを確認するために、このウォーターマークの有無を確認するウォーターマーク検出が利用できます。


|  | Amazon Nova Canvas | 
| --- |--- |
| モデル ID | amazon.nova-canvas-v1:0 | 
| 入力モダリティ | テキスト、イメージ | 
| 出力モダリティ | Image | 
| プロンプトの最大長さ | 1024 文字 | 
| 最大出力の解像度 (生成タスク) | 419 万ピクセル (2048x2048、2816x1536) | 
| 最大出力解像度 (編集タスク) | 以下のすべての要件を満たす必要があります。   最長辺で 4096 ピクセル   1:4 と 4:1 の間のアスペクト比   合計ピクセル数が 419 万以下    | 
| 入力画像タイプのサポート | PNG、JPEG | 
| サポートされている言語 | 英語 | 
| Regions | 米国東部 (バージニア北部)、欧州 (アイルランド)、アジアパシフィック (東京) | 
| Invoke Model API | はい | 
| ファインチューニング | はい | 
| プロビジョニングされたスループット | いいえ | 

**Topics**
+ [画像の生成と編集](image-gen-access.md)
+ [仮想試着](image-gen-vto.md)
+ [ビジュアルスタイル](image-gen-styles.md)
+ [画像生成のリクエストとレスポンス構造](image-gen-req-resp-structure.md)
+ [エラー処理](image-gen-errors.md)
+ [コードの例](image-gen-code-examples.md)

# 画像の生成と編集
<a name="image-gen-access"></a>

Amazon Nova Canvas は Bedrock [InvokeModel API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) を介して利用でき、モデル推論を実行する際に次の推論パラメータおよびモデルレスポンスをサポートします。

**Topics**
+ [画像生成のリクエストとレスポンス形式](#image-gen-req-resp-format)
+ [画像生成用の入力画像](#image-gen-input-images)
+ [画像のマスキング](#image-gen-masking)
+ [サポートされている画像解像度](#image-gen-resolutions)

## 画像生成のリクエストとレスポンス形式
<a name="image-gen-req-resp-format"></a>

Amazon Nova Canvas モデルを使用して [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) を呼び出す際、リクエストの `body` フィールドをユースケースに合った形式に置き換えます。すべてのタスクは `imageGenerationConfig` オブジェクトを共有しますが、各タスクにはそのタスク固有のパラメータオブジェクトがあります。次にユースケースがサポートされています。


| タスクタイプの値 | タスクパラメータフィールド | タスクカテゴリ | 説明 | 
| --- | --- | --- | --- | 
| テキストのみの TEXT\$1IMAGE | textToImageParams | [Generation] (生成) | テキストプロンプトを使用して画像を生成します。 | 
| 画像の条件付けを使用した TEXT\$1IMAGE | textToImageParams | [Generation] (生成) | テキストプロンプトとともに入力条件付き画像を指定して、条件付き画像のレイアウトと構造に従う画像を生成します。 | 
| COLOR\$1GUIDED\$1GENERATION | colorGuidedGenerationParams | [Generation] (生成) | テキストプロンプトとオプションのリファレンス画像とともに 16 進数形式 (\$1FF9800 など) のカラー値のリストを指定して、指定されたカラーパレットに従う画像を生成します。 | 
| IMAGE\$1VARIATION | imageVariationParams | [Generation] (生成) | 生成された画像に影響を与えるには、テキストプロンプトの有無にかかわらず、1 つ以上の入力画像を指定します。生成された画像のビジュアルスタイルに影響を与えたり (テキストプロンプトとともに使用される場合)、単一の画像のバリエーションを生成したり (テキストプロンプトなしで使用される場合)、その他のクリエイティブな効果や制御のために使用できます。 | 
| INPAINTING | inPaintingParams | 編集 | マスクされた領域内の部分を変更して、画像を修正します。画像の要素を追加、削除、または置き換えるために使用できます。 | 
| OUTPAINTING | outPaintingParams | 編集 | マスクされた領域外の部分を変更して、画像を修正します。被写体の背後にある背景を置き換えるために使用できます。 | 
| BACKGROUND\$1REMOVAL | backgroundRemovalParams | 編集 | 画像の背景を自動的に削除し、背景を透明なピクセルに置き換えます。後で画像編集アプリケーション、プレゼンテーション、またはウェブサイトの他の要素と画像を合成する場合に便利です。カスタムコードにより、背景を簡単に単色に変更することもできます。 | 
| VIRTUAL\$1TRY\$1ON | virtualTryOnParams | 編集 | ソース画像とリファレンス画像を指定し、リファレンス画像内のオブジェクトをソース画像に重ね合わせます。さまざまなモデルやポーズで服やアクセサリーを視覚化したり、オブジェクトやアイテムのスタイルや外観を変更したり、あるオブジェクトから別のオブジェクトにスタイルやデザインを転送したりするために使用できます。 | 

## 画像生成用の入力画像
<a name="image-gen-input-images"></a>

多くのタスクタイプには、1 つ以上の入力画像をリクエストに含める必要があります。リクエストで使用される画像は Base64 文字列としてエンコードする必要があります。一般的に、画像は PNG 形式または JPEG 形式を使用でき、カラーチャネル (RGB) ごとに 8 ビットである必要があります。PNG 画像には追加のアルファチャネルを含めることができますが、そのチャネルに透明または半透明のピクセルを含めることはできません。サポートされている入力画像のディメンションに関する詳細については、「[サポートされている画像解像度](#image-gen-resolutions)」を参照してください。

*マスク画像*は、インペイントまたはアウトペイントする領域を示す画像です。この画像には、純粋な黒と純粋な白のピクセルしか含めることができません。

インペインティングリクエストの場合、黒い領域は*マスク*と呼ばれ、この部分が変更対象になります。マスク画像の残り部分には純粋な白のピクセルのみを含める必要があります。純白のピクセルはマスクの外側の領域を示します。

アウトペインティングリクエストの場合、白の領域がモデルによる変更の対象になります。

マスク画像には、純粋な黒または純粋な白ではないピクセルを含めることはできません。JPEG 画像をマスクとして使用している場合、圧縮中に白または黒以外のピクセルが発生しないように、100% の品質で圧縮する必要があります。

Base64 文字列との間で画像をエンコードまたはデコードする方法の例については、「[コード例](https://docs.aws.amazon.com/nova/latest/userguide/image-gen-code-examples.html)」を参照してください。

## 画像のマスキング
<a name="image-gen-masking"></a>

画像を編集する場合、マスクは編集する領域を定義する方法です。次の 3 つの方法のいずれかでマスクを定義できます。
+ `maskPrompt` – 画像のマスク対象部分を説明する自然言語のテキストプロンプトを記述します。
+ `maskImage` – 純粋な黒いピクセルがマスク内の領域を示し、純粋な白のピクセルがマスク外の領域を示す白黒の画像。

  インペインティングリクエストの場合、黒いピクセルがモデルによる変更の対象になります。アウトペインティングリクエストの場合、白いピクセルが変更の対象になります。
+ `garmentBasedMask` — いくつかの限定されたスタイルオプションとともに置き換える領域を定義する画像ベースのマスク。

マスクは、写真編集ツールを使用して描画したり、独自のカスタムコードで作成したりすることができます。それ以外の場合、maskPrompt フィールドを使用してモデルにマスクの推測を許可します。

## サポートされている画像解像度
<a name="image-gen-resolutions"></a>

次の要件を満たしている限り、生成タスクに出力解像度を指定できます。
+ 各辺は 320 〜 4096 ピクセルの範囲である必要があり、その範囲に限ります。
+ 各辺は 16 で割り切れる必要があります。
+ アスペクト比は 1:4 と 4:1 の間である必要があります。つまり、一辺はもう一方の辺の 4 倍を超える長さにすることはできません。
+ 合計ピクセル数は 4,194,304 未満である必要があります。

このような同じ制約のほとんどは、入力画像にも適用されます。ただし、画像の辺の数値は 16 で割り切る必要はありません。

# 仮想試着
<a name="image-gen-vto"></a>

*仮想試着*は、マスク画像のガイダンスに基づいてリファレンス画像のコンテンツがソース画像に重ね合わせられる、画像ガイドによるインペインティングのユースケースです。Amazon Nova Canvas は、衣服、アクセサリー、家具、および関連オブジェクト用に調整されています。このモデルは、ロゴやテキストを画像に追加するなど、他のケースにもよく適用されます。

仮想試着 API を使用して、最大 5 つの画像を生成できます。デフォルトでは、1 つの画像のみ生成されます。

仮想試着を実行するには、次の 3 つの画像を指定する必要があります。
+ *ソース画像* - 変更する元の画像。例えば、人物や部屋の風景などの画像です。
+ *リファレンス画像* - ソース画像に重ね合わせられるアイテム、オブジェクトを含む画像。例えば、これにはジャケット、ボウル、ソファーが含まれる場合があります。衣服の場合、リファレンス画像には衣服を着ている状態、来ていない状態で含めることができ、個別のコーディネートのコンポーネントを表す複数の製品を含めることができます (1 つの画像にシャツ、パンツ、靴など)。
+ *マスク画像* - ソースの中で修正する部分を定義する画像。マスク画像は、ソース画像の変更するべき部分を定義するために使用される白黒の画像です。黒いピクセルは変更するソース画像の領域を示し、白いピクセルは保持する画像の領域を示します。独自のマスク画像を指定するか、指定した他の入力パラメータに基づいてモデルにマスク画像を作成させることができます。

  マスク画像は、指定した場合、出力の一部として返すことができます。

このモデルの仕組みの例をいくつか示します。

------
#### [ Upper body clothing ]

次の画像は、Amazon Nova が上半身の衣服アイテムをモデルに重ね合わせる方法の例を示しています。


| ソース画像 | リファレンス画像 | Output | 
| --- |--- |--- |
|  ![\[サングラスをかけ青いシャツを着た、左を見ている男性。\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/vto1_source.jpg)  |  ![\[ピンクレッドのボタンダウンシャツ。\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/vto1_ref.jpg)  |  ![\[サングラスをかけピンクレッドのボタンダウンシャツを着た、左を見ている男性。\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/vto1_output.png)  | 

------
#### [ Couch in a room ]

次の画像は、Amazon Nova でソファーを家具の部屋に重ね合わせる方法の例を示しています。


| ソース画像 | リファレンス画像 | Output | 
| --- |--- |--- |
|  ![\[他の装飾で囲まれた部屋にあるミッドセンチュリースタイルでモダングレーのソファー。\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/vto2_source.jpg)  |  ![\[白が背景のオレンジ色のソファー。\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/vto2_ref.jpg)  |  ![\[他の装飾で囲まれた部屋にあるオレンジ色のソファー。\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/vto2_output.png)  | 

------

他の Amazon Nova Canvas のタスクタイプとは異なり、仮想試着ではテキストプロンプトまたはネガティブテキストプロンプトがサポートされていません。

## マスク画像の定義
<a name="image-gen-vto-mask"></a>

マスク画像を直接提供するには、`maskType: "IMAGE"` を指定するか、`maskType: "GARMENT"` や `maskType: "PROMPT"` などの補助入力を使用してモデルがマスク画像を自動的にコンピューティングできるようにします。

マスクタイプとして `"GARMENT"` を指定すると、Amazon Nova Canvas は指定した `garmentClass` 入力パラメータの値に基づいて衣服に対応するマスクを作成します。ほとんどの場合、次のいずれかの高レベルな衣服クラスを使用できます。
+ `"UPPER_BODY"` - 腕の長さ全体を含むマスクを作成します。
+ `"LOWER_BODY"` - 脚の間に隙間がない、脚の長さ全体を含むマスクを作成します。
+ `"FOOTWEAR"` - ソース画像に示されている靴のプロファイルに適合するマスクを作成します。
+ `"FULL_BODY"` - `"UPPER_BODY"` と `"LOWER_BODY"` の組み合わせに相当するマスクを作成します。

マスクタイプ `"PROMPT"` を使用して、自然言語を使用して置き換えるソース画像のアイテムを記述できます。これは、衣服以外のシナリオに役立ちます。この機能では、`maskPrompt` パラメータを介してタスクタイプ `"INPAINTING"` に存在するのと同じ自動マスキング機能を使用します。

**警告**  
マスクタイプ `"PROMPT"` で作成されたマスクは、記述したアイテムの形状に厳密に準拠します。追加する製品は、置き換えるアイテムとシルエットやサイズが同じでない可能性があるため、これは多くのシナリオで問題になる可能性があります。このため仮想試着 API には、`"BOUNDING_BOX"` に設定できるオプションの `maskShape` パラメータも用意されています。マスクタイプ `"PROMPT"` を使用する際は、ほとんどの場合、この設定 (デフォルト) を使用することをお勧めします。

## 新しいポーズ、手、または顔の生成
<a name="image-gen-vto-exclusions"></a>

ソース画像内の人物のポーズ、手、顔を保持または再生成するようにモデルに指示できます。これらの要素を保持すると、選択した `maskType` に関係なく、マスク画像から自動的に削除されます。

次の状況で、ポーズ、手、または顔を保持できます。
+ エンドユーザーが独自のマスクを描画できるようにするアプリケーションを開発している。これらの機能を保持すると、エンドユーザーが誤ってマスクに手や顔を含めるのを防ぐことができます。
+ `maskShape: BOUNDING_BOX` を使用しているが、新しい手や顔を生成したくない。`preserveFace: ON` または `preserveHands: ON` を使用すると、これらの機能はマスクから自動的に削除されます。
+ 直立姿勢ではないモデルで `maskType:GARMENT` および `maskShape: BOUNDING_BOX` を使用している。この場合、境界ボックスマスクが顔と重なる可能性があるため、`preserveFace: ON` を使用することをお勧めします。

逆に、次の状況ではポーズ、手、または顔を再生成できます。
+ 首を覆う衣服の場合、`preserveFace: ON` では首の部分が十分に表示されず、出力に悪影響を及ぼす可能性があります。
+ モデルがハイヒールの靴を着用しており、リファレンス画像ではフラットヒールの靴を着用している場合、またはその逆の場合。この場合、ボディポーズを保持すると、不自然な見た目になります。
+ 上記のポイントと同様に、ハンドバッグやその他のアクセサリーを試す際は、新しいポーズや手を生成すると、より自然な結果が得られます。

## スタイリングキュー
<a name="image-gen-vto-styling"></a>

`garmentStyling` パラメータを使用すると、写真撮影で見つかる可能性のある特定の衣服のスタイリングキューを保存または変更できます。例えば、Amazon Nova Canvas では、袖をロールアップまたはダウンするようにシャツのスタイルを変更できます。または、シャツをタックインしたりタックインしないように変更できます。以下のオプションが利用できます。
+ `"longSleeveStyle"` - 長袖シャツの袖をロールアップまたはダウンするかどうかを制御します。
  + `"SLEEVE_DOWN"` - ソース画像が長袖シャツ (袖をロールアップまたはダウンした状態)、半袖シャツ、またはノースリーブシャツを着用している場合に適用できます。
  + `"SLEEVE_UP"` - ソース画像が長袖シャツ (袖をロールアップした状態)、半袖シャツ、またはノースリーブシャツを着用している場合に適用できます。
+ `"tuckingStyle"` - 上半身の衣服をタックインするかしないかを制御します。
  + `"UNTUCKED"` - ソース画像のシャツがタックインされているかどうかに関係なく適用できます。
  + `"TUCKED"` - ソース画像のシャツがタックインしている場合に適用できます。
+ `"outerLayerStyle"` - 上半身の衣服が開いた状態で着られるのか、閉じた状態で着られるのかを制御します。このデフォルトは `"CLOSED"` で、ほとんどの衣服 (シャツやセーターなど) に適しています。ジャケットなどのアウターの衣服の場合、この値を `"OPEN"` に設定すると、ソース画像の元の上半身の衣服が保持され、その上に新しいアウターの衣服が重ねられます。アウターの衣服で `"CLOSED"` の値を使用した場合、衣服が常に閉じた状態で描写されるとは限りません。これは、`"CLOSED"` の値を設定することでソース画像内のすべての上半身の衣服が置き換えられるものの、結果としてアウターレイヤーが開いた状態になり、その下に新しいインナーが見える場合があるためです。
  + `"CLOSED"`
  + `"OPEN"`

詳細については、[画像生成のリクエストとレスポンス構造](image-gen-req-resp-structure.md) の `garmentStyling` パラメータを参照してください。

## 画像ステッチング
<a name="image-gen-vto-stitching"></a>

仮想試着では、画像を結合して最終的な画像を作成する方法を決定できます。`"BALANCED"`、`"SEAMLESS"`、`"DETAILED"` から選択できます。各マージスタイルは、要素を結合して最終的な画像を作成する方法対して異なるアプローチを取り、それぞれに独自の利点とトレードオフがあります。
+ `"BALANCED"` - 元の画像内のマスクされていないピクセルを保護し、元の画像に対して 100% の精度を維持します。場合によっては、マスクの形状が「ゴースト」のように見える、わずかな色や質感の不一致が出力画像に生じることがあります。これは、単色または均一な質感の背景で立っている人物が画像に含まれている場合に発生する可能性が最も高くなります。これを回避するには、代わりにマージスタイル `"SEAMLESS"` を使用できます。
+ `"SEAMLESS"` - 最終的な画像内のマスクされた画像領域とマスクされていない画像領域の間に目立つ継ぎ目がないことを確認します。トレードオフとは、画像内のすべてのピクセルがわずかに変化し、場合によっては画像のマスクされていない領域で細部の描写が失われることです。
+ `"DETAILED"` - 特にマスクされた領域が画像全体と比べて比較的小さい場合、ロゴやテキストなどの細部の描写を大幅に改善できます。このモデルでは、マスクされた領域のみを含む元の画像の、しっかりとトリミングされた高解像度バージョンでインペインティングを実行することで、これを実現します。その後、結果を元の画像にマージします。`"BALANCED"` モードを使用する場合と同様に、このモードでも継ぎ目が表れることがあります。

# ビジュアルスタイル
<a name="image-gen-styles"></a>

Amazon Nova Canvas では、事前定義されたさまざまなスタイルで画像を生成できます。タスクタイプ `"TEXT_TO_IMAGE"` で、`style` パラメータを使用して事前定義されたビジュアルスタイルを選択します。以下の使用可能なスタイルから選択します。
+ `"3D_ANIMATED_FAMILY_FILM"` - 3D アニメーション映画を想起させるスタイル。リアルなレンダリングと、カートゥーン調の、または誇張された物理的特徴を持つキャラクターが特徴です。このスタイルでは、キャラクターに焦点を当てた画像、オブジェクトまたは小道具に焦点を当てた画像、室内外の環境または設定に焦点を当てた画像を生成できます。
+ `"DESIGN_SKETCH"` - 手描きのラインアートを使用し、洗いすぎたり塗りつぶしすぎたりすることなく、洗練されすぎないスタイル。このスタイルは、概念やアイデアを伝えるために使用されます。これは、ファッションや製品設計のスケッチだけでなく、建築のスケッチにも役立ちます。
+ `"FLAT_VECTOR_ILLUSTRATION"` - ビジネスコミュニケーションで人気のフラットカラーのイラストスタイル。これは、アイコンやクリップアートの画像にも役立ちます。
+ `"GRAPHIC_NOVEL_ILLUSTRATION"` - 鮮やかなインクのイラストスタイル。キャラクターには、他のよりカートゥーン調のスタイルのような誇張された特徴はありません。
+ `"MAXIMALISM"` - 力強い造形と豊かな詳細があり、明るく、精巧かつ大胆で、複雑です。このスタイルは、イラスト、写真、インテリアデザイン、グラフィックデザイン、パッケージデザインなど、さまざまなテーマに適用できます。
+ `"MIDCENTURY_RETRO"` - 1940 年代から 1960 年代のグラフィックデザインのトレンドを想起させます。
+ `"PHOTOREALISM"` - ストック写真、エディトリアル写真、報道写真など、さまざまなレパートリーを含むリアルな写真スタイル。このスタイルでは、リアルな照明、被写界深度、およびレパートリーに適合する構成を示します。最も一般的な被写体は人間ですが、動物、風景、その他の自然の特徴も含めることができます。
+ `"SOFT_DIGITAL_PAINTING"` - このスタイルは、スケッチよりも完成度および洗練度が高くなります。これには、シェーディング、立体感、および他のスタイルで不足している可能性のある質感が含まれます。

**注記**  
Amazon Nova Canvas のスタイルは、このリスト内のものに限定されません。`style` パラメータを省略し、プロンプト内で目的のスタイルを記述することで、他の多くのビジュアルスタイルを実現できます。オプションで、`negativeText` パラメータを使用して、スタイル特性が望ましくない特性になることを回避できます。

次の画像は、前述の各スタイルで生成されたのと同じ画像を表示します。

## 3D アニメーションファミリー映画
<a name="styles-collapsable1"></a>

![\[画像は、3D アニメーションファミリー映画のスタイルで描かれた象を示しています。\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/3D_ANIMATED_FAMILY_FILM.png)


## デザインスケッチ
<a name="styles-collapsable2"></a>

![\[画像は、デザインスケッチのスタイルで描かれた象を示しています。\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/DESIGN_SKETCH.png)


## フラットなベクターイラスト
<a name="styles-collapsable3"></a>

![\[画像は、フラットなベクターイラストのスタイルで描かれた象を示しています。\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/FLAT_VECTOR_ILLUSTRATION.png)


## グラフィックノベルイラスト
<a name="styles-collapsable4"></a>

![\[画像は、グラフィックノベルイラストのスタイルで描かれた象を示しています。\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/GRAPHIC_NOVEL_ILLUSTRATION.png)


## マキシマリズム
<a name="styles-collapsable5"></a>

![\[画像は、マキシマリズムのスタイルで描かれた象を示しています。\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/MAXIMALISM.png)


## ミッドセンチュリーレトロ
<a name="styles-collapsable6"></a>

![\[画像は、ミッドセンチュリーレトロのスタイルで描かれた象を示しています。\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/MIDCENTURY_RETRO.png)


## フォトリアリズム
<a name="styles-collapsable7"></a>

![\[画像は、フォトリアリズムのスタイルで描かれた象を示しています。\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/PHOTOREALISM.png)


## ソフトデジタルペインティング
<a name="styles-collapsable8"></a>

![\[画像は、ソフトデジタルペインティングのスタイルで描かれた象を示しています。\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/images/SOFT_DIGITAL_PAINTING.png)


# 画像生成のリクエストとレスポンス構造
<a name="image-gen-req-resp-structure"></a>

**画像生成**  
次の例では、さまざまな画像生成のユースケースを示しています。各例では、画像生成に使用されるフィールドについて説明します。

------
#### [ Text-to-image request ]

```
{
    "taskType": "TEXT_IMAGE",
    "textToImageParams": {
        "text": string,
        "negativeText": string,
        "style": "3D_ANIMATED_FAMILY_FILM" |
        "DESIGN_SKETCH" | "FLAT_VECTOR_ILLUSTRATION" |
        "GRAPHIC_NOVEL_ILLUSTRATION" | "MAXIMALISM" |
        "MIDCENTURY_RETRO" | "PHOTOREALISM" |
        "SOFT_DIGITAL_PAINTING"
    },
    "imageGenerationConfig": {
        "width": int,
        "height": int,
        "quality": "standard" | "premium",
        "cfgScale": float,
        "seed": int,
        "numberOfImages": int
    }
}
```

このリクエストでは、次の `textToImageParams` フィールドが使用されます。
+ `text` (必須) – 画像を生成するテキストプロンプト。プロンプトの長さは 1 ～ 1024 文字である必要があります。
+ `negativeText` (オプション) – 画像に含めない内容を定義するテキストプロンプト。この値の長さは 1 〜 1024 文字である必要があります。
+ `style` (オプション) – この画像の生成に使用されるスタイルを指定します。詳細については、「[ビジュアルスタイル](image-gen-styles.md)」を参照してください。

**注記**  
`text` および `negativeText` の値に否定的な単語 (「〜なし」、「〜ではない」、「〜を使用しない」など) を使用しないでください。例えば、画像にミラーを含めない場合、`text` フィールドに「ミラーなし」または「ミラーを使用しない」を含める代わりに、`negativeText` フィールドに「ミラー」という単語を使用します。

------
#### [ Text-to-image request with image conditioning ]

```
{
    "taskType": "TEXT_IMAGE",
    "textToImageParams": {
        "conditionImage": string (Base64 encoded image),
        "controlMode": "CANNY_EDGE" | "SEGMENTATION", 
        "controlStrength": float,
        "text": string,
        "negativeText": string,
        "style": "3D_ANIMATED_FAMILY_FILM" |
        "DESIGN_SKETCH" | "FLAT_VECTOR_ILLUSTRATION" |
        "GRAPHIC_NOVEL_ILLUSTRATION" | "MAXIMALISM" |
        "MIDCENTURY_RETRO" | "PHOTOREALISM" |
        "SOFT_DIGITAL_PAINTING"
    },
    "imageGenerationConfig": {
        "width": int,
        "height": int,
        "quality": "standard" | "premium",
        "cfgScale": float,
        "seed": int,
        "numberOfImages": int
    }
}
```

このリクエストでは、次の `textToImageParams` フィールドが使用されます。
+ `conditionImage` (必須) – 生成された画像のレイアウトおよび構成を導く JPEG または PNG 画像。画像は Base64 文字列としてフォーマットする必要があります。追加の要件については、「[画像生成用の入力画像](image-gen-access.md#image-gen-input-images)」を参照してください。
+ `controlMode` (オプション) – 使用する条件付きモードを指定します。デフォルト値は「CANNY\$1EDGE」です。
  + `CANNY_EDGE` – 生成された画像の要素は、条件画像の目立つ輪郭または「端」に密接に従います。
  + `SEGMENTATION` – 条件画像は自動的に分析され、目立つコンテンツ図形が識別されます。この分析では、生成を導くセグメンテーションマスクが完成し、条件画像のレイアウトに密接に従って生成された画像が完成しますが、各コンテンツ領域の境界内でモデルに高い自由度を与えます。
+ `controlStrength` (オプション) – 生成された画像のレイアウトおよび構成が `conditionImage` とどの程度類似させる必要があるかについて指定します。範囲は 0 ～ 1.0 であり、値が低いほどランダム性が高くなります。デフォルト値は 0.7 です。
+ `text` (必須) – 画像を生成するテキストプロンプト。プロンプトの長さは 1 ～ 1024 文字である必要があります。
+ `negativeText` (オプション) – 画像に含めない内容を定義するテキストプロンプト。この値の長さは 1 〜 1024 文字である必要があります。
+ `style` (オプション) – この画像の生成に使用されるスタイルを指定します。詳細については、「[ビジュアルスタイル](image-gen-styles.md)」を参照してください。

**注記**  
`text` および `negativeText` の値に否定的な単語 (「〜なし」、「〜ではない」、「〜を使用しない」など) を使用しないでください。例えば、画像にミラーを含めない場合、`text` フィールドに「ミラーなし」または「ミラーを使用しない」を含める代わりに、`negativeText` フィールドに「ミラー」という単語を使用します。

------
#### [ Color guided image generation request ]

```
{
    "taskType": "COLOR_GUIDED_GENERATION",
    "colorGuidedGenerationParams": {
        "colors": string[] (list of hexadecimal color values),
        "referenceImage": string (Base64 encoded image),
        "text": string,
        "negativeText": string
    },
    "imageGenerationConfig": {
        "width": int,
        "height": int,
        "quality": "standard" | "premium",
        "cfgScale": float,
        "seed": int,
        "numberOfImages": int
    }
}
```

このリクエストでは、次の `colorGuidedGenerationParams` フィールドが使用されます。
+ `colors` (必須) – 画像の必要なカラーパレットを定義する最大 10 カラーコードのリスト。「\$1RRGGBB」の形式で 16 進数の値として表されます。例えば、「\$100FF00」は純粋な緑色で、「\$1FCF2AB」は暖かい黄色です。この `colors` リストは、`referenceImage` が指定されていない場合に最も強力な効果があります。それ以外の場合、リストの色とリファレンス画像の色の両方が最終出力に使用されます。
+ `referenceImage` (オプション) – 被写体およびスタイルリファレンスとして使用する JPEG または PNG 画像。さらに画像の色に加え、`colors` リストの色も最終出力に組み込まれます。追加の要件については、「[画像生成用の入力画像](image-gen-access.md#image-gen-input-images)」を参照してください。
+ `text` (必須) — 画像を生成するテキストプロンプト。プロンプトの長さは 1 ～ 1024 文字である必要があります。
+ `negativeText` (オプション) – 画像に含めない内容を定義するテキストプロンプト。この値の長さは 1 〜 1024 文字である必要があります。

**注記**  
`text` および `negativeText` の値に否定的な単語 (「〜なし」、「〜ではない」、「〜を使用しない」など) を使用しないでください。例えば、画像にミラーを含めない場合、`text` フィールドに「ミラーなし」または「ミラーを使用しない」を含める代わりに、`negativeText` フィールドに「ミラー」という単語を使用します。

------
#### [ Image variation request ]

```
{
    "taskType": "IMAGE_VARIATION",
    "imageVariationParams": {
        "images": string[] (list of Base64 encoded images),
        "similarityStrength": float,
        "text": string,
        "negativeText": string
    },
    "imageGenerationConfig": {
        "height": int,
        "width": int,
        "cfgScale": float,
        "seed": int,
        "numberOfImages": int
    }
}
```

このリクエストでは、次の `imageVariationParams` フィールドが使用されます。
+ `images` (必須) – リファレンスとして使用する 1～5 画像のリスト。各画像は JPEG または PNG 形式であり、Base64 文字列としてエンコードする必要があります。追加の要件については、「[画像生成用の入力画像](image-gen-access.md#image-gen-input-images)」を参照してください。
+ `similarityStrength` (オプション) – 生成された画像を入力画像にどの程度類似させるか指定します。有効な値は 0.2 ～ 1.0 の間にあり、低い値はランダム性を高めるために使用されます。
+ `text` (必須) — 画像を生成するテキストプロンプト。プロンプトの長さは 1 ～ 1024 文字である必要があります。このフィールドを省略した場合、モデルはマスクされた領域内の要素を削除します。画像背景のシームレスな拡張に置き換えられます。
+ `negativeText` (オプション) – 画像に含めない内容を定義するテキストプロンプト。この値の長さは 1 〜 1024 文字である必要があります。

**注記**  
`text` および `negativeText` の値に否定的な単語 (「〜なし」、「〜ではない」、「〜を使用しない」など) を使用しないでください。例えば、画像にミラーを含めない場合、`text` フィールドに「ミラーなし」または「ミラーを使用しない」を含める代わりに、`negativeText` フィールドに「ミラー」という単語を使用します。

------

**画像編集**  
次の例では、さまざまな画像編集のユースケースを示しています。各例では、画像編集に使用されるフィールドについて説明します。

------
#### [ Inpainting request ]

```
{
    "taskType": "INPAINTING",
    "inPaintingParams": {
        "image": string (Base64 encoded image),
        "maskPrompt": string,
        "maskImage": string (Base64 encoded image),
        "text": string,
        "negativeText": string
    },
    "imageGenerationConfig": {
        "numberOfImages": int,
        "quality": "standard" | "premium",
        "cfgScale": float,
        "seed": int
    }
}
```

このリクエストでは、次の `inPaintingParams` フィールドが使用されます。
+ `image` (必須) – 変更する JPEG または PNG はBase64 文字列としてフォーマットされています。追加の要件については、「[画像生成用の入力画像](image-gen-access.md#image-gen-input-images)」を参照してください。
+ `maskPrompt` または `maskImage` (必須) – `maskPrompt` または `maskImage`パラメータのいずれかを指定する必要がありますが、両方を指定することはできません。

  `maskPrompt` は、編集する画像の領域を記述する自然言語のテキストプロンプトです。

  `maskImage` は編集する画像の領域を定義する画像です。マスク画像は入力画像と同じサイズである必要があります。編集する領域は純粋な黒でシェーディングされ、無視する領域は純粋な白でシェーディングされます。マスク画像では他の色は認められません。

  インペインティングおよびアウトペインティングのリクエストは、マスク画像の色要件ではお互いに逆であることに注意してください。
+ `text` (必須) – マスクされた領域内で生成する内容を説明するテキストプロンプト。プロンプトの長さは 1 ～ 1024 文字である必要があります。このフィールドを省略した場合、モデルはマスクされた領域内の要素を削除します。画像背景のシームレスな拡張に置き換えられます。
+ `negativeText` (オプション) – 画像に含めない内容を定義するテキストプロンプト。この値の長さは 1 〜 1024 文字である必要があります。

**注記**  
`text` および `negativeText` の値に否定的な単語 (「〜なし」、「〜ではない」、「〜を使用しない」など) を使用しないでください。例えば、画像にミラーを含めない場合、`text` フィールドに「ミラーなし」または「ミラーを使用しない」を含める代わりに、`negativeText` フィールドに「ミラー」という単語を使用します。

------
#### [ Outpainting request ]

```
{
    "taskType": "OUTPAINTING",
    "outPaintingParams": {
        "image": string (Base64 encoded image),
        "maskPrompt": string,
        "maskImage": string (Base64 encoded image),
        "outPaintingMode": "DEFAULT" | "PRECISE",
        "text": string,
        "negativeText": string
    },
    "imageGenerationConfig": {
        "numberOfImages": int,
        "quality": "standard" | "premium",
        "cfgScale": float,
        "seed": int
    }
}
```

このリクエストでは、次の `outPaintingParams` フィールドが使用されます。
+ `image` (必須) – 変更する JPEG または PNG はBase64 文字列としてフォーマットされています。追加の要件については、「[画像生成用の入力画像](image-gen-access.md#image-gen-input-images)」を参照してください。
+ `maskPrompt` または `maskImage` (必須) – `maskPrompt` または `maskImage`パラメータのいずれかを指定する必要がありますが、両方を指定することはできません。

  `maskPrompt` は、編集する画像の領域を記述する自然言語のテキストプロンプトです。

  `maskImage` は編集する画像の領域を定義する画像です。マスク画像は入力画像と同じサイズである必要があります。編集する領域は純粋な黒でシェーディングされ、無視する領域は純粋な白でシェーディングされます。マスク画像では他の色は認められません。

  インペインティングおよびアウトペインティングのリクエストは、マスク画像の色要件ではお互いに逆であることに注意してください。
+ `outPaintingMode` – 指定したマスクの解釈方法を決定します。

  `DEFAULT` を使用して、マスクされた領域とマスクされていない領域の間をスムーズに移行します。元のピクセルの一部は、新しい背景の開始点として使用されます。このモードは、一般的に新しい背景で元の背景と同様の色を使用する場合に適しています。ただし、プロンプトが元の背景とは大幅に異なる新しい背景を呼び出す場合、ハロ効果が得られます。

  `PRECISE` を使用してマスクの境界に厳密に従います。このモードは、一般的にバックグラウンドを大幅に変更する場合に適しています。
+ `text` (必須) – マスクされた領域内で生成する内容を説明するテキストプロンプト。プロンプトの長さは 1 ～ 1024 文字である必要があります。このフィールドを省略した場合、モデルはマスクされた領域内の要素を削除します。画像背景のシームレスな拡張に置き換えられます。
+ `negativeText` (オプション) – 画像に含めない内容を定義するテキストプロンプト。この値の長さは 1 〜 1024 文字である必要があります。

**注記**  
`text` および `negativeText` の値に否定的な単語 (「〜なし」、「〜ではない」、「〜を使用しない」など) を使用しないでください。例えば、画像にミラーを含めない場合、`text` フィールドに「ミラーなし」または「ミラーを使用しない」を含める代わりに、`negativeText` フィールドに「ミラー」という単語を使用します。

------
#### [ Background removal request ]

```
{
    "taskType": "BACKGROUND_REMOVAL",
    "backgroundRemovalParams": {
        "image": string (Base64 encoded image)
    }
}
```

次の `backgroundRemovalParams` フィールドはこのリクエストに使用されます。
+ `image` (必須) – 変更する JPEG または PNG はBase64 文字列としてフォーマットされています。追加の要件については、「[画像生成用の入力画像](image-gen-access.md#image-gen-input-images)」を参照してください。

`BACKGROUND_REMOVAL` タスクは、完全な 8 ビットの透明性を持つ PNG 画像を返します。この形式により、前景オブジェクトを滑らかで綺麗に分離でき、画像編集アプリケーション、プレゼンテーション、ウェブサイト内の他の要素と画像を簡単に合成できます。シンプルなカスタムコードを使用して、背景を簡単に単色に変更できます。

------
#### [ Virtual try-on ]

```
{
    "taskType": "VIRTUAL_TRY_ON",
    "virtualTryOnParams": {
        "sourceImage": string (Base64 encoded image),
        "referenceImage": string (Base64 encoded image),
        "maskType": "IMAGE" | "GARMENT" | "PROMPT",
        "imageBasedMask":{
            "maskImage": string (Base64 encoded image),
        },
        "garmentBasedMask":{
            "maskShape": "CONTOUR" | "BOUNDING_BOX" | "DEFAULT",
            "garmentClass": "UPPER_BODY" | "LOWER_BODY" |
            "FULL_BODY" | "FOOTWEAR" | "LONG_SLEEVE_SHIRT" |
            "SHORT_SLEEVE_SHIRT" | "NO_SLEEVE_SHIRT" |
            "OTHER_UPPER_BODY" | "LONG_PANTS" | "SHORT_PANTS" |
            "OTHER_LOWER_BODY" | "LONG_DRESS" | "SHORT_DRESS" |
            "FULL_BODY_OUTFIT" | "OTHER_FULL_BODY" | "SHOES" |
            "BOOTS" | "OTHER_FOOTWEAR",
            "garmentStyling":{ 
                "longSleeveStyle": "SLEEVE_DOWN" | "SLEEVE_UP",
                "tuckingStyle": "UNTUCKED" | "TUCKED",
                "outerLayerStyle": "CLOSED" | "OPEN",
            }
        },
        "promptBasedMask":{
            "maskShape": "BOUNDING_BOX" | "CONTOUR" | "DEFAULT",
            "maskPrompt": string,
        },
        "maskExclusions": { 
            "preserveBodyPose": "ON" | "OFF" | "DEFAULT",
            "preserveHands": "ON" | "OFF" | "DEFAULT",
            "preserveFace": "OFF" | "ON" | "DEFAULT"
        },
        "mergeStyle" : "BALANCED" | "SEAMLESS" | "DETAILED" ,
        "returnMask": boolean,
    },
    "imageGenerationConfig": {
        "numberOfImages": int,
        "quality": "standard" | "premium",
        "cfgScale": float,
        "seed": int
    }
}
```

このリクエストでは、次の `virtualTryOnParams` フィールドが使用されます。
+ `sourceImage` (必須) – 変更する JPEG または PNG はBase64 文字列としてフォーマットされています。追加の要件については、「[画像生成用の入力画像](image-gen-access.md#image-gen-input-images)」を参照してください。
+ `referenceImage` (必須) — Base64 文字列としてフォーマットされたソース画像に重ね合わせるオブジェクトを含む JPEG または PNG。追加の要件については、「[画像生成用の入力画像](image-gen-access.md#image-gen-input-images)」を参照してください。
+ `maskType` (必須) — マスクを画像、プロンプト、または衣服のマスクとして提供するかどうかを指定します。
+ `imageBasedMask` — `maskType` が `"IMAGE"` の場合、必須です。

  `maskImage` は編集する画像の領域を定義する画像です。マスク画像は入力画像と同じサイズである必要があります。編集する領域は純粋な黒でシェーディングされ、無視する領域は純粋な白でシェーディングされます。マスク画像では他の色は認められません。
+ `garmentBasedMask` — `maskType` が `"GARMENT"` の場合、必須です。
  + `maskShape` (オプション) — マスク境界ボックスの形状を定義します。境界ボックスの形状とサイズは、リファレンス画像をソース画像に転送する方法に影響を与える可能性があります。
  + `garmentClass` (必須) — 転送される衣服アイテムを定義します。このパラメータにより、モデルは転送するリファレンス画像の特定の部分に集中できます。
  + `garmentStyling` (オプション) — 特定の衣服アイテムのモデルにスタイリングキューを指定します。`longSleeveStyle` および `tuckingStyle` パラメータは、上半身の衣服にのみ適用されます。`outerLayerStyle` パラメータは、アウターレイヤーの上半身の衣服にのみ適用されます。
+ `promptBasedMask` (必須) — `maskType` が `"PROMPT"` の場合、必須です。
  + `maskShape` (オプション) — マスク境界ボックスの形状を定義します。境界ボックスの形状とサイズは、リファレンス画像をソース画像に転送する方法に影響を与える可能性があります。
  + `maskPrompt` (必須) — 編集する画像の領域を記述する自然言語のテキストプロンプトです。
+ `maskExclusions` (オプション) — ソース画像で人物が検出されると、これらのパラメータによりボディポーズ、手、顔を出力画像で保持するか、再生成するかが決まります。
+ `mergeStyle` (オプション) — ソース画像とリファレンス画像を結合する方法を決定します。各マージスタイルは、要素を結合して最終的な画像を作成する方法対して異なるアプローチを取り、それぞれに独自の利点とトレードオフがあります。
  + `"BALANCED"` - 元の画像内のマスクされていないピクセルを保護し、元の画像に対して 100% の精度を維持します。場合によっては、マスクの形状が「ゴースト」のように見える、わずかな色や質感の不一致が出力画像に生じることがあります。これは、単色または均一な質感の背景で立っている人物が画像に含まれている場合に発生する可能性が最も高くなります。これを回避するには、代わりにマージスタイル `"SEAMLESS"` を使用できます。
  + `"SEAMLESS"` - 最終的な画像内のマスクされた画像領域とマスクされていない画像領域の間に目立つ継ぎ目がないことを確認します。トレードオフとは、このモードで画像内のすべてのピクセルがわずかに変化し、場合によっては画像のマスクされていない領域できめ細かな詳細が失われる可能性があることです。
  + `"DETAILED"` - 特にマスクされた領域が画像全体と比べて比較的小さい場合、ロゴやテキストなどの細部の描写を大幅に改善できます。このモデルでは、マスクされた領域のみを含む元の画像の、しっかりとトリミングされた高解像度バージョンでインペインティングを実行することで、これを実現します。その後、結果を元の画像にマージします。`"BALANCED"` モードを使用する場合と同様に、このモードでも継ぎ目が表れることがあります。
+ `returnMask` (オプション) — マスク画像を出力画像とともに返すかどうかを指定します。

------

**レスポンス本文**  
レスポンス本文には、次のフィールドが 1 つ以上含まれます。

```
{
    "images": "images": string[] (list of Base64 encoded images),
    "maskImage": string (Base64 encoded image),
    "error": string
}
```
+ `images` — 正常に処理されると、生成された各画像を表す Base64 エンコードされた文字列のリストが返されます。このリストには、リクエストした内容と同じ数の画像が含まれているとは限りません。個々の画像が AWS の責任ある AI (RAI) コンテンツモデレーションポリシーに準拠しない場合、生成後にブロックされる場合があります。RAI ポリシーに準拠する画像のみが返されます。
+ `maskImage` - マスク画像を出力とともに返すように指定した場合、ここで返されます。
+ `error` — 画像が RAI ポリシーに準拠しない場合、このフィールドが返されます。それ以外の場合、このフィールドはレスポンスから省略されます。

`imageGenerationConfig` フィールドは、`BACKGROUND_REMOVAL` を除くすべてのタスクタイプに共通です。これはオプションであり、次のフィールドが含まれています。このオブジェクトを省略した場合、デフォルト設定が使用されます。
+ `width` と `height` (オプション) – 生成された画像のサイズおよびアスペクト比を定義します。両方ともデフォルトで 1024 です。

  `width` および `height` の値は、タスクタイプ `"INPAINTING"`、`"OUTPAINTING"`、または `"VIRTUAL_TRY_ON"` には指定しないでください。

  サポートされている解像度の完全なリストについては、「[サポートされている画像解像度](image-gen-access.md#image-gen-resolutions)」を参照してください。
+ `quality` (オプション) – 画像の生成時に使用する品質を指定し、「標準」 (デフォルト) または「プレミアム」があります。
+ `cfgScale` (オプション) — モデルがプロンプトに従う程度を指定します。値の範囲は 1.1～10 で、デフォルト値は 6.5 です。
  + 低値 (1.1～3) - AI の創造的な自由度が高まり、潜在的に美しさは向上しますが、コントラストおよびプロンプトへの忠実度は低くなります
  + 中値 (4～7) - バランスの取れたアプローチで、通常、ほとんどの生成に推奨されます
  + 高値 (8～10) - プロンプトが厳密に遵守され、正確な結果が得られる可能性がありますが、自然な美しさと色の鮮やかさが犠牲になることがあります
+ `numberOfImages` (オプション) – 生成する画像の数。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/image-gen-req-resp-structure.html)
+ `seed` (オプション) – 生成プロセスの初期ノイズ設定を決定します。他のすべてのパラメータを変更せずにシード値を変更すると、プロンプト、ディメンション、その他の設定に準拠し続けるまったく新しい画像が生成されます。最適な画像を見つけるには、さまざまなシード値を試すことが一般的です。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/nova/latest/userguide/image-gen-req-resp-structure.html)

**重要**  
解像度 (`width` および `height`)`numberOfImages`、`quality` はすべて、生成が完了するまでの所要時間に影響します。AWS SDK には 60 秒のデフォルト `read_timeout` がありますが、これらのパラメータに高い値を使用するとすぐに超過してしまいます。したがって、呼び出し操作の `read_timeout` を少なくとも 5 分 (300 秒) に増やすことをお勧めします。コード例はこれを行う方法を示しています。

# エラー処理
<a name="image-gen-errors"></a>

アプリケーションコードで処理するエラーには、3 つの主要タイプがあります。入力検証エラー、AWS の責任ある AI (RAI) 入力偏向エラー、RAI 出力偏向エラーです。これらのエラーは Amazon Nova Canvas に固有です。

入力検証エラーは、入力パラメータにサポートされていない値を使用すると発生します。例えば、サポートされている解像度のいずれかと一致しない幅値、最大許容サイズを超える入力画像、純粋な白や黒以外の色を含む `maskImage` など。すべての入力検証エラーは、問題の原因を説明するメッセージ文字列を含む `ValidationException` として表されます。

RAI 入力偏向エラーは、入力テキスト値または画像が AWS の責任ある AI ポリシーに違反していると判断された場合に発生します。これらのエラーは、次のいずれかのメッセージで `ValidationException` として表されます。
+ 入力テキスト検証メッセージ – 「このリクエストはコンテンツフィルターによってブロックされました。テキストプロンプトを調整して新しいリクエストを送信してください」
+ 入力画像の検証メッセージ – 「このリクエストはコンテンツフィルターによってブロックされました。入力画像を調整して新しいリクエストを送信してください」

RAI 出力偏向エラーは、画像が生成されても AWS の責任ある AI ポリシーに準拠しない場合に発生します。この場合、例外は使用されません。代わりに、正常に処理されたレスポンスが返され、その構造には次のいずれかの値を含む文字列であるエラーフィールドが含まれます。
+ リクエストされたすべての画像が RAI ポリシーに違反している場合 – 「生成されたすべての画像がコンテンツフィルターによってブロックされました」
+ リクエストされた一部 (すべてではない) の画像が RAI ポリシーに違反している場合、「生成された一部の画像がコンテンツフィルターによってブロックされました」

# コードの例
<a name="image-gen-code-examples"></a>

次の例では、さまざまな画像生成タスクのサンプルコードを示しています。

------
#### [ Text to image generation ]

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to generate an image from a text prompt with the Amazon Nova Canvas model (on demand).
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.config import Config

from botocore.exceptions import ClientError


class ImageError(Exception):
    "Custom exception for errors returned by Amazon Nova Canvas"

    def __init__(self, message):
        self.message = message


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_image(model_id, body):
    """
    Generate an image using Amazon Nova Canvas model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Nova Canvas model %s", model_id)

    bedrock = boto3.client(
        service_name='bedrock-runtime',
        config=Config(read_timeout=300)
    )

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error. Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Nova Canvas model %s", model_id)

    return image_bytes


def main():
    """
    Entrypoint for Amazon Nova Canvas  example.
    """

    logging.basicConfig(level=logging.INFO,
                        format="%(levelname)s: %(message)s")

    model_id = 'amazon.nova-canvas-v1:0'

    prompt = """A photograph of a cup of coffee from the side."""

    body = json.dumps({
        "taskType": "TEXT_IMAGE",
        "textToImageParams": {
            "text": prompt
        },
        "imageGenerationConfig": {
            "numberOfImages": 1,
            "height": 1024,
            "width": 1024,
            "cfgScale": 8.0,
            "seed": 0
        }
    })

    try:
        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred:", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Nova Canvas  model {model_id}.")


if __name__ == "__main__":
    main()
```

------
#### [ Inpainting ]

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to use inpainting to generate an image from a source image with 
the Amazon Nova Canvas  model (on demand).
The example uses a mask prompt to specify the area to inpaint.
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.config import Config

from botocore.exceptions import ClientError


class ImageError(Exception):
    "Custom exception for errors returned by Amazon Nova Canvas"

    def __init__(self, message):
        self.message = message


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_image(model_id, body):
    """
    Generate an image using Amazon Nova Canvas  model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Nova Canvas model %s", model_id)

    bedrock = boto3.client(
        service_name='bedrock-runtime',
        config=Config(read_timeout=300)
    )

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error. Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Nova Canvas model %s", model_id)

    return image_bytes


def main():
    """
    Entrypoint for Amazon Nova Canvas example.
    """
    try:
        logging.basicConfig(level=logging.INFO,
                            format="%(levelname)s: %(message)s")

        model_id = 'amazon.nova-canvas-v1:0'

        # Read image from file and encode it as base64 string.
        with open("/path/to/image", "rb") as image_file:
            input_image = base64.b64encode(image_file.read()).decode('utf8')

        body = json.dumps({
            "taskType": "INPAINTING",
            "inPaintingParams": {
                "text": "Modernize the windows of the house",
                "negativeText": "bad quality, low res",
                "image": input_image,
                "maskPrompt": "windows"
            },
            "imageGenerationConfig": {
                "numberOfImages": 1,
                "height": 512,
                "width": 512,
                "cfgScale": 8.0
            }
        })

        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Nova Canvas  model {model_id}.")


if __name__ == "__main__":
    main()
```

------
#### [ Outpainting ]

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to use outpainting to generate an image from a source image with 
the Amazon Nova Canvas  model (on demand).
The example uses a mask image to outpaint the original image.
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.config import Config

from botocore.exceptions import ClientError


class ImageError(Exception):
    "Custom exception for errors returned by Amazon Nova Canvas"

    def __init__(self, message):
        self.message = message


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_image(model_id, body):
    """
    Generate an image using Amazon Nova Canvas  model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Nova Canvas model %s", model_id)

    bedrock = boto3.client(
        service_name='bedrock-runtime',
        config=Config(read_timeout=300)
    )

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error. Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Nova Canvas model %s", model_id)

    return image_bytes


def main():
    """
    Entrypoint for Amazon Nova Canvas  example.
    """
    try:
        logging.basicConfig(level=logging.INFO,
                            format="%(levelname)s: %(message)s")

        model_id = 'amazon.nova-canvas-v1:0'

        # Read image and mask image from file and encode as base64 strings.
        with open("/path/to/image", "rb") as image_file:
            input_image = base64.b64encode(image_file.read()).decode('utf8')
        with open("/path/to/mask_image", "rb") as mask_image_file:
            input_mask_image = base64.b64encode(
                mask_image_file.read()).decode('utf8')

        body = json.dumps({
            "taskType": "OUTPAINTING",
            "outPaintingParams": {
                "text": "Draw a chocolate chip cookie",
                "negativeText": "bad quality, low res",
                "image": input_image,
                "maskImage": input_mask_image,
                "outPaintingMode": "DEFAULT"
            },
            "imageGenerationConfig": {
                "numberOfImages": 1,
                "height": 512,
                "width": 512,
                "cfgScale": 8.0
            }
        }
        )

        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Nova Canvas  model {model_id}.")


if __name__ == "__main__":
    main()
```

------
#### [ Image variation ]

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to generate an image variation from a source image with the
Amazon Nova Canvas  model (on demand).
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.config import Config

from botocore.exceptions import ClientError


class ImageError(Exception):
    "Custom exception for errors returned by Amazon Nova Canvas"

    def __init__(self, message):
        self.message = message


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_image(model_id, body):
    """
    Generate an image using Amazon Nova Canvas  model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Nova Canvas model %s", model_id)

    bedrock = boto3.client(
        service_name='bedrock-runtime',
        config=Config(read_timeout=300)
    )

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error. Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Nova Canvas model %s", model_id)

    return image_bytes


def main():
    """
    Entrypoint for Amazon Nova Canvas  example.
    """
    try:
        logging.basicConfig(level=logging.INFO,
                            format="%(levelname)s: %(message)s")

        model_id = 'amazon.nova-canvas-v1:0'

        # Read image from file and encode it as base64 string.
        with open("/path/to/image", "rb") as image_file:
            input_image = base64.b64encode(image_file.read()).decode('utf8')

        body = json.dumps({
            "taskType": "IMAGE_VARIATION",
            "imageVariationParams": {
                "text": "Modernize the house, photo-realistic, 8k, hdr",
                "negativeText": "bad quality, low resolution, cartoon",
                "images": [input_image],
                "similarityStrength": 0.7,  # Range: 0.2 to 1.0
            },
            "imageGenerationConfig": {
                "numberOfImages": 1,
                "height": 512,
                "width": 512,
                "cfgScale": 8.0
            }
        })

        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Nova Canvas  model {model_id}.")


if __name__ == "__main__":
    main()
```

------
#### [ Image conditioning ]

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to generate image conditioning from a source image with the
Amazon Nova Canvas model (on demand).
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.config import Config

from botocore.exceptions import ClientError


class ImageError(Exception):
    "Custom exception for errors returned by Amazon Nova Canvas"

    def __init__(self, message):
        self.message = message


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_image(model_id, body):
    """
    Generate an image using Amazon Nova Canvas model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Nova Canvas model %s", model_id)

    bedrock = boto3.client(
        service_name='bedrock-runtime',
        config=Config(read_timeout=300)
    )

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error. Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Nova Canvas model %s", model_id)

    return image_bytes


def main():
    """
    Entrypoint for Amazon Nova Canvas example.
    """
    try:
        logging.basicConfig(level=logging.INFO,
                            format="%(levelname)s: %(message)s")

        model_id = 'amazon.nova-canvas-v1:0'

        # Read image from file and encode it as base64 string.
        with open("/path/to/image", "rb") as image_file:
            input_image = base64.b64encode(image_file.read()).decode('utf8')

        body = json.dumps({
            "taskType": "TEXT_IMAGE",
            "textToImageParams": {
                "text": "A robot playing soccer, anime cartoon style",
                "negativeText": "bad quality, low res",
                "conditionImage": input_image,
                "controlMode": "CANNY_EDGE"
            },
            "imageGenerationConfig": {
                "numberOfImages": 1,
                "height": 512,
                "width": 512,
                "cfgScale": 8.0
            }
        })

        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Nova Canvas  model {model_id}.")


if __name__ == "__main__":
    main()
```

------
#### [ Color guided content ]

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to generate an image from a source image color palette with the
Amazon Nova Canvas   model (on demand).
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.config import Config

from botocore.exceptions import ClientError


class ImageError(Exception):
    "Custom exception for errors returned by Amazon Nova Canvas"

    def __init__(self, message):
        self.message = message


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_image(model_id, body):
    """
    Generate an image using Amazon Nova Canvas  model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Nova Canvas model %s", model_id)

    bedrock = boto3.client(
        service_name='bedrock-runtime',
        config=Config(read_timeout=300)
    )

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error. Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Nova Canvas model %s", model_id)

    return image_bytes


def main():
    """
    Entrypoint for Amazon Nova Canvas  example.
    """
    try:
        logging.basicConfig(level=logging.INFO,
                            format="%(levelname)s: %(message)s")

        model_id = 'amazon.nova-canvas-v1:0'

        # Read image from file and encode it as base64 string.
        with open("/path/to/image", "rb") as image_file:
            input_image = base64.b64encode(image_file.read()).decode('utf8')

        body = json.dumps({
            "taskType": "COLOR_GUIDED_GENERATION",
            "colorGuidedGenerationParams": {
                "text": "digital painting of a girl, dreamy and ethereal, pink eyes, peaceful expression, ornate frilly dress, fantasy, intricate, elegant, rainbow bubbles, highly detailed, digital painting, artstation, concept art, smooth, sharp focus, illustration",
                "negativeText": "bad quality, low res",
                "referenceImage": input_image,
                "colors": ["#ff8080", "#ffb280", "#ffe680", "#ffe680"]
            },
            "imageGenerationConfig": {
                "numberOfImages": 1,
                "height": 512,
                "width": 512,
                "cfgScale": 8.0
            }
        })

        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Nova Canvas  model {model_id}.")


if __name__ == "__main__":
    main()
```

------
#### [ Background removal ]

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to generate an image with background removal with the
Amazon Nova Canvas   model (on demand).
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.config import Config

from botocore.exceptions import ClientError


class ImageError(Exception):
    "Custom exception for errors returned by Amazon Nova Canvas"

    def __init__(self, message):
        self.message = message


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_image(model_id, body):
    """
    Generate an image using Amazon Nova Canvas  model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Nova Canvas model %s", model_id)

    bedrock = boto3.client(
        service_name='bedrock-runtime',
        config=Config(read_timeout=300)
    )

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error. Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Nova Canvas model %s", model_id)

    return image_bytes


def main():
    """
    Entrypoint for Amazon Nova Canvas  example.
    """
    try:
        logging.basicConfig(level=logging.INFO,
                            format="%(levelname)s: %(message)s")

        model_id = 'amazon.nova-canvas-v1:0'

        # Read image from file and encode it as base64 string.
        with open("/path/to/image", "rb") as image_file:
            input_image = base64.b64encode(image_file.read()).decode('utf8')

        body = json.dumps({
            "taskType": "BACKGROUND_REMOVAL",
            "backgroundRemovalParams": {
                "image": input_image,
            }
        })

        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Nova Canvas  model {model_id}.")


if __name__ == "__main__":
    main()
```

------