Tự động hóa quy trình thay đổi hình nền bằng Amazon Bedrock và AWS Step Functions | Dịch vụ web của Amazon

Tự động hóa quy trình thay đổi hình nền bằng Amazon Bedrock và AWS Step Functions | Dịch vụ web của Amazon

Nhiều khách hàng, bao gồm cả những người làm trong lĩnh vực quảng cáo sáng tạo, truyền thông và giải trí, thương mại điện tử và thời trang, thường có nhu cầu thay đổi nền trong một số lượng lớn hình ảnh. Thông thường, điều này liên quan đến việc chỉnh sửa thủ công từng hình ảnh bằng phần mềm ảnh. Việc này có thể tốn rất nhiều công sức, đặc biệt đối với những lô hình ảnh lớn. Tuy nhiên, nền tảng AmazonChức năng bước AWS giúp việc tự động hóa quy trình này trên quy mô lớn trở nên đơn giản.

Amazon Bedrock cung cấp mô hình nền tảng AI tổng quát Trình tạo hình ảnh Amazon Titan G1, có thể tự động thay đổi nền của hình ảnh bằng kỹ thuật gọi là vẽ ngoài. Step Functions cho phép bạn tạo quy trình làm việc tự động kết nối liền mạch với Amazon Bedrock và các dịch vụ AWS khác. Cùng với nhau, Amazon Bedrock và Step Functions hợp lý hóa toàn bộ quá trình tự động thay đổi hình nền trên nhiều hình ảnh.

Bài đăng này giới thiệu một giải pháp giúp đơn giản hóa quá trình thay đổi hình nền trong nhiều hình ảnh. Bằng cách khai thác khả năng của trí tuệ nhân tạo với Amazon Bedrock và mô hình Titan Image Generator G1, kết hợp với Step Functions, giải pháp này tạo ra hình ảnh có nền mong muốn một cách hiệu quả. Bài đăng này cung cấp cái nhìn sâu sắc về hoạt động bên trong của giải pháp và giúp bạn hiểu các lựa chọn thiết kế được thực hiện để xây dựng giải pháp tùy chỉnh của riêng mình.

Xem Kho GitHub để được hướng dẫn chi tiết triển khai giải pháp này.

Tổng quan về giải pháp

Hãy xem cách giải pháp này hoạt động ở cấp độ cao trước khi đi sâu hơn vào các thành phần cụ thể và dịch vụ AWS được sử dụng. Sơ đồ sau đây cung cấp cái nhìn đơn giản về kiến ​​trúc giải pháp và nêu bật các thành phần chính.

giải pháp xây dựng

Quy trình làm việc bao gồm các bước sau:

  1. Người dùng tải nhiều hình ảnh lên một Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) thông qua ứng dụng web Streamlit.
  2. Ứng dụng web Streamlit gọi một Cổng API Amazon Điểm cuối API REST được tích hợp với Nhận thức lại Amazon API DetectLabels, phát hiện nhãn cho mỗi hình ảnh.
  3. Sau khi gửi, ứng dụng web Streamlit sẽ cập nhật một Máy phát điện Amazon bảng với các chi tiết hình ảnh.
  4. Bản cập nhật DynamoDB kích hoạt một AWS Lambda để bắt đầu quy trình làm việc của Step Functions.
  5. Quy trình làm việc Step Functions chạy các bước sau cho mỗi hình ảnh:
    5.1 Xây dựng trọng tải yêu cầu cho Amazon Bedrock InvokeModel API.
    5.2 Gọi Amazon Bedrock InvokeModel Hành động API.
    5.3 Phân tích hình ảnh từ phản hồi và lưu nó vào vị trí S3.
    5.4 Cập nhật trạng thái hình ảnh trong bảng DynamoDB.
  6. Quy trình làm việc của Step Functions gọi hàm Lambda để tạo báo cáo trạng thái.
  7. Quy trình làm việc sẽ gửi email bằng cách sử dụng Dịch vụ thông báo đơn giản của Amazon (SNS của Amazon).

Như được hiển thị trong ảnh chụp màn hình sau, ứng dụng web Streamlit cho phép bạn tải hình ảnh lên và nhập lời nhắc văn bản để chỉ định hình nền mong muốn, lời nhắc phủ định và chế độ vẽ ngoài để tạo hình ảnh. Bạn cũng có thể xem và xóa các nhãn không mong muốn liên quan đến từng hình ảnh được tải lên mà bạn không muốn giữ lại trong các hình ảnh được tạo cuối cùng.

