با استفاده از Amazon SageMaker JumpStart، تصاویر را با Stable Diffusion نقاشی کنید

با استفاده از Amazon SageMaker JumpStart، تصاویر را با Stable Diffusion نقاشی کنید

در نوامبر 2022، ما اعلام کرد که مشتریان AWS می توانند با آن تصاویری از متن تولید کنند انتشار پایدار مدل هایی با استفاده از Amazon SageMaker JumpStart. امروز، ما مشتاق معرفی ویژگی جدیدی هستیم که به کاربران امکان می دهد تصاویر را با مدل های Stable Diffusion نقاشی کنند. Inpainting به فرآیند جایگزینی بخشی از یک تصویر با تصویر دیگری بر اساس یک دستور متنی اشاره دارد. با ارائه تصویر اصلی، یک تصویر ماسک که قسمتی را که باید جایگزین شود، و یک پیام متنی، مدل انتشار پایدار می‌تواند تصویر جدیدی تولید کند که ناحیه پوشانده شده را با شی، موضوع یا محیطی که در اعلان متنی توضیح داده شده جایگزین می‌کند.

می‌توانید از inpainting برای بازیابی تصاویر تخریب‌شده یا ایجاد تصاویر جدید با موضوعات یا سبک‌های جدید در بخش‌های خاص استفاده کنید. در قلمرو طراحی معماری، رنگ‌سازی Stable Diffusion را می‌توان برای تعمیر نواحی ناقص یا آسیب‌دیده نقشه‌های ساختمان به کار برد و اطلاعات دقیقی را برای خدمه ساخت‌وساز فراهم کرد. در مورد تصویربرداری بالینی MRI، سر بیمار باید مهار شود، که ممکن است منجر به نتایج پایین‌تر به دلیل آرتیفکت برش شود که باعث از بین رفتن اطلاعات یا کاهش دقت تشخیصی می‌شود. رنگ آمیزی تصویر می تواند به طور موثری به کاهش این نتایج غیربهینه کمک کند.

در این پست راهنمای جامعی در مورد استقرار و اجرای استنتاج با استفاده از مدل Inpainting Stable Diffusion به دو روش از طریق رابط کاربری (UI) JumpStart در Amazon SageMaker Studio، و به صورت برنامه ای از طریق API های JumpStart موجود در SageMaker Python SDK.

بررسی اجمالی راه حل

تصاویر زیر نمونه هایی از inpainting هستند. تصاویر اصلی در سمت چپ، تصویر ماسک در مرکز و تصویر نقاشی شده تولید شده توسط مدل در سمت راست قرار دارند. برای مثال اول، مدل با تصویر اصلی، یک تصویر ماسک، و پیام متنی «گربه سفید، چشمان آبی، ژاکت پوشیده، دراز کشیده در پارک» و همچنین پیام منفی «پاهای بد کشیده شده» ارائه شد. ” برای مثال دوم، دستور متنی این بود: «یک مدل زن به زیبایی یک لباس بلند غیررسمی با ترکیبی از رنگ‌های صورتی و آبی را به نمایش می‌گذارد.»

تصاویر را با انتشار پایدار با استفاده از آمازون SageMaker JumpStart PlatoBlockchain Data Intelligence رنگ کنید. جستجوی عمودی Ai.

اجرای مدل های بزرگ مانند Stable Diffusion به اسکریپت های استنتاج سفارشی نیاز دارد. شما باید تست های سرتاسری را اجرا کنید تا مطمئن شوید که اسکریپت، مدل و نمونه مورد نظر به طور موثر با هم کار می کنند. JumpStart این فرآیند را با ارائه اسکریپت های آماده برای استفاده که به طور قوی آزمایش شده اند، ساده می کند. شما می توانید با یک کلیک از طریق استودیو UI یا با خطوط بسیار کمی از کد از طریق به این اسکریپت ها دسترسی داشته باشید API های JumpStart.

بخش‌های زیر شما را از طریق استقرار مدل و اجرای استنتاج با استفاده از رابط کاربری Studio یا JumpStart API راهنمایی می‌کنند.

توجه داشته باشید که با استفاده از این مدل، با مجوز CreativeML Open RAIL++-M.

از طریق رابط کاربری Studio به JumpStart دسترسی پیدا کنید

