Amazon Web Services 한국 블로그

Amazon Titan Image Generator v2, Amazon Bedrock에 정식 출시

오늘은 Amazon Bedrock에 새로운 기능을 갖춘 Amazon Titan Image Generator v2 모델이 정식 출시되었다는 소식을 알려드립니다. Amazon Titan Image Generator v2를 사용하면 참조 이미지를 사용하여 이미지 생성을 안내하고 기존 시각적 이미지를 편집할 수 있으며, 배경을 제거하고 이미지 변형을 생성하며 모델을 안전하게 사용자 지정하여 브랜드 스타일과 피사체 일관성을 유지할 수 있습니다. 이 강력한 도구는 워크플로를 간소화하고 생산성을 높이며 창의적인 비전을 실현합니다.

Amazon Titan Image Generator v2는 Amazon Titan Image Generator v1의 전체 기능 외에도 다음과 같은 여러 가지 새로운 기능을 제공합니다.

  • 이미지 컨디셔닝 – 텍스트 프롬프트와 함께 참조 이미지를 제공하여 사용자가 제공한 참조의 레이아웃과 구조를 따르는 출력을 생성합니다.
  • 색상표를 사용한 이미지 안내 – 텍스트 프롬프트와 함께 16진수 코드 목록을 제공하여 생성된 이미지의 색상표를 정확하게 제어할 수 있습니다.
  • 배경 제거 – 여러 객체가 포함된 이미지에서 배경을 자동으로 제거합니다.
  • 피사체 일관성 – 생성된 이미지에서 특정 피사체(예: 특정한 개, 신발 또는 핸드백)가 그대로 유지되도록 모델을 미세 조정합니다.

Amazon Titan Image Generator v2의 새로운 기능
Amazon Titan 모델을 처음 사용하는 경우, 시작하기 전에 Amazon Bedrock 콘솔로 이동하고 왼쪽 하단 패널에서 모델 액세스를 선택합니다. Amazon에서 최신 Amazon Titan 모델에 액세스하려면 Amazon Titan Image Generator G1 v2에 대한 액세스를 별도로 요청하세요.

Amazon Bedrock의 Amazon Titan Image Generator v2에 대한 세부 정보:

이미지 컨디셔닝
이미지 컨디셔닝 기능을 사용하여 의도적으로 정밀하게 작품의 모양을 만들 수 있습니다. 참조 이미지(즉, 컨디셔닝 이미지)를 제공하면 엣지, 객체 윤곽, 구조 요소 또는 참조 이미지 내 개별 영역 및 객체를 정의하는 분할 맵 등 구체적인 시각적 특성에 초점을 맞추도록 모델에 지시할 수 있습니다.

AWS는 캐니 엣지(Canny edge)와 세그먼트화라는 두 가지 유형의 이미지 컨디셔닝을 지원합니다.

  • 캐니 엣지 알고리즘을 사용하면 참조 이미지 내에서 눈에 띄는 엣지를 추출하여 Amazon Titan Image Generator가 생성 프로세스를 안내하는 데 사용할 수 있는 맵을 생성할 수 있으며, 원하는 이미지의 기초를 ‘그릴’ 수 있습니다. 그러면 모델이 사용자의 안내에 따라 세부 요소, 텍스처와 함께 최종적으로 미적 요소를 채웁니다.
  • 세그먼트화는 훨씬 더 세분화된 수준의 제어를 제공합니다. 참조 이미지를 제공하면 이미지 내 특정 영역 또는 객체를 정의할 수 있으며 정의된 리전에 맞는 콘텐츠를 생성하도록 Amazon Titan Image Generator에 지시할 수 있습니다. 캐릭터, 객체 및 기타 주요 요소의 배치와 렌더링을 정밀하게 제어할 수 있습니다.

이미지 컨디셔닝을 사용하는 생성 예제는 다음과 같습니다.

이미지 컨디셔닝 기능을 사용하려면 Amazon Bedrock API, AWS SDK 또는 AWS Command Line Interface(AWS CLI)를 사용하고 참조 이미지와 함께 textToImageParamscontrolMode에서 CANNY_EDGE 또는 SEGMENTATION을 선택하면 됩니다.

	"taskType": "TEXT_IMAGE",
	"textToImageParams": {
 		"text": "동화 세계의 만화 사슴.",
        "conditionImage": input_image, # Optional
        "controlMode": "CANNY_EDGE" # Optional: CANNY_EDGE | SEGMENTATION
        "controlStrength": 0.7 # 선택 사항: 조건 이미지에 가중치 부여됨. 기본값: 0.7
     }

AWS SDK for Python(Boto3)을 사용하는 다음 Python 코드 예제는 Amazon Bedrock에서 Amazon Titan Image Generator v2를 간접적으로 호출하여 이미지 컨디셔닝을 사용하는 방법을 보여줍니다.

import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.exceptions import ClientError

def main():
    """
    Amazon Titan Image Generator V2의 진입점 예제입니다.
    """
    try:
        logging.basicConfig(level=logging.INFO,
                            format="%(levelname)s: %(message)s")

        model_id = 'amazon.titan-image-generator-v2: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": "동화 세계의 만화 사슴",
                "conditionImage": input_image,
                "controlMode": "CANNY_EDGE",
                "controlStrength": 0.7
            },
            "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("클라이언트 오류 발생: %s", message)
        print("클라이언트 오류 발생: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Amazon Titan Image Generator V2 모델 {model_id}로 이미지 생성을 완료했습니다.")