Ứng dụng web hợp lý

Trong ví dụ này, lời nhắc về nền là “Nền thành phố Luân Đôn”. Quá trình tự động hóa tạo ra hình ảnh mới dựa trên hình ảnh được tải lên ban đầu với nền là London.

Hình ảnh được tạo

Tải lên hình ảnh và ứng dụng web hợp lý

Ứng dụng web Streamlit đóng vai trò là giao diện người dùng cho giải pháp này. Để bảo vệ ứng dụng khỏi bị truy cập trái phép, nó tích hợp với một Nhận thức về Amazon nhóm người dùng. Cổng API sử dụng một Người ủy quyền Amazon Cognito để xác thực các yêu cầu. Ứng dụng web hoàn thành các bước sau:

  1. Đối với mỗi hình ảnh được chọn, nó sẽ truy xuất nhãn thông qua Amazon Rekognition bằng cách sử dụng điểm cuối API REST của Cổng API.
  2. Sau khi gửi, ứng dụng sẽ tải hình ảnh lên bộ chứa S3.
  3. Ứng dụng cập nhật bảng DynamoDB với các tham số, tên hình ảnh và nhãn liên quan cho mỗi hình ảnh bằng cách sử dụng điểm cuối API REST API của Cổng API khác.

Quy trình xử lý hình ảnh

Khi bảng DynamoDB được cập nhật, Luồng DynamoDB kích hoạt hàm Lambda để bắt đầu quy trình làm việc Step Functions mới. Sau đây là yêu cầu mẫu cho quy trình làm việc:

{
  "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"
    }
  ]
}

Dòng công việc Step Functions sau đó sẽ thực hiện ba bước sau:

  1. Thay nền cho tất cả hình ảnh.
  2. Tạo báo cáo trạng thái.
  3. Gửi email qua Amazon SNS.

Ảnh chụp màn hình sau đây minh họa quy trình làm việc của Step Functions.

Các chức năng từng bước AWS Quy trình làm việc

Chúng ta hãy xem xét từng bước chi tiết hơn.

Thay nền cho tất cả hình ảnh

Step Functions sử dụng một Bản đồ phân phối để xử lý từng hình ảnh theo quy trình công việc con song song. Bản đồ phân tán cho phép xử lý đồng thời cao. Mỗi luồng công việc con có lịch sử chạy riêng biệt với lịch sử chạy của luồng công việc gốc.

Step Functions sử dụng một Hành động API được tối ưu hóa InvokeModel dành cho Amazon Bedrock. API chấp nhận các yêu cầu và phản hồi có dung lượng lên tới 25 MB. Tuy nhiên, Step Functions có giới hạn 256 KB đối với đầu vào và đầu ra tải trọng trạng thái. Để hỗ trợ hình ảnh lớn hơn, giải pháp sử dụng bộ chứa S3 trong đó InvokeModel API đọc dữ liệu từ đó và ghi kết quả vào. Sau đây là cấu hình cho InvokeModel API để tích hợp Amazon Bedrock:

{
    "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”
    } 
}

Sản phẩm Input S3Uri tham số chỉ định vị trí nguồn để lấy dữ liệu đầu vào. Các Output S3Uri tham số chỉ định đích để viết phản hồi API.

Hàm Lambda lưu trọng tải yêu cầu dưới dạng tệp JSON trong phạm vi được chỉ định Input S3Uri vị trí. Các InvokeModel API sử dụng tải trọng đầu vào này để tạo hình ảnh với nền được chỉ định:

{
    "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
    }
}