در این بخش، استقرار مدل‌های JumpStart را با استفاده از رابط کاربری Studio نشان می‌دهیم. ویدئوی همراه، مکان یابی مدل از پیش آموزش‌دیده‌شده رنگ‌آمیزی Stable Diffusion در JumpStart و استقرار آن را نشان می‌دهد. صفحه مدل جزئیات ضروری در مورد مدل و استفاده از آن را ارائه می دهد. برای انجام استنتاج، از نوع نمونه ml.p3.2xlarge استفاده می‌کنیم که شتاب GPU مورد نیاز را برای استنتاج با تأخیر کم با قیمتی مقرون به صرفه ارائه می‌دهد. پس از پیکربندی نمونه میزبانی SageMaker، را انتخاب کنید گسترش. نقطه پایانی عملیاتی خواهد شد و برای رسیدگی به درخواست‌های استنتاج در حدود 10 دقیقه آماده می‌شود.

JumpStart یک نوت بوک نمونه ارائه می دهد که می تواند به سرعت بخشیدن به زمان لازم برای اجرای استنتاج در نقطه پایانی تازه ایجاد شده کمک کند. برای دسترسی به نوت بوک در استودیو، را انتخاب کنید نوت بوک را باز کنید در از Endpoint از Studio استفاده کنید بخش از صفحه نقطه پایانی مدل

از JumpStart به صورت برنامه نویسی با SageMaker SDK استفاده کنید

استفاده از JumpStart UI شما را قادر می سازد تا یک مدل از پیش آموزش دیده را به صورت تعاملی و تنها با چند کلیک اجرا کنید. از طرف دیگر، می‌توانید با استفاده از APIهای یکپارچه شده در SageMaker Python SDK، از مدل‌های JumpStart به صورت برنامه‌نویسی استفاده کنید.

در این بخش، یک مدل از پیش آموزش‌دیده مناسب را در JumpStart انتخاب می‌کنیم، این مدل را در یک نقطه پایانی SageMaker مستقر می‌کنیم، و استنتاج را روی نقطه پایانی مستقر شده انجام می‌دهیم، همه با استفاده از SageMaker Python SDK. مثال‌های زیر حاوی قطعه‌های کد هستند. برای دسترسی به کد کامل با تمام مراحل موجود در این نمایش به ادامه مطلب مراجعه کنید مقدمه ای بر ویرایش تصویر JumpStart – Inpainting انتشار پایدار نمونه دفترچه یادداشت

مدل از پیش آموزش دیده را مستقر کنید

SageMaker از کانتینرهای Docker برای کارهای مختلف ساخت و زمان اجرا استفاده می کند. JumpStart از ظروف یادگیری عمیق SageMaker (DLC) که مختص چارچوب هستند. ابتدا بسته‌های اضافی و همچنین اسکریپت‌هایی را برای رسیدگی به آموزش و استنتاج برای کار انتخاب‌شده واکشی می‌کنیم. سپس مصنوعات مدل از پیش آموزش دیده به طور جداگانه با آنها واکشی می شوند model_uris، که انعطاف پذیری را برای پلتفرم فراهم می کند. این اجازه می دهد تا چندین مدل از پیش آموزش دیده با یک اسکریپت استنتاج استفاده شود. کد زیر این فرآیند را نشان می دهد:

model_id, model_version = "model-inpainting-stabilityai-stable-diffusion-2-inpainting-fp16", "*"
# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, # automatically inferred from model_id image_scope="inference", model_id=model_id, model_version=model_version, instance_type=inference_instance_type,
)
# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="inference") base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

در مرحله بعد، ما آن منابع را به a مدل SageMaker نمونه و استقرار یک نقطه پایانی:

# Create the SageMaker model instance
# Create the SageMaker model instance
model = Model( image_uri=deploy_image_uri, source_dir=deploy_source_uri, model_data=base_model_uri, entry_point="inference.py", # entry point file in source_dir and present in deploy_source_uri role=aws_role, predictor_cls=Predictor, name=endpoint_name,
) # deploy the Model - note that we need to pass the Predictor class when we deploy the model through the Model class,
# in order to run inference through the SageMaker API
base_model_predictor = model.deploy( initial_instance_count=1, instance_type=inference_instance_type, predictor_cls=Predictor, endpoint_name=endpoint_name,
)

پس از استقرار مدل، می‌توانیم پیش‌بینی‌های بلادرنگ را از آن به دست آوریم!

ورودی

