AiToolGo의 로고

Java를 사용하여 Amazon Bedrock 및 Stable Diffusion XL로 이미지 생성하기

심층적인 논의
기술적
 0
 0
 13
Stable Diffusion의 로고

Stable Diffusion

Black Technology LTD

이 문서는 Amazon Bedrock의 핵심 기능, API 사용법 및 Stability.ai Stable Diffusion XL 모델을 사용한 이미지 생성 실용적인 예제를 자세히 설명하는 포괄적인 사용자 가이드입니다. 다양한 프로그래밍 언어의 코드 스니펫을 포함하고 모델 호출, 매개변수 및 오류 처리에 대해 논의합니다.
  • 주요 포인트
  • 독특한 통찰
  • 실용적 응용
  • 핵심 주제
  • 핵심 통찰
  • 학습 성과
  • • 주요 포인트

    • 1
      Amazon Bedrock 기능에 대한 포괄적인 설명
    • 2
      실용적인 구현을 위한 상세한 코드 예제
    • 3
      모델 호출 및 매개변수에 대한 명확한 설명
  • • 독특한 통찰

    • 1
      이미지 생성을 위한 Stable Diffusion의 혁신적인 사용
    • 2
      API 오류 처리 및 문제 해결에 대한 심층적인 탐구
  • • 실용적 응용

    • 이 문서는 실용적인 코드 예제 및 모범 사례를 통해 Amazon Bedrock을 애플리케이션에 구현하려는 개발자에게 실질적인 지침을 제공합니다.
  • • 핵심 주제

    • 1
      Amazon Bedrock 기능
    • 2
      Stable Diffusion을 사용한 이미지 생성
    • 3
      API 사용 및 오류 처리
  • • 핵심 통찰

    • 1
      이미지 생성을 위한 단계별 코드 예제
    • 2
      모델 매개변수 및 그 영향에 대한 상세한 설명
    • 3
      실용적인 구현 및 문제 해결에 중점
  • • 학습 성과

    • 1
      Amazon Bedrock을 사용하여 모델을 호출하는 방법 이해
    • 2
      Stability.ai Stable Diffusion 모델을 사용하여 이미지 생성 학습
    • 3
      API 오류 처리 및 문제 해결에 대한 통찰력 확보
예시
튜토리얼
코드 샘플
시각 자료
기초
고급 내용
실용적 팁
모범 사례

“ Amazon Bedrock 및 Stable Diffusion XL 소개

Amazon Bedrock은 주요 AI 기업의 고성능 파운데이션 모델(FM)을 선택적으로 제공하는 완전 관리형 서비스입니다. Stability.ai에서 제공하는 Stable Diffusion XL은 텍스트 프롬프트에서 고품질 이미지를 생성할 수 있는 강력한 텍스트-이미지 모델입니다. 이 문서는 Java SDK를 사용하여 이미지 생성을 위해 Stable Diffusion XL을 호출하는 Amazon Bedrock 사용 과정을 안내합니다.

“ Java에서 Bedrock 런타임 클라이언트 설정

이미지 생성을 시작하기 전에 Java 환경에서 Bedrock 런타임 클라이언트를 설정해야 합니다. 여기에는 `BedrockRuntimeClient` 인스턴스를 생성하고 AWS 자격 증명 및 원하는 AWS 리전으로 구성하는 작업이 포함됩니다. 다음은 이를 수행하는 방법입니다: ```java import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient; // 사용하려는 AWS 리전에서 Bedrock 런타임 클라이언트를 생성합니다. // DefaultCredentialsProvider를 선호하는 자격 증명 공급자로 바꾸세요. var client = BedrockRuntimeClient.builder() .credentialsProvider(DefaultCredentialsProvider.create()) .region(Region.US_EAST_1) .build(); ``` 프로젝트 종속성에 AWS SDK for Java 2.x가 추가되었는지 확인하세요.

“ 이미지 생성 요청 구성

`InvokeModel` API는 Stable Diffusion XL 모델이 이해하는 특정 페이로드 형식이 필요합니다. 이 페이로드에는 텍스트 프롬프트, 스타일 사전 설정 및 시드와 같은 매개변수가 포함됩니다. 다음 템플릿을 사용하여 이 페이로드를 나타내는 JSON 문자열을 만들 수 있습니다: ```java var nativeRequestTemplate = """ { "text_prompts": [{ "text": "{{prompt}}" }], "style_preset": "{{style}}", "seed": {{seed}} }"""; // 이미지 생성을 위한 프롬프트를 정의합니다. var prompt = "귀여운 오래된 스팀펑크 로봇의 스타일화된 그림"; // 이미지 생성을 위한 무작위 32비트 시드를 가져옵니다 (최대 4,294,967,295). var seed = new BigInteger(31, new SecureRandom()); // 스타일 사전 설정을 선택합니다. var style = "cinematic"; // 프롬프트, 시드 및 스타일을 모델의 네이티브 요청 페이로드에 포함시킵니다. String nativeRequest = nativeRequestTemplate .replace("{{prompt}}", prompt) .replace("{{seed}}", seed.toString()) .replace("{{style}}", style); ``` `prompt`, `style`, `seed` 변수를 사용자 지정하여 다른 이미지를 생성하세요.

“ Stable Diffusion XL 모델 호출

