제퍼넷 로고

Amazon Bedrock 및 AWS Step Functions를 사용하여 이미지 배경을 변경하는 프로세스 자동화 | 아마존 웹 서비스

시간

창의적인 광고, 미디어 및 엔터테인먼트, 전자상거래, 패션 분야의 고객을 포함한 많은 고객은 많은 수의 이미지에서 배경을 변경해야 하는 경우가 많습니다. 일반적으로 여기에는 사진 소프트웨어를 사용하여 각 이미지를 수동으로 편집하는 작업이 포함됩니다. 특히 대규모 이미지 배치의 경우에는 많은 노력이 필요할 수 있습니다. 하지만, 아마존 기반암AWS 단계 함수 대규모로 이 프로세스를 간단하게 자동화할 수 있습니다.

Amazon Bedrock은 생성적 AI 기반 모델을 제공합니다. 아마존 타이탄 이미지 생성기 G1이라는 기술을 사용하여 이미지의 배경을 자동으로 변경할 수 있습니다. 아웃 페인팅. Step Functions를 사용하면 Amazon Bedrock 및 기타 AWS 서비스와 원활하게 연결되는 자동화된 워크플로를 생성할 수 있습니다. Amazon Bedrock과 Step Functions는 함께 여러 이미지에서 배경을 자동으로 변경하는 전체 프로세스를 간소화합니다.

이번 포스팅에서는 여러 이미지의 배경을 변경하는 과정을 단순화하는 솔루션을 소개합니다. 의 역량을 활용하여 생성 적 AI Amazon Bedrock 및 Titan Image Generator G1 모델과 Step Functions가 결합된 이 솔루션은 원하는 배경의 이미지를 효율적으로 생성합니다. 이 게시물은 솔루션의 내부 작동에 대한 통찰력을 제공하고 이 사용자 지정 솔루션을 구축하기 위해 선택한 디자인을 이해하는 데 도움이 됩니다.

을 참조 GitHub 저장소 이 솔루션 배포에 대한 자세한 지침을 확인하세요.

솔루션 개요

특정 요소와 사용된 AWS 서비스에 대해 자세히 알아보기 전에 솔루션이 높은 수준에서 어떻게 작동하는지 살펴보겠습니다. 다음 다이어그램은 솔루션 아키텍처의 단순화된 보기를 제공하고 핵심 요소를 강조합니다.

솔루션 아키텍처

워크플로는 다음 단계로 구성됩니다.

  1. 사용자가 여러 이미지를 아마존 단순 스토리지 서비스 Streamlit 웹 애플리케이션을 통한 (Amazon S3) 버킷.
  2. Streamlit 웹 애플리케이션은 아마존 API 게이트웨이 REST API 엔드포인트가 통합됨 아마존 인식 DetectLabels API, 각 이미지의 라벨을 감지합니다.
  3. 제출 시 Streamlit 웹 애플리케이션은 아마존 DynamoDB 이미지 세부정보가 포함된 테이블입니다.
  4. DynamoDB 업데이트는 다음을 트리거합니다. AWS 람다 Step Functions 워크플로를 시작하는 함수입니다.
  5. Step Functions 워크플로는 각 이미지에 대해 다음 단계를 실행합니다.
    5.1 Amazon Bedrock에 대한 요청 페이로드 구성 InvokeModel API.
    5.2 아마존 기반암 호출 InvokeModel API 작업.
    5.3 응답에서 이미지를 구문 분석하여 S3 위치에 저장합니다.
    5.4 DynamoDB 테이블의 이미지 상태를 업데이트합니다.
  6. Step Functions 워크플로는 Lambda 함수를 호출하여 상태 보고서를 생성합니다.
  7. 워크플로는 다음을 사용하여 이메일을 보냅니다. 아마존 단순 알림 서비스 (아마존 SNS).

다음 스크린샷에 표시된 것처럼 Streamlit 웹 애플리케이션을 사용하면 이미지를 업로드하고 텍스트 프롬프트를 입력하여 원하는 배경, 네거티브 프롬프트 및 이미지 생성을 위한 아웃페인팅 모드를 지정할 수 있습니다. 또한 최종 생성된 이미지에 보관하고 싶지 않은 업로드된 각 이미지와 관련된 원치 않는 라벨을 보고 제거할 수도 있습니다.

간소화된 웹 애플리케이션

이 예에서 배경 프롬프트는 '런던 도시 배경'입니다. 자동화 프로세스는 런던을 배경으로 업로드된 원본 이미지를 기반으로 새로운 이미지를 생성합니다.

생성된 이미지

간소화된 웹 애플리케이션 및 이미지 업로드