def generate_image(model_id, body):
    """
    Amazon Titan Image Generator V2 모델을 사용하여 온디맨드 방식으로 이미지를 생성합니다.
    Args:
        model_id (str): 사용할 모델 ID입니다.
        body (str): 사용할 요청 본문입니다.
    Returns:
        image_bytes (bytes): 모델에서 생성된 이미지입니다.
    """

    logger.info(
        “Amazon Titan Image Generator V2 모델 %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())

    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(
        "Amazon Titan Image Generator V2 모델 %s을(를) 사용하여 이미지를 성공적으로 생성했습니다.", model_id)

    return image_bytes
	
class ImageError(Exception):
    "Amazon Titan Image Generator V2에서 반환한 오류에 대한 사용자 지정 예외"

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

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

if __name__ == "__main__":
    main()

색상 컨디셔닝
대부분의 디자이너는 색상 브랜딩 가이드라인을 준수하는 이미지를 생성하고 싶어하므로 생성된 이미지의 색상 팔레트를 제어하려고 합니다.

Amazon Titan Image Generator v2를 사용하면 색상 브랜딩 가이드라인을 준수하는 입력의 일부로 제공되는 16진수 색상 목록인 색상 팔레트를 기준으로 하여 색상 컨디셔닝이 적용된 이미지를 생성할 수 있습니다. 또한 참조 이미지를 입력(선택 사항)으로 제공하여 참조 이미지에서 스타일을 상속하면서 제공된 16진수 색상으로 이미지를 생성할 수도 있습니다.

이 예제의 프롬프트는 다음을 설명합니다.
스튜디오 조명과 함께 신선한 야채로 둘러싸인 소박한 주방에 있는 샐러드 드레싱 한 병

생성된 이미지는 텍스트 프롬프트의 내용과 브랜드의 색상 가이드라인에 맞게 지정된 배색을 모두 반영합니다.

색상 컨디셔닝 기능을 사용하려는 경우, 프롬프트와 16진수 코드를 사용하여 taskTypeCOLOR_GUIDED_GENERATION으로 설정할 수 있습니다.

       "taskType": "COLOR_GUIDED_GENERATION",
       "colorGuidedGenerationParam": {
             "text": "스튜디오 조명과 함께 신선한 야채로 둘러싸인 소박한 주방에 있는 샐러드 드레싱 한 병",                         
	         "colors": ['#ff8080', '#ffb280', '#ffe680', '#e5ff80'], # 선택 사항: 16진수 코드 목록 
             "referenceImage": input_image, #Optional
        }

배경 제거
이미지를 단색 배경에 합성하거나 다른 장면 위에 레이어링하려는 경우, 배경을 깔끔하고 정확하게 제거하는 기능은 크리에이티브 워크플로에서 필수적인 도구입니다. 이미지에서 배경을 한 번에 즉시 제거할 수 있습니다. Amazon Titan Image Generator v2는 여러 전경 객체를 지능적으로 감지하고 세그먼트화할 수 있으므로 여러 요소가 겹치는 복잡한 장면도 깔끔하게 분리할 수 있습니다.

이 예제는 숲 속의 나무 한 그루에 앉아 있는 이구아나의 이미지를 보여줍니다. 이 모델은 이구아나를 주요 대상으로 식별하고 숲 배경을 제거하여 투명한 배경으로 대체할 수 있었습니다. 그 결과, 주변의 산만한 숲 없이도 이구아나가 선명하게 눈에 띕니다.

배경 제거 기능을 사용하려면 입력 이미지에서 taskTypeBACKGROUND_REMOVAL로 설정하면 됩니다.

    "taskType": "BACKGROUND_REMOVAL",
    "backgroundRemovalParams": {
 		"image": input_image,
    }

미세 조정을 통한 피사체 일관성
이제 특정 피사체를 시각적으로 매력적인 장면에 원활하게 통합할 수 있습니다. 브랜드 제품, 회사 로고, 가족이 좋아하는 애완동물 등 무엇이든 간에 참조 이미지를 사용하여 Amazon Titan 모델을 미세 조정하면 선택한 피사체의 고유한 특성을 학습할 수 있습니다.

모델을 미세 조정한 후에는 텍스트 프롬프트를 제공하기만 하면 Amazon Titan Generator가 피사체를 일관되게 묘사하는 이미지를 생성하여 다양하고 상상력이 풍부한 상황에 자연스럽게 배치합니다. 이렇게 하면 마케팅, 광고 및 시각적 스토리텔링의 무궁무진한 가능성이 열립니다.

예를 들어, 미세 조정 중에는 강아지 Ron이라는 캡션이 있는 이미지를 사용할 수 있으며, 미세 조정된 모델을 추론할 때 슈퍼히어로 망토를 입은 강아지 Ron과 같은 프롬프트를 입력하면 이에 대한 응답으로 고유한 이미지를 얻을 수 있습니다.

자세한 내용을 알아보려면 AWS 설명서에서 Amazon Titan Image Generator의 모델 추론 파라미터 및 코드 예제를 참조하세요.

정식 출시
Amazon Titan Generator v2 모델은 현재 미국 동부(버지니아 북부) 및 미국 서부(오리건) 리전의 Amazon Bedrock에서 사용할 수 있습니다. 향후 업데이트 여부는 전체 리전 목록을 확인하세요. 더 자세히 알아보려면 Amazon Titan 제품 페이지Amazon Bedrock 요금 페이지를 확인하세요.

지금 바로 Amazon Bedrock에서 Amazon Titan Image Generator v2를 사용해 보고 Amazon Bedrock용 AWS re:Post에 피드백을 보내거나 일반적인 AWS Support 문의를 통해 피드백을 보내 주세요.

심층적인 기술 콘텐츠를 찾아보고 빌더 커뮤니티가 각자의 솔루션에서 Amazon Bedrock을 어떻게 사용하고 있는지 알아보려면 당사의 community.aws 사이트를 방문하세요.

Channy