ورودی تصویر پایه، تصویر ماسک، و اعلان توصیف کننده سوژه، شی یا محیطی است که باید در قسمت پوشانده شده جایگزین شود. ایجاد تصویر ماسک عالی برای جلوه های درون نقاشی شامل چندین روش برتر است. با یک اعلان خاص شروع کنید و از آزمایش تنظیمات مختلف Stable Diffusion برای دستیابی به نتایج دلخواه دریغ نکنید. از تصویر ماسکی استفاده کنید که شباهت زیادی به تصویری که می‌خواهید نقاشی کنید. این رویکرد به الگوریتم نقاشی درونی در تکمیل بخش‌های از دست رفته تصویر کمک می‌کند و در نتیجه ظاهری طبیعی‌تر ایجاد می‌کند. تصاویر با کیفیت بالا عموماً نتایج بهتری دارند، بنابراین مطمئن شوید که تصاویر پایه و ماسک شما کیفیت خوبی دارند و شبیه یکدیگر هستند. علاوه بر این، برای حفظ جزئیات و به حداقل رساندن مصنوعات، یک تصویر ماسک بزرگ و صاف را انتخاب کنید.

نقطه پایانی تصویر پایه و ماسک را به عنوان مقادیر خام RGB یا یک تصویر کدگذاری شده base64 می پذیرد. کنترل کننده استنتاج تصویر را بر اساس رمزگشایی می کند content_type:

  • برای content_type = “application/json”، بار ورودی باید یک فرهنگ لغت JSON با مقادیر خام RGB، اعلان متنی و سایر پارامترهای اختیاری باشد.
  • برای content_type = “application/json;jpeg”، بار ورودی باید یک فرهنگ لغت JSON با تصویر کدگذاری شده base64، یک اعلان متنی و سایر پارامترهای اختیاری باشد.

تولید

نقطه پایانی می تواند دو نوع خروجی تولید کند: یک تصویر RGB با کدگذاری Base64 یا یک فرهنگ لغت JSON از تصاویر تولید شده. شما می توانید با تنظیم فرمت خروجی مورد نظر خود را مشخص کنید accept سربرگ به "application/json" or "application/json;jpeg" به ترتیب برای یک تصویر JPEG یا base64.

  • برای accept = “application/json”، نقطه پایانی فرهنگ لغت JSON را با مقادیر RGB برای تصویر برمی گرداند
  • برای accept = “application/json;jpeg”، نقطه پایانی یک فرهنگ لغت JSON را با تصویر JPEG به صورت بایت های کدگذاری شده با کدگذاری base64.b64 برمی گرداند.

توجه داشته باشید که ارسال یا دریافت محموله با مقادیر خام RGB ممکن است به محدودیت های پیش فرض برای بار ورودی و اندازه پاسخ برسد. بنابراین توصیه می کنیم با تنظیم از تصویر کدگذاری شده base64 استفاده کنید content_type = “application/json;jpeg” و قبول = "application/json;jpeg".

کد زیر یک نمونه درخواست استنتاج است:

content_type = "application/json;jpeg" with open(input_img_file_name, "rb") as f: input_img_image_bytes = f.read()
with open(input_img_mask_file_name, "rb") as f: input_img_mask_image_bytes = f.read() encoded_input_image = base64.b64encode(bytearray(input_img_image_bytes)).decode()
encoded_mask = base64.b64encode(bytearray(input_img_mask_image_bytes)).decode() payload = { "prompt": "a white cat, blue eyes, wearing a sweater, lying in park", "image": encoded_input_image, "mask_image": encoded_mask, "num_inference_steps": 50, "guidance_scale": 7.5, "seed": 0, "negative_prompt": "poorly drawn feet",
} accept = "application/json;jpeg" def query(model_predictor, payload, content_type, accept): """Query the model predictor.""" query_response = model_predictor.predict( payload, { "ContentType": content_type, "Accept": accept, }, ) return query_response query_response = query(model_predictor, json.dumps(payload).encode("utf-8"), content_type, accept)
generated_images = parse_response(query_response)

پارامترهای پشتیبانی شده