Streamlit 웹 애플리케이션은 이 솔루션의 프런트엔드 역할을 합니다. 무단 액세스로부터 애플리케이션을 보호하기 위해 다음과 통합됩니다. 아마존 코 그니 토 사용자 풀. API 게이트웨이는 Amazon Cognito 승인자 요청을 인증합니다. 웹 애플리케이션은 다음 단계를 완료합니다.

  1. 선택한 각 이미지에 대해 API Gateway REST API 엔드포인트를 사용하여 Amazon Rekognition을 통해 레이블을 검색합니다.
  2. 제출 시 애플리케이션은 이미지를 S3 버킷에 업로드합니다.
  3. 애플리케이션은 다른 API Gateway REST API 엔드포인트를 사용하여 각 이미지에 대한 관련 매개변수, 이미지 이름 및 관련 레이블로 DynamoDB 테이블을 업데이트합니다.

이미지 처리 워크플로우

DynamoDB 테이블이 업데이트되면 DynamoDB 스트림 Lambda 함수를 트리거하여 새로운 Step Functions 워크플로를 시작합니다. 다음은 워크플로에 대한 샘플 요청입니다.

{
  "Id": "621fa85a-38bb-4d98-a656-93bbbcf5477f",
  "S3Bucket": "<Image Bucket>",
  "InputS3Prefix": "image-files/<year>/<month>/<day>/<timestamp>",
  "OutputS3Prefix": "generated-image-files/<year>/<month>/<day>/<timestamp>",
  "StatusS3Prefix": "status-report-files/<year>/<month>/<day>/<timestamp>",
  "Prompt": "london city background",
  "NegativePrompt": "low quality, low resolution",
  "Mode": "PRECISE",
  "Images": [
    {
      "ImageName": "bus.png",
      "Labels": "Bus, Person"
    },
    {
      "ImageName": "cop.png",
      "Labels": "Person, Adult, Male, Man, Helmet, Jacket"
    },
    {
      "ImageName": "iguana-2.png",
      "Labels": "Lizard”
    },
    {
      "ImageName": "dog.png",
      "Labels": "Dog"
    }
  ]
}

이후 Step Functions 워크플로는 다음 세 단계를 수행합니다.

  1. 모든 이미지의 배경을 교체합니다.
  2. 상태 보고서를 생성합니다.
  3. Amazon SNS를 통해 이메일을 보냅니다.

다음 스크린샷은 Step Functions 워크플로를 보여줍니다.

AWS Step Functions 워크플로

각 단계를 더 자세히 살펴보겠습니다.

모든 이미지의 배경 교체

Step Functions는 분산 지도 병렬 하위 워크플로에서 각 이미지를 처리합니다. 분산 맵을 사용하면 높은 동시 처리가 가능합니다. 각 하위 워크플로에는 상위 워크플로의 실행 기록과 별도의 실행 기록이 있습니다.

Step Functions는 Amazon Bedrock을 위한 InvokeModel 최적화 API 작업. API는 최대 25MB의 요청과 응답을 허용합니다. 그러나 Step Functions의 상태 페이로드 입력 및 출력은 256KB로 제한됩니다. 더 큰 이미지를 지원하기 위해 솔루션은 S3 버킷을 사용합니다. InvokeModel API는 데이터를 읽고 결과를 씁니다. 다음은 InvokeModel Amazon Bedrock 통합을 위한 API:

{
    "ModelId": "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-image-generator-v1",
    "ContentType": "application/json",
    "Input": {  
        "S3Uri": “s3://<Image Bucket>/image-files/<year>/<month>/<day>/<timestamp>/<Image name>.json",
    },  
    "Output": {  
        "S3Uri": “s3://<Image Bucket>/generated-image-files/<year>/<month>/<day>/<timestamp>/<Image name>.json”
    } 
}

XNUMXD덴탈의 Input S3Uri 매개변수는 입력 데이터를 검색할 소스 위치를 지정합니다. 그만큼 Output S3Uri 매개변수는 API 응답을 작성할 대상을 지정합니다.

Lambda 함수는 요청 페이로드를 지정된 위치에 JSON 파일로 저장합니다. Input S3Uri 위치. NS InvokeModel API는 이 입력 페이로드를 사용하여 지정된 배경이 있는 이미지를 생성합니다.

{
    "taskType": "OUTPAINTING",
    "outPaintingParams": {
        "text": "london city background",
        "negativeText": "low quality, low resolution",        
        "image": "<base64-encoded string>",                         
        "maskPrompt": "Bus",                      
        "maskImage": "base64-encoded string",                             
        "outPaintingMode": "DEFAULT | PRECISE"                 
    },                                                 
    "imageGenerationConfig": {
        "numberOfImages": 1,
        "quality": "premium",
        "height": 1024,
        "width": 1024,
        "cfgScale": 8.0
    }
}

