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

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

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

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

نحوه استفاده از الگوریتم جدید طبقه بندی تصاویر TensorFlow

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

این الگوریتم از یادگیری انتقالی برای مدل‌های از پیش آموزش دیده‌شده در فهرست پشتیبانی می‌کند مدل های هاب تنسورفلو. هر مدل با یک مدل منحصر به فرد شناسایی می شود model_id. کد زیر نحوه تنظیم دقیق MobileNet V2 1.00 224 شناسایی شده توسط را نشان می دهد model_id tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4 در یک مجموعه داده آموزشی سفارشی برای هر model_id، به منظور راه اندازی کار آموزشی SageMaker از طریق برآورد کلاس SageMaker Python SDK، باید URI تصویر Docker، URI اسکریپت آموزشی و URI مدل از پیش آموزش دیده را از طریق توابع کاربردی ارائه شده در SageMaker واکشی کنید. URI اسکریپت آموزشی شامل تمام کدهای لازم برای پردازش داده ها، بارگذاری مدل از پیش آموزش دیده، آموزش مدل و ذخیره مدل آموزش دیده برای استنتاج است. URI مدل از پیش آموزش دیده شامل تعریف معماری مدل از پیش آموزش دیده و پارامترهای مدل است. توجه داشته باشید که URI تصویر Docker و URI اسکریپت آموزشی برای همه مدل‌های طبقه‌بندی تصویر TensorFlow یکسان هستند. URI مدل از پیش آموزش دیده مختص مدل خاصی است. تاربال های مدل از پیش آموزش دیده از TensorFlow Hub از قبل دانلود شده و با امضای مدل مناسب در آن ذخیره شده اند. سرویس ذخیره سازی ساده آمازون سطل های (Amazon S3)، به گونه ای که کار آموزش به صورت مجزا از شبکه اجرا می شود. کد زیر را ببینید:

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

model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*"
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-ic-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

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

# Create SageMaker Estimator instance
tf_ic_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"

کد زیر یک مجموعه داده آموزشی پیش فرض را ارائه می دهد که در سطل های S3 میزبانی شده است. ما ارائه می کنیم tf_flowers مجموعه داده به عنوان یک مجموعه داده پیش فرض برای تنظیم دقیق مدل ها. مجموعه داده شامل تصاویری از پنج نوع گل است. مجموعه داده از دانلود شده است TensorFlow تحت مجوز آپاچی 2.0.

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

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_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

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

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

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

  • ورودی – دایرکتوری با تعداد زیر شاخه ها به تعداد کلاس ها. هر دایرکتوری فرعی باید دارای تصاویر متعلق به آن کلاس با فرمت jpg، .jpeg، یا png. باشد.
  • تولید - یک مدل دقیق تنظیم شده که می تواند برای استنتاج به کار گرفته شود یا می توان با استفاده از آموزش افزایشی بیشتر آموزش داد. یک امضای پیش پردازش و پس پردازش به مدل تنظیم شده اضافه می شود به طوری که تصویر خام jpg. را به عنوان ورودی می گیرد و احتمالات کلاس را برمی گرداند. یک کلاس نگاشت فایل فهرست‌بندی به برچسب‌های کلاس همراه با مدل‌ها ذخیره می‌شود.

اگر داده های آموزشی حاوی تصاویری از دو کلاس باشد، دایرکتوری ورودی باید مانند مثال زیر باشد: roses و dandelion. مسیر S3 باید شبیه باشد s3://bucket_name/input_directory/. به دنباله آن توجه کنید / مورد نیاز است. نام پوشه ها و roses, dandelionو نام فایل .jpg می تواند هر چیزی باشد. فایل نگاشت برچسب که همراه با مدل آموزش دیده در سطل S3 ذخیره می شود، نام پوشه گل رز و قاصدک را به فهرستی از احتمالات کلاس خروجی مدل نگاشت می کند. نقشه برداری از ترتیب حروف الفبای نام پوشه ها پیروی می کند. در مثال زیر، شاخص 0 در لیست خروجی مدل مطابقت دارد dandelion، و شاخص 1 مربوط می شود roses.

input_directory
    |--roses
        |--abc.jpg
        |--def.jpg
    |--dandelion
        |--ghi.jpg
        |--jkl.jpg

استنتاج با الگوریتم طبقه بندی تصویر TensorFlow

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

accept: application/json;verbose

 {"probabilities": [prob_0, prob_1, prob_2, ...],
  "labels":        [label_0, label_1, label_2, ...],
  "predicted_label": predicted_label}

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

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

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

نتیجه

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


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

Transfer learning for TensorFlow image classification models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.دکتر آشیش ختان دانشمند ارشد کاربردی با الگوریتم های داخلی آمازون SageMaker و به توسعه الگوریتم های یادگیری ماشین کمک می کند. او دکترای خود را از دانشگاه ایلینویز Urbana-Champaign گرفت. او یک محقق فعال در یادگیری ماشین و استنتاج آماری است و مقالات زیادی در کنفرانس های NeurIPS، ICML، ICLR، JMLR، ACL و EMNLP منتشر کرده است.

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

Transfer learning for TensorFlow image classification models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.ژائو مورا یک معمار راه حل های تخصصی AI/ML در خدمات وب آمازون است. او بیشتر بر موارد استفاده از NLP و کمک به مشتریان برای بهینه سازی آموزش و استقرار مدل یادگیری عمیق متمرکز است. او همچنین یکی از حامیان فعال راه حل های ML با کد پایین و سخت افزار تخصصی ML است.

Transfer learning for TensorFlow image classification models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.راجو پنماچا یک معمار ارشد راه حل های تخصصی AI/ML در AWS است. او با مشتریان آموزشی، دولتی و غیرانتفاعی در پروژه های مرتبط با یادگیری ماشین و هوش مصنوعی کار می کند و به آنها کمک می کند تا راه حل هایی با استفاده از AWS بسازند. وقتی به مشتریان کمک نمی کند، دوست دارد به مکان های جدید سفر کند.

تمبر زمان:

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