Bedrock 런타임 클라이언트가 설정되고 요청 페이로드가 구성되면 `invokeModel` 메서드를 사용하여 Stable Diffusion XL 모델을 호출할 수 있습니다: ```java import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.core.exception.SdkClientException; // 모델 ID를 설정합니다. 예: Stable Diffusion XL v1. var modelId = "stability.stable-diffusion-xl-v1"; try { // 요청을 인코딩하여 Bedrock 런타임으로 보냅니다. var response = client.invokeModel(request -> request .body(SdkBytes.fromUtf8String(nativeRequest)) .modelId(modelId) ); // 응답 본문을 디코딩합니다. var responseBody = new JSONObject(response.body().asUtf8String()); // 모델 응답에서 생성된 이미지 데이터를 검색합니다. var base64ImageData = new JSONPointer("/artifacts/0/base64") .queryFrom(responseBody) .toString(); return base64ImageData; } catch (SdkClientException e) { System.err.printf("오류: '%s'를 호출할 수 없습니다. 이유: %s", modelId, e.getMessage()); throw new RuntimeException(e); } ``` 이 코드는 Amazon Bedrock으로 요청을 보내고 응답을 검색합니다.

“ 이미지 생성 응답 디코딩

`invokeModel` 메서드의 응답에는 base64 형식의 생성된 이미지 데이터가 포함됩니다. 이미지를 표시하려면 이 데이터를 디코딩해야 합니다. 아래 코드 조각은 응답에서 base64 이미지 데이터를 추출하는 방법을 보여줍니다: ```java import org.json.JSONObject; import org.json.JSONPointer; // 응답 본문을 디코딩합니다. var responseBody = new JSONObject(response.body().asUtf8String()); // 모델 응답에서 생성된 이미지 데이터를 검색합니다. var base64ImageData = new JSONPointer("/artifacts/0/base64") .queryFrom(responseBody) .toString(); ```

“ 생성된 이미지 표시

base64 이미지 데이터를 얻으면 적절한 이미지 표시 방법을 사용하여 표시할 수 있습니다. 원본 코드에서는 `displayImage` 메서드를 사용했습니다. 선택한 UI 프레임워크 또는 이미지 라이브러리에 따라 이 메서드를 구현해야 합니다. 간단한 예는 base64 문자열을 바이트 배열로 변환한 다음 이미지 라이브러리를 사용하여 표시하는 것입니다. ```java // displayImage 메서드가 있다고 가정합니다. displayImage(base64ImageData); ```

“ 전체 Java 코드 예제

Amazon Bedrock에서 Stable Diffusion XL을 호출하는 전체 Java 코드 예제는 다음과 같습니다: ```java import org.json.JSONObject; import org.json.JSONPointer; import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.core.exception.SdkClientException; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient; import java.math.BigInteger; import java.security.SecureRandom; import static com.example.bedrockruntime.libs.ImageTools.displayImage; public class InvokeModel { public static String invokeModel() { // 사용하려는 AWS 리전에서 Bedrock 런타임 클라이언트를 생성합니다. // DefaultCredentialsProvider를 선호하는 자격 증명 공급자로 바꾸세요. var client = BedrockRuntimeClient.builder() .credentialsProvider(DefaultCredentialsProvider.create()) .region(Region.US_EAST_1) .build(); // 모델 ID를 설정합니다. 예: Stable Diffusion XL v1. var modelId = "stability.stable-diffusion-xl-v1"; // InvokeModel API는 모델의 네이티브 페이로드를 사용합니다. // 사용 가능한 추론 매개변수 및 응답 필드에 대한 자세한 내용은 다음을 참조하세요: // https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-diffusion-1-0-text-image.html var nativeRequestTemplate = """ { "text_prompts": [{ "text": "{{prompt}}" }], "style_preset": "{{style}}", "seed": {{seed}} }"""; // 이미지 생성을 위한 프롬프트를 정의합니다. var prompt = "귀여운 오래된 스팀펑크 로봇의 스타일화된 그림"; // 이미지 생성을 위한 무작위 32비트 시드를 가져옵니다 (최대 4,294,967,295). var seed = new BigInteger(31, new SecureRandom()); // 스타일 사전 설정을 선택합니다. var style = "cinematic"; // 프롬프트, 시드 및 스타일을 모델의 네이티브 요청 페이로드에 포함시킵니다. String nativeRequest = nativeRequestTemplate .replace("{{prompt}}", prompt) .replace("{{seed}}", seed.toString()) .replace("{{style}}", style); try { // 요청을 인코딩하여 Bedrock 런타임으로 보냅니다. var response = client.invokeModel(request -> request .body(SdkBytes.fromUtf8String(nativeRequest)) .modelId(modelId) ); // 응답 본문을 디코딩합니다. var responseBody = new JSONObject(response.body().asUtf8String()); // 모델 응답에서 생성된 이미지 데이터를 검색합니다. var base64ImageData = new JSONPointer("/artifacts/0/base64") .queryFrom(responseBody) .toString(); return base64ImageData; } catch (SdkClientException e) { System.err.printf("오류: '%s'를 호출할 수 없습니다. 이유: %s", modelId, e.getMessage()); throw new RuntimeException(e); } } public static void main(String[] args) { System.out.println("이미지를 생성 중입니다. 몇 초가 걸릴 수 있습니다..."); String base64ImageData = invokeModel(); displayImage(base64ImageData); } } ```

“ Amazon Bedrock 및 AWS SDK 추가 리소스

Amazon Bedrock, AWS SDK for Java 및 Stable Diffusion XL에 대한 자세한 내용은 다음 리소스를 참조하세요: * [Amazon Bedrock 설명서](https://docs.aws.amazon.com/bedrock/latest/userguide/) * [AWS SDK for Java 2.x API 참조](https://sdk.amazonaws.com/java/api/latest/) * [GitHub의 AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples) * [Stable Diffusion XL 설명서](https://stability.ai/)

 원본 링크: https://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/bedrock-runtime_example_bedrock-runtime_InvokeModel_StableDiffusion_section.html

Stable Diffusion의 로고

Stable Diffusion

Black Technology LTD

댓글(0)

user's avatar

    관련 도구