مدل‌های رنگ‌آمیزی با انتشار پایدار از پارامترهای زیادی برای تولید تصویر پشتیبانی می‌کنند:

  • تصویر – تصویر اصلی
  • ماسک - تصویری که در آن قسمت سیاه شده در طول تولید تصویر بدون تغییر باقی می ماند و قسمت سفید جایگزین می شود.
  • سریع - یک دستور برای هدایت تولید تصویر. این می تواند یک رشته یا لیستی از رشته ها باشد.
  • num_inference_steps (اختیاری) - تعداد مراحل حذف نویز در طول تولید تصویر. مراحل بیشتر منجر به کیفیت بالاتر تصویر می شود. اگر مشخص شود، باید یک عدد صحیح مثبت باشد. توجه داشته باشید که مراحل استنتاج بیشتر منجر به زمان پاسخگویی طولانی تر می شود.
  • مقیاس_راهنما (اختیاری) - مقیاس راهنمایی بالاتر منجر به تصویری می شود که ارتباط نزدیک تری با اعلان دریافت می کند و کیفیت تصویر را از دست می دهد. اگر مشخص شده باشد، باید شناور باشد. guidance_scale<=1 نادیده گرفته می شود
  • negative_prompt (اختیاری) - این امر تولید تصویر را در برابر این درخواست هدایت می کند. اگر مشخص شده باشد، باید یک رشته یا لیستی از رشته ها باشد و با آن استفاده شود guidance_scale. اگر guidance_scale غیرفعال است، این نیز غیرفعال است. علاوه بر این، اگر درخواست لیستی از رشته ها باشد، negative_prompt همچنین باید لیستی از رشته ها باشد.
  • دانه (اختیاری) - این حالت تصادفی برای تکرارپذیری را ثابت می کند. اگر مشخص شده باشد، باید یک عدد صحیح باشد. هر زمان که از همان دستور با همان دانه استفاده می کنید، تصویر حاصل همیشه یکسان خواهد بود.
  • اندازه_ دسته (اختیاری) - تعداد تصاویری که در یک پاس رو به جلو تولید می شوند. اگر از یک نمونه کوچکتر استفاده می کنید یا تصاویر زیادی تولید می کنید، آن را کاهش دهید batch_size عدد کوچک باشد (1-2). تعداد تصاویر = تعداد درخواست ها *num_images_per_prompt.

محدودیت ها و سوگیری ها

اگرچه Stable Diffusion عملکرد چشمگیری در رنگ آمیزی دارد، از چندین محدودیت و سوگیری رنج می برد. این موارد شامل اما محدود به موارد زیر نیست:

  • این مدل ممکن است چهره یا اندام دقیقی تولید نکند زیرا داده های آموزشی شامل تصاویر کافی با این ویژگی ها نمی شود.
  • این مدل بر روی آموزش دیده شد مجموعه داده LAION-5B، که دارای محتوای بزرگسالان است و ممکن است بدون ملاحظات بیشتر برای استفاده از محصول مناسب نباشد.
  • این مدل ممکن است با زبان‌های غیرانگلیسی خوب کار نکند، زیرا مدل بر روی متن زبان انگلیسی آموزش داده شده است.
  • مدل نمی تواند متن خوبی را در تصاویر ایجاد کند.
  • رنگ‌آمیزی با انتشار پایدار معمولاً با تصاویری با وضوح پایین‌تر، مانند 256×256 یا 512×512 پیکسل، بهترین عملکرد را دارد. هنگام کار با تصاویر با وضوح بالا (768×768 یا بالاتر)، این روش ممکن است برای حفظ سطح مطلوب کیفیت و جزئیات مشکل داشته باشد.
  • اگرچه استفاده از دانه می تواند به کنترل تکرارپذیری کمک کند، اما رنگ آمیزی با انتشار پایدار ممکن است نتایج متفاوتی با تغییرات جزئی در ورودی یا پارامترها ایجاد کند. این ممکن است تنظیم دقیق خروجی برای نیازهای خاص را چالش برانگیز کند.
  • این روش ممکن است با ایجاد بافت‌ها و الگوهای پیچیده مشکل داشته باشد، به‌ویژه زمانی که آن‌ها مناطق وسیعی از تصویر را در بر می‌گیرند یا برای حفظ انسجام و کیفیت کلی ناحیه نقاشی‌شده ضروری هستند.

برای اطلاعات بیشتر در مورد محدودیت ها و سوگیری ها، به بخش مراجعه کنید کارت مدل Stable Diffusion Inpainting.

محلول رنگ آمیزی با ماسک تولید شده از طریق یک اعلان

