آموزش انتقال برای مدل‌های تشخیص شی TensorFlow در Amazon SageMaker

آمازون SageMaker مجموعه ای از الگوریتم های داخلی, مدل های از پیش آموزش دیدهو الگوهای راه حل از پیش ساخته شده برای کمک به دانشمندان داده و متخصصان یادگیری ماشین (ML) برای شروع آموزش و استقرار سریع مدل‌های ML. شما می توانید از این الگوریتم ها و مدل ها برای یادگیری تحت نظارت و بدون نظارت استفاده کنید. آنها می توانند انواع مختلفی از داده های ورودی از جمله جدولی، تصویری و متنی را پردازش کنند.

این پست دومین مطلب از سری الگوریتم‌های داخلی جدید در SageMaker است. در اولین پست، ما نشان دادیم که چگونه SageMaker یک الگوریتم داخلی برای طبقه بندی تصاویر ارائه می دهد. امروز، ما اعلام می کنیم که SageMaker یک الگوریتم داخلی جدید برای تشخیص اشیا با استفاده از TensorFlow ارائه می دهد. این الگوریتم یادگیری نظارت شده از یادگیری انتقالی برای بسیاری از مدل های از پیش آموزش دیده موجود در TensorFlow پشتیبانی می کند. یک تصویر را به عنوان ورودی می گیرد و اشیاء موجود در تصویر را همراه با جعبه های محدود کننده خروجی می گیرد. می‌توانید این مدل‌های از پیش آموزش‌دیده‌شده را با استفاده از یادگیری انتقالی تنظیم کنید، حتی زمانی که تعداد زیادی تصویر آموزشی در دسترس نیست. از طریق SageMaker در دسترس است الگوریتم های داخلی و همچنین از طریق SageMaker JumpStart UI in Amazon SageMaker Studio. برای اطلاعات بیشتر مراجعه کنید تشخیص شیء Tensorflow و نمونه دفترچه یادداشت مقدمه ای بر SageMaker Tensorflow – تشخیص اشیا.

تشخیص اشیا با TensorFlow در SageMaker یادگیری انتقال را در بسیاری از مدل‌های از پیش آموزش‌دیده موجود در TensorFlow Hub فراهم می‌کند. با توجه به تعداد برچسب‌های کلاس در داده‌های آموزشی، یک هد تشخیص شی به‌طور تصادفی اولیه جایگزین هد موجود مدل TensorFlow می‌شود. یا کل شبکه، از جمله مدل از پیش آموزش دیده، یا فقط لایه بالایی (سر تشخیص شی) را می توان روی داده های آموزشی جدید تنظیم کرد. در این حالت یادگیری انتقال، می توانید حتی با مجموعه داده کوچکتر به آموزش برسید.

نحوه استفاده از الگوریتم جدید تشخیص اشیاء TensorFlow

این بخش نحوه استفاده از الگوریتم تشخیص اشیاء TensorFlow را با SageMaker Python SDK. برای اطلاعات در مورد نحوه استفاده از آن از رابط کاربری Studio، رجوع کنید SageMaker JumpStart.

این الگوریتم از یادگیری انتقالی برای مدل‌های از پیش آموزش دیده‌شده در فهرست پشتیبانی می‌کند مدل های تنسورفلو. هر مدل با یک مدل منحصر به فرد شناسایی می شود model_id. کد زیر نحوه تنظیم دقیق مدل ResNet50 V1 FPN شناسایی شده توسط را نشان می دهد model_id tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8 در یک مجموعه داده آموزشی سفارشی برای هر model_id، به منظور راه اندازی کار آموزشی SageMaker از طریق برآورد کلاس SageMaker Python SDK، شما باید URI تصویر Docker، URI اسکریپت آموزشی و URI مدل از پیش آموزش دیده را از طریق توابع ابزار ارائه شده در SageMaker واکشی کنید. URI اسکریپت آموزشی شامل تمام کدهای لازم برای پردازش داده ها، بارگذاری مدل از پیش آموزش دیده، آموزش مدل و ذخیره مدل آموزش دیده برای استنتاج می باشد. URI مدل از پیش آموزش دیده شامل تعریف معماری مدل از پیش آموزش دیده و پارامترهای مدل است. توجه داشته باشید که URI تصویر Docker و URI اسکریپت آموزشی برای همه مدل‌های تشخیص شی TensorFlow یکسان هستند. URI مدل از پیش آموزش دیده مختص مدل خاصی است. تاربال های مدل از پیش آموزش دیده از TensorFlow از قبل دانلود شده و با امضای مدل مناسب ذخیره شده اند. سرویس ذخیره سازی ساده آمازون سطل های (Amazon S3)، به گونه ای که کار آموزش به صورت مجزا از شبکه اجرا می شود. کد زیر را ببینید:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-od-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

