

# 画像生成のリクエストとレスポンス構造
<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 秒) に増やすことをお勧めします。コード例はこれを行う方法を示しています。