ทำให้กระบวนการเปลี่ยนพื้นหลังรูปภาพเป็นแบบอัตโนมัติโดยใช้ Amazon Bedrock และ AWS Step Functions | อเมซอนเว็บเซอร์วิส

ทำให้กระบวนการเปลี่ยนพื้นหลังรูปภาพเป็นแบบอัตโนมัติโดยใช้ Amazon Bedrock และ AWS Step Functions | อเมซอนเว็บเซอร์วิส

ลูกค้าจำนวนมาก รวมถึงผู้ที่อยู่ในแวดวงโฆษณาเชิงสร้างสรรค์ สื่อและความบันเทิง อีคอมเมิร์ซ และแฟชั่น มักจะจำเป็นต้องเปลี่ยนพื้นหลังในรูปภาพจำนวนมาก โดยปกติแล้ว การดำเนินการนี้เกี่ยวข้องกับการแก้ไขภาพแต่ละภาพด้วยตนเองด้วยซอฟต์แวร์ภาพถ่าย การดำเนินการนี้อาจต้องใช้ความพยายามอย่างมาก โดยเฉพาะอย่างยิ่งสำหรับภาพจำนวนมาก อย่างไรก็ตาม, อเมซอน เบดร็อค และ ฟังก์ชันขั้นตอนของ AWS ทำให้กระบวนการนี้เป็นอัตโนมัติในวงกว้างได้อย่างตรงไปตรงมา

Amazon Bedrock นำเสนอโมเดลรากฐาน AI เชิงสร้างสรรค์ Amazon Titan Image Generator G1ซึ่งสามารถเปลี่ยนพื้นหลังของภาพโดยอัตโนมัติโดยใช้เทคนิคที่เรียกว่า ภาพวาด. Step Functions ช่วยให้คุณสร้างเวิร์กโฟลว์อัตโนมัติที่เชื่อมต่อกับ Amazon Bedrock และบริการของ AWS อื่นๆ ได้อย่างราบรื่น Amazon Bedrock และ Step Functions ร่วมกันปรับปรุงกระบวนการทั้งหมดในการเปลี่ยนพื้นหลังโดยอัตโนมัติในหลายภาพ

โพสต์นี้จะแนะนำโซลูชันที่ทำให้กระบวนการเปลี่ยนพื้นหลังในหลายภาพง่ายขึ้น ด้วยการใช้ศักยภาพของ AI กำเนิด ด้วย Amazon Bedrock และรุ่น Titan Image Generator G1 เมื่อรวมกับ Step Functions โซลูชันนี้จะสร้างภาพที่มีพื้นหลังที่ต้องการได้อย่างมีประสิทธิภาพ โพสต์นี้ให้ข้อมูลเชิงลึกเกี่ยวกับการทำงานภายในของโซลูชัน และช่วยให้คุณเข้าใจตัวเลือกการออกแบบที่สร้างขึ้นเพื่อสร้างโซลูชันแบบกำหนดเองนี้

ดู พื้นที่เก็บข้อมูล GitHub สำหรับคำแนะนำโดยละเอียดเกี่ยวกับการปรับใช้โซลูชันนี้

ภาพรวมโซลูชัน

มาดูวิธีการทำงานของโซลูชันในระดับสูง ก่อนที่จะเจาะลึกลงไปในองค์ประกอบเฉพาะและบริการของ AWS ที่ใช้ แผนภาพต่อไปนี้แสดงมุมมองแบบง่ายของสถาปัตยกรรมโซลูชันและเน้นองค์ประกอบหลัก

สถาปัตยกรรมโซลูชัน