با استفاده از این مصنوعات آموزشی خاص مدل، می توانید یک شی از آن بسازید برآورد کلاس:

# Create SageMaker Estimator instance
tf_od_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,)

در مرحله بعد، برای انتقال یادگیری بر روی مجموعه داده سفارشی خود، ممکن است لازم باشد مقادیر پیش فرض هایپرپارامترهای آموزشی را تغییر دهید که در فراپارامترها. می توانید با فراخوانی یک فرهنگ لغت پایتون از این هایپرپارامترها را با مقادیر پیش فرض آنها واکشی کنید hyperparameters.retrieve_default، آنها را در صورت نیاز به روز کنید و سپس به کلاس Estimator منتقل کنید. توجه داشته باشید که مقادیر پیش فرض برخی از هایپرپارامترها برای مدل های مختلف متفاوت است. برای مدل های بزرگ، اندازه دسته پیش فرض کوچکتر است و train_only_top_layer هایپرپارامتر روی تنظیم شده است True. هایپرپارامتر train_only_top_layer تعریف می کند که کدام پارامترهای مدل در طول فرآیند تنظیم دقیق تغییر می کنند. اگر train_only_top_layer is Trueپارامترهای لایه های طبقه بندی تغییر می کنند و بقیه پارامترها در طول فرآیند تنظیم دقیق ثابت می مانند. از سوی دیگر، اگر train_only_top_layer is False، تمام پارامترهای مدل به خوبی تنظیم شده است. کد زیر را ببینید:

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

ما ارائه می دهیم مجموعه داده PennFudanPed به عنوان یک مجموعه داده پیش فرض برای تنظیم دقیق مدل ها. مجموعه داده شامل تصاویری از عابران پیاده است. کد زیر مجموعه داده های آموزشی پیش فرض میزبانی شده در سطل های S3 را ارائه می دهد:

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/PennFudanPed_COCO_format/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

در نهایت، برای راه اندازی کار آموزش SageMaker برای تنظیم دقیق مدل، تماس بگیرید .fit در شیء کلاس Estimator، هنگام عبور از مکان S3 مجموعه داده آموزشی:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

برای کسب اطلاعات بیشتر در مورد نحوه استفاده از الگوریتم جدید تشخیص شیء SageMaker TensorFlow برای انتقال یادگیری بر روی یک مجموعه داده سفارشی، مدل دقیق تنظیم شده را اجرا کنید، استنتاج را بر روی مدل مستقر شده اجرا کنید، و مدل از پیش آموزش‌دیده را بدون تنظیم دقیق اولیه اجرا کنید. در یک مجموعه داده سفارشی، نمونه یادداشت زیر را ببینید: مقدمه ای بر SageMaker TensorFlow – تشخیص اشیا.

رابط ورودی/خروجی برای الگوریتم تشخیص اشیا TensorFlow

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

  • ورودی – دایرکتوری با تصاویر زیر شاخه و یک فایل annotations.json.
  • تولید - دو خروجی وجود دارد. اول یک مدل دقیق تنظیم شده است که می تواند برای استنباط به کار گرفته شود یا با استفاده از آموزش افزایشی بیشتر آموزش داده شود. دوم فایلی است که فهرست های کلاس را به برچسب های کلاس نگاشت می کند. این به همراه مدل ذخیره می شود.

دایرکتوری ورودی باید مانند مثال زیر باشد:

input_directory
      | -- images
            |--abc.png
            |--def.png
      |--annotations.json

La annotations.json فایل باید اطلاعاتی برای bounding_boxes و برچسب های کلاس آنها. باید دیکشنری با کلید داشته باشد "images" و "annotations". ارزش برای "images" کلید باید فهرستی از ورودی‌ها، یکی برای هر تصویر فرم باشد {"file_name": image_name, "height": height, "width": width, "id": image_id}. مقدار "annotations" کلید باید فهرستی از ورودی‌ها، یکی برای هر کادر محدود فرم باشد {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}.