Titan Image Generator G1 모델은 이미지 생성을 위해 다음 매개변수를 지원합니다.

  • 작업 유형 – 이미지의 배경을 대체할 아웃페인팅 방법을 지정합니다.
  • 본문 – 배경을 정의하는 텍스트 프롬프트입니다.
  • 네거티브텍스트 – 이미지에 포함하지 않을 항목을 정의하는 텍스트 프롬프트입니다.
  • 마스크 프롬프트 – 마스크를 정의하는 텍스트 프롬프트입니다. 이는 최종 생성된 이미지에 유지하려는 레이블에 해당합니다.
  • 마스크이미지 – base64로 인코딩된 JPEG 또는 PNG 이미지.
  • outPaintingMode – 마스크 내부 픽셀 수정을 허용할지 여부를 지정합니다. DEFAULT를 사용하면 재구성된 배경과 일관성을 유지하기 위해 마스크 내부의 이미지를 수정할 수 있습니다. PRECISE는 마스크 내부의 이미지 수정을 방지합니다.
  • 이미지 수 – 생성할 이미지 수.
  • 품질 – 생성된 이미지의 품질: standard or premium.
  • cfgScale – 생성된 이미지가 프롬프트를 얼마나 강력하게 준수해야 하는지 지정합니다.
  • 신장 – 이미지의 높이(픽셀)입니다.
  • – 이미지의 너비(픽셀)입니다.

아마존 기반암 InvokeModel API는 인코딩된 이미지로 응답을 생성합니다. Output S3Uri 위치. 또 다른 Lambda 함수는 응답에서 이미지를 구문 분석하고 base64에서 디코딩한 후 다음 위치에 이미지 파일을 저장합니다. s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/.

마지막으로 하위 워크플로는 DynamoDB 테이블을 이미지 생성 상태로 업데이트하여 다음 중 하나로 표시합니다. 성공 or 실패한, 다음과 같은 세부정보를 포함합니다. ImageName, Cause, ErrorStatus.

상태 보고서 생성

이미지 생성 프로세스 후 Lambda 함수는 DynamoDB에서 상태 세부 정보를 검색합니다. 이러한 세부 정보를 JSON 형식의 포괄적인 상태 보고서로 동적으로 컴파일합니다. 그런 다음 생성된 상태 보고서를 다음 위치에 JSON 파일로 저장합니다. s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/. ITOps 팀은 이 보고서를 기존 알림 시스템과 통합하여 이미지 처리가 성공적으로 완료되었는지 추적할 수 있습니다. 비즈니스 사용자의 경우 이를 더 확장하여 CSV 형식의 보고서를 생성할 수 있습니다.

Amazon SNS를 통해 이메일 보내기

Step Functions는 Amazon SNS API 작업을 호출하여 이메일을 보냅니다. 이메일에는 상태 보고서의 S3 위치와 최종 이미지 파일을 포함한 세부 정보가 포함되어 있습니다. 다음은 샘플 알림 이메일입니다.

알림 이메일

결론

이 게시물에서는 Amazon Bedrock 및 Step Functions를 사용하여 대규모로 이미지 배경 변경을 자동화하는 방법을 보여주는 샘플 솔루션의 개요를 제공했습니다. 또한 솔루션의 각 요소에 대해서도 자세히 설명했습니다. Amazon Bedrock, Distributed Map 및 Titan Image Generator G1 모델과의 Step Functions 최적화 통합을 사용하여 솔루션은 이미지의 배경을 병렬로 효율적으로 교체하여 생산성과 확장성을 향상시킵니다.

솔루션을 배포하려면 다음 지침을 참조하세요. GitHub 저장소.

자료

Amazon Bedrock에 대해 자세히 알아보려면 다음 리소스를 참조하십시오.

Titan Image Generator G1 모델에 대해 자세히 알아보려면 다음 리소스를 참조하세요.

Step Functions와 함께 Amazon Bedrock을 사용하는 방법에 대해 자세히 알아보려면 다음 리소스를 참조하십시오.


저자에 관하여

체탄 마크바나 Amazon Web Services의 수석 솔루션 아키텍트입니다. 그는 AWS 파트너 및 고객과 협력하여 확장 가능한 아키텍처를 구축하고 AWS 서비스 채택을 촉진하기 위한 전략을 구현하기 위한 아키텍처 지침을 제공합니다. 그는 기술 애호가이자 생성 AI, 서버리스 및 DevOps에 대한 핵심 관심 분야를 가진 구축자입니다. 업무 외에는 공연 관람, 여행, 음악 감상을 즐깁니다. 

spot_img

최신 인텔리전스

spot_img