เวิร์กโฟลว์ประกอบด้วยขั้นตอนต่อไปนี้:

  1. ผู้ใช้อัปโหลดภาพหลายภาพลงในไฟล์ บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (Amazon S3) เก็บข้อมูลผ่านแอปพลิเคชันเว็บ Streamlit
  2. เว็บแอปพลิเคชัน Streamlit เรียกไฟล์ Amazon API Gateway Amazon จุดสิ้นสุด REST API ที่รวมเข้ากับ ความหมายของ Amazon DetectLabels APIซึ่งตรวจจับป้ายกำกับสำหรับแต่ละภาพ
  3. เมื่อส่งแล้ว แอปพลิเคชันเว็บ Streamlit จะอัปเดตและ อเมซอน ไดนาโมดีบี ตารางพร้อมรายละเอียดรูปภาพ
  4. การอัปเดต DynamoDB จะทริกเกอร์ AWS แลมบ์ดา ซึ่งเริ่มเวิร์กโฟลว์ Step Functions
  5. เวิร์กโฟลว์ Step Functions รันขั้นตอนต่อไปนี้สำหรับแต่ละภาพ:
    5.1 สร้างเพย์โหลดคำขอสำหรับ Amazon Bedrock InvokeModel API
    5.2 เรียกใช้ Amazon Bedrock InvokeModel การกระทำของ API
    5.3 แยกวิเคราะห์รูปภาพจากการตอบกลับและบันทึกลงในตำแหน่ง S3
    5.4 อัปเดตสถานะรูปภาพในตาราง DynamoDB
  6. เวิร์กโฟลว์ Step Functions เรียกใช้ฟังก์ชัน Lambda เพื่อสร้างรายงานสถานะ
  7. ขั้นตอนการทำงานส่งอีเมลโดยใช้ บริการแจ้งเตือนแบบง่ายของ Amazon (อเมซอน SNS).

ดังที่แสดงในภาพหน้าจอต่อไปนี้ เว็บแอปพลิเคชัน Streamlit ช่วยให้คุณสามารถอัปโหลดรูปภาพและป้อนข้อความแจ้งเพื่อระบุพื้นหลังที่ต้องการ ข้อความแจ้งเชิงลบ และโหมดการวาดภาพภายนอกสำหรับการสร้างภาพ คุณยังสามารถดูและลบป้ายกำกับที่ไม่ต้องการที่เกี่ยวข้องกับรูปภาพที่อัปโหลดแต่ละภาพที่คุณไม่ต้องการเก็บไว้ในรูปภาพที่สร้างขึ้นในขั้นสุดท้าย

Streamlit เว็บแอปพลิเคชัน

ในตัวอย่างนี้ ข้อความแจ้งสำหรับพื้นหลังคือ "พื้นหลังเมืองลอนดอน" กระบวนการอัตโนมัติจะสร้างภาพใหม่ตามภาพต้นฉบับที่อัปโหลดโดยมีลอนดอนเป็นพื้นหลัง

รูปภาพที่สร้างขึ้น

Streamlit เว็บแอปพลิเคชันและการอัพโหลดรูปภาพ

เว็บแอปพลิเคชัน Streamlit ทำหน้าที่เป็นส่วนหน้าสำหรับโซลูชันนี้ เพื่อป้องกันแอปพลิเคชันจากการเข้าถึงโดยไม่ได้รับอนุญาต จึงรวมเข้ากับ Amazon Cognito Co กลุ่มผู้ใช้ API Gateway ใช้ ผู้อนุญาต Amazon Cognito เพื่อตรวจสอบคำขอ เว็บแอปพลิเคชันทำตามขั้นตอนต่อไปนี้:

  1. สำหรับรูปภาพที่เลือกแต่ละภาพ ระบบจะดึงป้ายกำกับผ่าน Amazon Rekognition โดยใช้ตำแหน่งข้อมูล API Gateway REST API
  2. เมื่อส่งแล้ว แอปพลิเคชันจะอัปโหลดรูปภาพไปยังบัคเก็ต S3
  3. แอปพลิเคชันอัปเดตตาราง DynamoDB ด้วยพารามิเตอร์ที่เกี่ยวข้อง ชื่อรูปภาพ และป้ายกำกับที่เกี่ยวข้องสำหรับแต่ละรูปภาพโดยใช้ตำแหน่งข้อมูล API Gateway REST API อื่น

ขั้นตอนการประมวลผลภาพ