Mẫu Titan Image Generator G1 hỗ trợ các thông số sau để tạo hình ảnh:

  • loại nhiệm vụ – Chỉ định phương pháp outpainting để thay thế nền của ảnh.
  • văn bản – Lời nhắc văn bản để xác định nền.
  • văn bản tiêu cực – Lời nhắc văn bản để xác định những gì không được đưa vào hình ảnh.
  • mặt nạNhắc – Lời nhắc văn bản xác định mặt nạ. Nó tương ứng với các nhãn mà bạn muốn giữ lại trong hình ảnh được tạo cuối cùng.
  • mặt nạHình ảnh – Hình ảnh JPEG hoặc PNG được mã hóa ở base64.
  • outPaintingMode – Chỉ định có cho phép sửa đổi các pixel bên trong mặt nạ hay không. MẶC ĐỊNH cho phép sửa đổi hình ảnh bên trong mặt nạ để giữ cho nó phù hợp với nền được xây dựng lại. CHÍNH XÁC ngăn chặn việc sửa đổi hình ảnh bên trong mặt nạ.
  • sốHình ảnh – Số lượng hình ảnh cần tạo.
  • chất lượng – Chất lượng hình ảnh được tạo ra: standard or premium.
  • cfgTỷ lệ – Chỉ định mức độ hình ảnh được tạo phải tuân thủ lời nhắc.
  • cao – Chiều cao của hình ảnh tính bằng pixel.
  • chiều rộng – Chiều rộng của hình ảnh tính bằng pixel.

Nền đá Amazon InvokeModel API tạo phản hồi bằng hình ảnh được mã hóa trong Output S3Uri vị trí. Một hàm Lambda khác phân tích hình ảnh từ phản hồi, giải mã nó từ base64 và lưu tệp hình ảnh ở vị trí sau: s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/.

Cuối cùng, quy trình công việc con cập nhật bảng DynamoDB với trạng thái tạo hình ảnh, đánh dấu bảng đó là Kế nhiệm or thất bại, và bao gồm các chi tiết như ImageName, Cause, ErrorStatus.

Tạo báo cáo trạng thái

Sau quá trình tạo hình ảnh, hàm Lambda sẽ truy xuất chi tiết trạng thái từ DynamoDB. Nó tự động biên dịch các chi tiết này thành một báo cáo trạng thái toàn diện ở định dạng JSON. Sau đó, nó lưu báo cáo trạng thái đã tạo một tệp JSON ở vị trí sau: s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/. Nhóm ITOps có thể tích hợp báo cáo này với hệ thống thông báo hiện có của họ để theo dõi xem quá trình xử lý hình ảnh có hoàn tất thành công hay không. Đối với người dùng doanh nghiệp, bạn có thể mở rộng thêm điều này để tạo báo cáo ở định dạng CSV.

Gửi email qua Amazon SNS

Step Functions gọi hành động API Amazon SNS để gửi email. Email chứa thông tin chi tiết bao gồm vị trí S3 cho báo cáo trạng thái và tệp hình ảnh cuối cùng. Sau đây là email thông báo mẫu.

Email thông bao

Kết luận

Trong bài đăng này, chúng tôi đã cung cấp thông tin tổng quan về một giải pháp mẫu thể hiện khả năng tự động hóa việc thay đổi nền hình ảnh trên quy mô lớn bằng cách sử dụng Amazon Bedrock và Step Functions. Chúng tôi cũng đã giải thích chi tiết từng yếu tố của giải pháp. Bằng cách sử dụng tích hợp được tối ưu hóa Step Functions với Amazon Bedrock, Distributed Map và mô hình Titan Image Generator G1, giải pháp này sẽ thay thế song song nền của hình ảnh một cách hiệu quả, nâng cao năng suất và khả năng mở rộng.

Để triển khai giải pháp, hãy tham khảo hướng dẫn trong Kho GitHub.

Thông tin

Để tìm hiểu thêm về Amazon Bedrock, hãy xem các tài nguyên sau:

Để tìm hiểu thêm về mẫu Titan Image Generator G1, hãy xem các tài nguyên sau:

Để tìm hiểu thêm về cách sử dụng Amazon Bedrock với Step Functions, hãy xem các tài nguyên sau:


Lưu ý

Tự động hóa quy trình thay đổi hình nền bằng Amazon Bedrock và AWS Step Functions | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.Chetan Makvana là Kiến trúc sư giải pháp cấp cao của Amazon Web Services. Anh làm việc với các đối tác và khách hàng của AWS để cung cấp cho họ hướng dẫn về kiến ​​trúc nhằm xây dựng kiến ​​trúc có thể mở rộng và triển khai các chiến lược nhằm thúc đẩy việc áp dụng các dịch vụ AWS. Anh ấy là một người đam mê công nghệ và là một nhà xây dựng với lĩnh vực quan tâm cốt lõi là AI tổng hợp, serverless và DevOps. Ngoài công việc, anh ấy thích xem các chương trình, đi du lịch và âm nhạc. 

Dấu thời gian:

Thêm từ Học máy AWS