استنتاج با الگوریتم تشخیص اشیا TensorFlow

مدل های تولید شده را می توان برای استنتاج میزبانی کرد و از فرمت های تصویری کدگذاری شده .jpg، .jpeg، و png. application/x-image نوع محتوا. اندازه تصویر ورودی به طور خودکار تغییر می کند. خروجی شامل جعبه ها، کلاس های پیش بینی شده و امتیازات برای هر پیش بینی است. مدل تشخیص شی TensorFlow یک تصویر را در هر درخواست پردازش می کند و تنها یک خط در JSON خروجی می دهد. نمونه زیر نمونه ای از پاسخ در JSON است:

accept: application/json;verbose

{"normalized_boxes":[[xmin1, xmax1, ymin1, ymax1],....], "classes":[classidx1, class_idx2,...], "scores":[score_1, score_2,...], "labels": [label1, label2, ...], "tensorflow_model_output":}

If accept تنظیم شده است application/json، سپس مدل فقط جعبه ها، کلاس ها و امتیازات پیش بینی شده را خروجی می دهد. برای جزئیات بیشتر در مورد آموزش و استنباط به نمونه دفترچه یادداشت مراجعه کنید مقدمه ای بر SageMaker TensorFlow – تشخیص اشیا.

از الگوریتم های داخلی SageMaker از طریق JumpStart UI استفاده کنید

همچنین می‌توانید از تشخیص شیء SageMaker TensorFlow و هر یک از الگوریتم‌های داخلی دیگر با چند کلیک از طریق JumpStart UI استفاده کنید. JumpStart یک ویژگی SageMaker است که به شما امکان می دهد الگوریتم های داخلی و مدل های از پیش آموزش داده شده را از چارچوب های مختلف ML و هاب های مدل از طریق یک رابط گرافیکی آموزش و استقرار دهید. همچنین به شما امکان می‌دهد راه‌حل‌های کاملاً پیشرفته ML را که مدل‌های ML و سرویس‌های مختلف AWS دیگر را برای حل یک مورد استفاده هدفمند در کنار هم قرار می‌دهند، به کار بگیرید.

در زیر دو ویدیو وجود دارد که نشان می‌دهد چگونه می‌توانید همان فرآیند تنظیم دقیق و استقرار را که با چند کلیک از طریق JumpStart UI انجام دادیم، تکرار کنید.

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

در اینجا فرآیند تنظیم دقیق همان مدل تشخیص اشیاء از پیش آموزش دیده است.

مدل دقیق تنظیم شده را اجرا کنید

پس از پایان آموزش مدل، می‌توانید مستقیماً مدل را با یک کلیک در یک نقطه پایانی دائمی و بی‌درنگ مستقر کنید.

نتیجه

در این پست، راه اندازی الگوریتم داخلی تشخیص اشیاء SageMaker TensorFlow را اعلام کردیم. ما کد نمونه ای در مورد نحوه انجام یادگیری انتقال بر روی یک مجموعه داده سفارشی با استفاده از یک مدل از پیش آموزش دیده از TensorFlow با استفاده از این الگوریتم ارائه کردیم.

برای اطلاعات بیشتر ، بررسی کنید مستندات و نمونه دفترچه یادداشت.


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

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

انتقال یادگیری برای مدل‌های تشخیص شی TensorFlow در Amazon SageMaker PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.ژائو مورا یک معمار راه حل های تخصصی AI/ML در خدمات وب آمازون است. او بیشتر بر موارد استفاده از NLP و کمک به مشتریان برای بهینه سازی آموزش و استقرار مدل یادگیری عمیق متمرکز است. او همچنین یکی از حامیان فعال راه حل های ML با کد پایین و سخت افزار تخصصی ML است.

انتقال یادگیری برای مدل‌های تشخیص شی TensorFlow در Amazon SageMaker PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.دکتر آشیش ختان دانشمند ارشد کاربردی با الگوریتم های داخلی آمازون SageMaker و به توسعه الگوریتم های یادگیری ماشین کمک می کند. او دکترای خود را از دانشگاه ایلینویز Urbana Champaign گرفت. او یک محقق فعال در یادگیری ماشین و استنتاج آماری است و مقالات زیادی در کنفرانس های NeurIPS، ICML، ICLR، JMLR، ACL و EMNLP منتشر کرده است.

تمبر زمان:

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