CLIPseq یک تکنیک یادگیری عمیق پیشرفته است که از قدرت مدل‌های CLIP از پیش آموزش‌دیده (Contrastive Language-Image Pretraining) برای تولید ماسک از تصاویر ورودی استفاده می‌کند. این رویکرد روشی کارآمد برای ایجاد ماسک برای کارهایی مانند تقسیم‌بندی تصویر، نقاشی درونی و دستکاری فراهم می‌کند. CLIPseq از CLIP برای تولید توضیحات متنی تصویر ورودی استفاده می کند. سپس از توضیحات متن برای تولید ماسکی استفاده می شود که پیکسل های موجود در تصویر را که با توضیحات متن مرتبط هستند شناسایی می کند. سپس می‌توان از ماسک برای جداسازی قسمت‌های مربوطه از تصویر برای پردازش بیشتر استفاده کرد.

CLIPseq نسبت به روش‌های دیگر برای تولید ماسک از تصاویر ورودی مزایای متعددی دارد. اول، این روش کارآمدتر است، زیرا نیازی به پردازش تصویر توسط یک الگوریتم تقسیم بندی تصویر جداگانه ندارد. دوم، دقیق‌تر است، زیرا می‌تواند ماسک‌هایی ایجاد کند که با توضیحات متنی تصویر هماهنگ‌تر هستند. سوم، همه کاره تر است، زیرا می توانید از آن برای تولید ماسک از طیف گسترده ای از تصاویر استفاده کنید.

با این حال، CLIPseq معایبی نیز دارد. اول، این تکنیک ممکن است از نظر موضوع دارای محدودیت‌هایی باشد، زیرا بر مدل‌های CLIP از پیش آموزش‌دیده تکیه دارد که ممکن است حوزه‌ها یا حوزه‌های تخصصی خاصی را در بر نگیرد. دوم، این می تواند یک روش حساس باشد، زیرا مستعد خطا در توضیحات متن تصویر است.

برای اطلاعات بیشتر به مراجعه کنید طراحی مد مجازی با هوش مصنوعی مولد با استفاده از Amazon SageMaker.

پاک کردن

پس از اتمام اجرای نوت بوک، مطمئن شوید که تمام منابع ایجاد شده در این فرآیند را حذف کرده اید تا مطمئن شوید که صورتحساب متوقف شده است. کد پاکسازی نقطه پایانی در قسمت مربوطه موجود است دفتر یادداشت.

نتیجه

در این پست، نحوه استقرار یک مدل از پیش آموزش‌دیده‌شده رنگ‌آمیزی Stable Diffusion را با استفاده از JumpStart نشان دادیم. ما تکه‌های کد را در این پست نشان دادیم—کد کامل با تمام مراحل این نسخه نمایشی در دسترس است مقدمه ای برای JumpStart – کیفیت تصویر را با هدایت سریع افزایش دهید نمونه دفترچه یادداشت راه حل را خودتان امتحان کنید و نظرات خود را برای ما ارسال کنید.

برای کسب اطلاعات بیشتر در مورد مدل و نحوه عملکرد آن، به منابع زیر مراجعه کنید:

برای کسب اطلاعات بیشتر در مورد JumpStart، پست های زیر را بررسی کنید:


درباره نویسنده

تصاویر را با انتشار پایدار با استفاده از آمازون SageMaker JumpStart PlatoBlockchain Data Intelligence رنگ کنید. جستجوی عمودی Ai.دکتر ویوک مدان یک دانشمند کاربردی با تیم آمازون SageMaker JumpStart است. او دکترای خود را از دانشگاه ایلینویز در Urbana-Champaign گرفت و پژوهشگر پست دکترا در جورجیا تک بود. او یک محقق فعال در یادگیری ماشین و طراحی الگوریتم است و مقالاتی در کنفرانس های EMNLP، ICLR، COLT، FOCS و SODA منتشر کرده است.

تصاویر را با انتشار پایدار با استفاده از آمازون SageMaker JumpStart PlatoBlockchain Data Intelligence رنگ کنید. جستجوی عمودی Ai.آلفرد شن یک متخصص ارشد AI/ML در AWS است. او در سیلیکون ولی مشغول به کار بوده و سمت‌های فنی و مدیریتی را در بخش‌های مختلف از جمله مراقبت‌های بهداشتی، مالی و فناوری پیشرفته بر عهده داشته است. او یک محقق اختصاصی AI/ML کاربردی است که بر روی CV، NLP و چندوجهی تمرکز دارد. کارهای او در نشریاتی مانند EMNLP، ICLR و Public Health به نمایش گذاشته شده است.

تمبر زمان:

بیشتر از آموزش ماشین AWS