Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Stability.ai Difusi 1.0 gambar ke gambar
Model Stability.ai Diffusion 1.0 memiliki parameter inferensi berikut dan respons model untuk membuat panggilan inferensi gambar ke gambar.
Permintaan dan Tanggapan
Badan permintaan diteruskan di body
bidang permintaan ke InvokeModelatau InvokeModelWithResponseStream.
Untuk informasi lebih lanjut, lihat https://platform.stability.ai/docs/api-reference#tag/v1generation/operation/ imageToImage.
- Request
-
Model Stability.ai Diffusion 1.0 memiliki parameter inferensi berikut untuk panggilan inferensi gambar ke gambar.
{
"text_prompts": [
{
"text": string,
"weight": float
}
],
"init_image" : string ,
"init_image_mode" : string,
"image_strength" : float,
"cfg_scale": float,
"clip_guidance_preset": string,
"sampler": string,
"samples" : int,
"seed": int,
"steps": int,
"style_preset": string,
"extras" : json object
}
Berikut ini adalah parameter yang diperlukan.
-
text_prompts — (Wajib) Sebuah array teks meminta untuk digunakan untuk pembuatan. Setiap elemen adalah JSON objek yang berisi prompt dan bobot untuk prompt.
text — Prompt yang ingin Anda teruskan ke model.
-
berat - (Opsional) Bobot yang harus diterapkan model pada prompt. Nilai yang kurang dari nol menyatakan prompt negatif. Gunakan prompt negatif untuk memberi tahu model untuk menghindari konsep tertentu. Nilai default untuk weight
adalah satu.
-
init_image - (Wajib) Gambar berenkode base64 yang ingin Anda gunakan untuk menginisialisasi proses difusi.
Berikut ini adalah parameter opsional.
-
init_image_mode — (Opsional) Menentukan apakah akan menggunakan image_strength
atau step_schedule_*
mengontrol seberapa besar pengaruh gambar pada hasil. init_image
Nilai yang mungkin adalah IMAGE_STRENGTH
atauSTEP_SCHEDULE
. Defaultnya adalah IMAGE _STRENGTH.
-
image_strength — (Opsional) Menentukan seberapa besar pengaruh gambar sumber pada proses init_image
difusi. Nilai yang mendekati 1 menghasilkan gambar yang sangat mirip dengan gambar sumber. Nilai mendekati 0 menghasilkan gambar yang sangat berbeda dari gambar sumber.
-
cfg_scale — (Opsional) Menentukan seberapa banyak gambar akhir menggambarkan prompt. Gunakan angka yang lebih rendah untuk meningkatkan keacakan dalam generasi.
Default |
Minimum |
Maksimum |
7
|
0
|
35
|
-
clip_guidance_preset — (Opsional) Enum:. FAST_BLUE, FAST_GREEN, NONE, SIMPLE, SLOW, SLOWER,
SLOWEST
-
sampler — (Opsional) Sampler yang digunakan untuk proses difusi. Jika nilai ini dihilangkan, model secara otomatis memilih sampler yang sesuai untuk Anda.
Enum:DDIM DDPM, K_DPMPP_2M, K_DPMPP_2S_ANCESTRAL, K_DPM_2,
K_DPM_2_ANCESTRAL, K_EULER, K_EULER_ANCESTRAL, K_HEUN K_LMS
.
-
sampel - (Opsional) Jumlah gambar yang akan dihasilkan. Saat ini Amazon Bedrock mendukung pembuatan satu gambar. Jika Anda memberikan nilai untuksamples
, nilainya harus satu.
Default |
Minimum |
Maksimum |
1
|
1
|
1
|
-
benih — (Opsional) Benih menentukan pengaturan kebisingan awal. Gunakan seed yang sama dan pengaturan yang sama seperti proses sebelumnya untuk memungkinkan inferensi membuat gambar serupa. Jika Anda tidak menetapkan nilai ini, atau nilainya 0, itu ditetapkan sebagai angka acak.
Default |
Minimum |
Maksimum |
0
|
0
|
4294967295
|
-
langkah - (Opsional) Langkah pembuatan menentukan berapa kali gambar diambil sampelnya. Lebih banyak langkah dapat menghasilkan hasil yang lebih akurat.
Default |
Minimum |
Maksimum |
30
|
10
|
50
|
-
style_preset — (Opsional) Preset gaya yang memandu model gambar menuju gaya tertentu. Daftar preset gaya ini dapat berubah.
Enum: 3d-model, analog-film, animé, cinematic, comic-book, digital-art,
enhance, fantasy-art, isometric, line-art, low-poly, modeling-compound, neon-punk,
origami, photographic, pixel-art, tile-texture
-
ekstra — (Opsional) Parameter ekstra diteruskan ke mesin. Berhati-hatilah saat menggunakannya. Parameter ini digunakan untuk fitur dalam pengembangan atau eksperimental dan dapat berubah tanpa peringatan.
- Response
-
Model Stability.ai Diffusion 1.0 mengembalikan bidang berikut untuk panggilan inferensi teks ke gambar.
{
"result": string,
"artifacts": [
{
"seed": int,
"base64": string,
"finishReason": string
}
]
}
Hasil — Hasil dari operasi. Jika berhasil, jawabannya adalahsuccess
.
-
artefak — Sebuah array gambar, satu untuk setiap gambar yang diminta.
Contoh kode
Contoh berikut menunjukkan cara menjalankan inferensi dengan model Stability.ai Diffusion 1.0 dan throughput sesuai permintaan. Contoh mengirimkan prompt teks dan gambar referensi ke model, mengambil respons dari model, dan akhirnya menunjukkan gambar.
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to generate an image from a reference image with SDXL 1.0 (on demand).
"""
import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.exceptions import ClientError
class ImageError(Exception):
"Custom exception for errors returned by SDXL"
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 SDXL 1.0 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 SDXL model %s", model_id)
bedrock = boto3.client(service_name='bedrock-runtime')
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())
print(response_body['result'])
base64_image = response_body.get("artifacts")[0].get("base64")
base64_bytes = base64_image.encode('ascii')
image_bytes = base64.b64decode(base64_bytes)
finish_reason = response_body.get("artifacts")[0].get("finishReason")
if finish_reason == 'ERROR' or finish_reason == 'CONTENT_FILTERED':
raise ImageError(f"Image generation error. Error code is {finish_reason}")
logger.info("Successfully generated image withvthe SDXL 1.0 model %s", model_id)
return image_bytes
def main():
"""
Entrypoint for SDXL example.
"""
logging.basicConfig(level = logging.INFO,
format = "%(levelname)s: %(message)s")
model_id='stability.stable-diffusion-xl-v1'
prompt="""A space ship."""
# Read reference image from file and encode as base64 strings.
with open("/path/to/image", "rb") as image_file:
init_image = base64.b64encode(image_file.read()).decode('utf8')
# Create request body.
body=json.dumps({
"text_prompts": [
{
"text": prompt
}
],
"init_image": init_image,
"style_preset" : "isometric"
})
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: %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 text with SDXL model {model_id}.")
if __name__ == "__main__":
main()