เมื่อมีการอัพเดตตาราง 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 ใช้ไฟล์ การดำเนินการ API ที่ปรับให้เหมาะสมที่สุด Involved Model สำหรับ Amazon Bedrock. API ยอมรับคำขอและการตอบกลับที่มีขนาดสูงสุด 25 MB อย่างไรก็ตาม Step Functions มีขีดจำกัด 256 KB สำหรับอินพุตและเอาต์พุตเพย์โหลดสถานะ เพื่อรองรับรูปภาพขนาดใหญ่ โซลูชันจะใช้บัคเก็ต S3 โดยที่ InvokeModel API อ่านข้อมูลและเขียนผลลัพธ์ไปที่ ต่อไปนี้คือการกำหนดค่าสำหรับ InvokeModel API สำหรับการผสานรวม 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”
    } 
}

พื้นที่ 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 รองรับพารามิเตอร์ต่อไปนี้สำหรับการสร้างภาพ:

  • ประเภทงาน – ระบุวิธีการทาสีภายนอกเพื่อแทนที่พื้นหลังของรูปภาพ
  • ข้อความ – ข้อความแจ้งเพื่อกำหนดพื้นหลัง
  • ข้อความเชิงลบ – ข้อความแจ้งเพื่อกำหนดสิ่งที่ไม่ควรรวมไว้ในรูปภาพ
  • หน้ากากพร้อมท์ – ข้อความแจ้งที่กำหนดมาสก์ ซึ่งสอดคล้องกับป้ายกำกับที่คุณต้องการเก็บไว้ในรูปภาพที่สร้างขึ้นในขั้นสุดท้าย
  • หน้ากากรูปภาพ – รูปภาพ JPEG หรือ PNG ที่เข้ารหัสใน base64
  • ออกโหมดจิตรกรรม – ระบุว่าจะอนุญาตให้แก้ไขพิกเซลภายในมาสก์หรือไม่ ค่าเริ่มต้น อนุญาตให้แก้ไขรูปภาพภายในมาสก์เพื่อให้สอดคล้องกับพื้นหลังที่สร้างขึ้นใหม่ 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, Errorและ Status.

สร้างรายงานสถานะ

หลังจากกระบวนการสร้างอิมเมจ ฟังก์ชัน 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 นอกจากนี้เรายังอธิบายแต่ละองค์ประกอบของโซลูชันโดยละเอียดอีกด้วย ด้วยการใช้การผสานรวมที่ปรับให้เหมาะสมของ Step Functions กับ Amazon Bedrock, Distributed Map และรุ่น Titan Image Generator G1 โซลูชันจะแทนที่พื้นหลังของรูปภาพแบบขนานได้อย่างมีประสิทธิภาพ ช่วยเพิ่มประสิทธิภาพการทำงานและความสามารถในการปรับขนาด

หากต้องการปรับใช้โซลูชัน โปรดดูคำแนะนำใน พื้นที่เก็บข้อมูล GitHub.

แหล่งข้อมูล

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Amazon Bedrock โปรดดูแหล่งข้อมูลต่อไปนี้:

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับรุ่น Titan Image Generator G1 โปรดดูแหล่งข้อมูลต่อไปนี้:

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการใช้ Amazon Bedrock พร้อม Step Functions โปรดดูแหล่งข้อมูลต่อไปนี้:


เกี่ยวกับผู้เขียน

ทำให้กระบวนการเปลี่ยนพื้นหลังรูปภาพเป็นแบบอัตโนมัติโดยใช้ Amazon Bedrock และ AWS Step Functions | Amazon Web Services PlatoBlockchain ข้อมูลอัจฉริยะ ค้นหาแนวตั้ง AI.เชตัน มาควานา เป็นสถาปนิกโซลูชันอาวุโสของ Amazon Web Services เขาทำงานร่วมกับคู่ค้าและลูกค้าของ AWS เพื่อให้คำแนะนำด้านสถาปัตยกรรมสำหรับการสร้างสถาปัตยกรรมที่ปรับขนาดได้ และปรับใช้กลยุทธ์เพื่อขับเคลื่อนการนำบริการของ AWS ไปใช้ เขาเป็นผู้ชื่นชอบเทคโนโลยีและเป็นผู้สร้างที่มีความสนใจหลักเกี่ยวกับ generative AI, serverless และ DevOps นอกเหนือจากงาน เขาชอบดูการแสดง การเดินทาง และดนตรี 

ประทับเวลา:

เพิ่มเติมจาก AWS Machine Learning AWS